----------------------------------------------------------------------------
CREMANS
Conference Registration Management System / 国際会議参加登録管理システム
(C) Hirotsugu Kakugawa 2013
----------------------------------------------------------------------------
----------------------------------------------------------------------------
CREMANS は完全無保証, 完全無サポートのソフトウエアです.
CREMANSでは内部で以下のソフトウエアを使用しており, 本パッケージに
同封して配布していますが, 各々の扱いは各々のライセンスに従います.
FPDF
http://www.fpdf.org/
TFPDF
http://www.fpdf.org/en/script/script92.php
CAPTCHA X
http://www.phpclasses.org/package/3023-PHP-Image-based-CAPTCHA-validation.html
DejaVu
http://dejavu-fonts.org/wiki/Main_Page
----------------------------------------------------------------------------
CREMANS で出来ること
- 事前登録
- オンサイト登録
- 登録者数の集計
- 請求書, 領収書の発行
- ランチチケット, バンケットチケット, イクスカージョンチケットの発行
- ビザ申請のための招待状の発行
- 名前タグの生成
- config ファイルによりカスタマイズ可能 (参加登録締切日, 料金, etc.)
CREMANS で出来ないこと
- 使用言語の切替え (-> 英語限定です.)
参加者の支払方法
- PayPal によるクレジットカード (PayPalアカウント開設不要)
- 銀行振込
- 現金
登録カテゴリ (Registration Category)
- 事前著者レギュラー (Advanced Author Regular)
- 事前著者学生 (Advanced Author Student)
- 事前非著者レギュラー (Advanced Non-author Regular)
- 事前非著者学生 (Advanced Non-author Student)
- オンサイト非著者レギュラー (On-Site Non-author Regular)
- オンサイト非著者学生 (On-Site Non-author Student)
そのほか, 運営処理用として以下のものを用意
- 招待客 (Invited)
- 追加チケット (Extra Ticket)
そのほか, 動作テスト用として以下のものを用意
- テスト (Test)
登録タイプ (Registration Type)
- 事前著者レギュラー (Advanced Author Regular)
- 事前著者学生 (Advanced Author Student)
- 事前前期非著者レギュラー (Advanced Early Non-author Regular)
- 事前前期非著者学生 (Advanced Early Non-author Student)
- 事前後期非著者レギュラー (Advanced Early Non-author Regular)
- 事前後期非著者学生 (Advanced Early Non-author Student)
- オンサイト非著者レギュラー (On-Site Non-author Regular)
- オンサイト非著者学生 (On-Site Non-author Student)
そのほか, 運営処理用として以下のものを用意
- 招待客 (Invited)
- 追加チケット (Extra Ticket)
そのほか, 動作テスト用として以下のものを用意
- テスト (Test)
「事前非著者レギュラー」の「前期/後期」,
「事前非著者学生」の「前期/後期」の決定は,
config ファイルに指定した〆切日時を境にして, 自動決定します.
それぞれの登録タイプに対して, 〆切, 参加費用等を設定できます.
全ての登録タイプを使用せずに、一部の登録タイプだけを
使用するようにも出来ます.
----------------------------------------------------------------------------
作業手順
1. 法人用銀行口座を開設 -> 銀行で
2. PayPal でビジネスアカウントを作成
- 1 の口座を使用するよう, PayPal アカウントに登録
- 引出し金額の上限を解除するよう, 自分のクレジットカードを PayPal 口座に登録
3. PayPal Developer サイトで SANDBOX アカウント(テスト用アカウント)を作成
- このアカウント内で, ビジネスアカウントとユーザーアカウントを作成する.
それらは運用テストで使用します.
4. Web サーバーで SSL 通信 (https) ができるようにする
5. Web サーバに SQLite3, PHP をインストール
- PHP で HTTP_Request, mbstring, GD, PHP-GD, SQLite3, PDO
が使えるよう設定する.
- PHP の文字集合と文字符合化を Unicode, utf-8 に設定する.
- PHP の mbstring は以下に設定 (php.ini ファイル)
mbstring.language = uni
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = pass
- SQLite3 の文字集合と文字符合化を Unicode, utf-8 に設定する.
6. Web サーバに CREMANS をインストール
- HTTP ドキュメントと PHP プログラム
(配布ファイルの web-data ディレクトリ以下)
-> http reachable なディレクトリに置く
- 管理情報(管理者パスワード, PayPalパスワード)とデータベースファイル(SQLite3)
(配布ファイルの admin-data ディレクトリ以下)
-> (機密情報なので) 必ず http unreachable なディレクトリに置く
7. CREMANS の config.php ファイルを書き換えて, 適宜カスタマイズする.
8. SQLite3 を使って登録情報用のデータベースファイルを作成する.
- 管理情報ディレクトリの scheme/create-reg.sql を SQLite3 で実行.
(本番用データベースファイル db.sqlite と
テスト運営用データベースファイル db-test.sqlite を作成.)
> sqlite3 db.sqlite
] .read create-reg.sql
] .exit
> sqlite3 db-test.sqlite
] .read create-reg.sql
] .exit
- Web サーバがデータベースファイルを読み書きできるように,
アクセス許可を設定する.
- データベースファイル db.sqlite と db-test.sqlite を
管理情報ディレクトリの db/ に移動.
9. PayPal ユーザー名とパスワードを, 設定ファイルに記入
- 管理情報ディレクトリ中の paypal/defs-live.php (実運用用, Live アカウント)
と paypal/defs-live.php (テスト運用用, Sandbox アカウント) ファイルに,
ユーザー名, パスワード, シグネチャ を記入する. これらの情報は,
PayPal にログインすれば得られます.
10. admin-page (管理者用画面)アクセスのための管理者パスワードを設定
- 管理情報ディレクトリ admin/passwd.php に, 管理者 (admin) のパスワードを
設定.
- ログイン用 URL : .../admin/login.php
- admin-page (管理者用画面)で, 登録一覧など, 管理業務を行ないます
11. 再登録のためのパスワードを設定
- 管理情報ディレクトリ admin/passwd.php に, paymenyXXXXXのパスワードを
設定.
- ログイン用 URL : ../payment.php
- このページは, アクセス日時に関係なく, 全ての登録タイプに対する
登録が出来ます. 一旦登録をしたけれども, 後日登録内容を変更する必要が
出てきた時にこのページを使用します. 運営側は一旦古い登録をキャンセルします.
そして登録者に, ユーザー名とパスワードと URL を教えて,
再度登録してもらいます. これで再登録が完了です.
12. config.php ファイルの先頭の $mode の設定をテストモード(SANDBOX)にして,
動作を確認する. (SANDBOXアカウント内のアカウントを使用して支払テスト)
- 動作確認手順のメモは admin-page (管理者用画面) から読めますので,
十分にテストを行なって下さい.
13. config.php ファイルの先頭の $mode の設定を実運用モード(LIVE)にして,
動作を確認する. (自分のクレジットカードを使って, 実際に支払をする.
支払テスト用の Registration Category "Test" を登録フォームで
選択するようにするとよい.)
14. PayPal 口座から銀行口座へのお金の引出しのテスト
- PayPal のサイトにログインして, 「銀行口座への引出し」を行なう.
- ちゃんと引出しが出来る事を確認する
- 設定や登録内容が違っていると引出しが出来ないので, この確認作業は重要
(PayPal の中の人のいう通りの設定をしても, 実はそれは引出し出来ない設定な
場合があるので要注意.)
15. 招待客の処理
運営側が作業する.
データベースの新規項目作成機能で, データを作成.
このとき, 登録タイプに Invited を選ぶ.
16. 追加チケットの販売
購入者が作業をする.
登録タイプ Extra Ticket を選んでもらって, 必要事項を記入してもらう.
X. 本システムの弱い点
- 1支払トランザクションがそのまま, 管理者画面での登録1件になっている.
(データベース中には, 表が1枚あるだけの非常に簡素な作りです.)
- 登録した後に, 追加チケットを購入しても, 1つの記録としてまとめられない.
-> 発券処理が別々になってしまう, ということです.
参加者にチケットを渡す時はひとまとめにしないといけないが,
まとめ作業が手作業になってしまう.
(この作業が, 人の記憶に頼った処理になるのでミスの元になる.
このため会議規模が200人程度を超えると, 現状のシステム設計では
事務作業はたぶん破綻.)
-> 1参加者に対して, 1登録, 複数追加チケット, という対応づけ構造に
しないといけない.
----------------------------------------------------------------------------
PayPal 関係
PayPal 決済は、PayPal の ExpressChechout 機能を使ってます.
PayPal Developer (https://developer.paypal.com/) にドキュメントがあるので
必ず読んで理解して下さい.
ExpressCheckout は https 通信路で, name-value ペアでパラメータを相互に
やりとりしながら決済をすすめます.
本システムでの PayPal決済は以下の流れで処理します.
1. (WEBブラウザ -> データベース)
フォームに記入した項目を submit.
2. (データベース -> PayPalサーバ)
フォーム内容をデータベースに記録.
フォーム内容から請求金額を計算.
SetExpressCheckout メソッドで, 請求金額を PayPal サーバに通知.
データベースは PayPal サーバからのレスポンス
(TOKEN - トランザクションの識別用データ) を受信し, 記録.
3. (データベース -> ブラウザ)
ブラウザにレスポンスとして, PayPal サーバの支払 URL へのリダイレクトを
行なう.
3. (ブラウザ -> PayPal サーバ)
ブラウザはリダイレクトされた URL に接続し, PayPal サーバで支払を行なう.
レスポンスとして, データベースの支払最終確認 URL へのリダイレクトを行なう.
4. (ブラウザ -> データベース -> PayPal サーバ)
ブラウザはリダイレクトされたデータベースの URL に接続する.
接続を受けたデータベースは, PayPay サーバに対して
GetExpressCheckoutDetails メソッドで支払の成功/失敗や支払に
関する各種情報を得る.
データベースは PayPal サーバからのレスポンスを受信し, 記録.
5. (データベース -> ブラウザ)
データベースはブラウザに対して, 支払を確定するか, 取消をするかの
最終決定を求めるページを送信する.
6. (ブラウザ -> データベース)
支払を取消ボタンをクリックすると, キャンセルを行ない,
キャンセルページにジャンプ.
支払を承認ボタンをクリックすると, データベースは PayPay サーバに対して
DoExpressCheckoutPayment メソッドで支払を確定する.
そしてデータベースは, PayPal サーバからのレスポンスに加えて,
支払が完了した事を記録する.
7. (データベース -> ブラウザ)
データベースは, 確定した登録内容と金額をブラウザに表示し,
メイルでも通知をする.
----------------------------------------------------------------------------
以上