---------------------------------------------------------------------------- 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. (データベース -> ブラウザ) データベースは, 確定した登録内容と金額をブラウザに表示し, メイルでも通知をする. ---------------------------------------------------------------------------- 以上