開発情報・ナレッジ

セミナー申込サイトに決済代行サービス「e-SCOTT」と連携した継続課金機能を追加する方法

変更・改訂履歴

ここでは、 セミナー受付管理でご案内しているセミナー申込サイトを例に、 ソニーペイメントサービス株式会社が提供する決済代行サービスの「e-SCOTT」を利用して、クレジットカードでの継続課金機能を追加する方法をご紹介します。
※「e-SCOTT」の特徴
クレジットカード決済やコンビニ決済などの幅広い決済手段から、事業者様のニーズに合わせた最適な決済方法を一括導入、一元管理が可能であり、グローバルなセキュリティ基準に準拠し、20年以上の実績と信頼のソニーペイメントサービス株式会社のマルチペイメントサービスです。

デモを確認

関連記事はこちら

前提条件

ソニーペイメントサービス株式会社との加盟店契約が済んでいること。
 ※ご契約に際しクレジットカード料率の条件交渉が入る場合はお時間がかかる場合がございます。
セミナー受付管理を作成していること。

全体図

構成要素

変更する構成要素
DB
決済関連のフィールドを既存DBに追加します。
 ・セミナーマスターDB
 ・セミナー申込DB
サイト
決済関連の情報を表示するように処理を追加します。
 ・セミナー一覧ページ
 ・セミナー詳細ページ
 ・セミナー申込ページ
追加する構成要素
DB
決済の履歴管理をするDBを作成します。
 ・ログDB

PHPモジュールの設定値を管理するDBを作成します。
 ・環境変数DB
サイト
クレジットカード情報を入力いただくページを作成します。
 ・決済処理ページ

決済結果を表示するためのページを作成します。
 ・決済完了ページ
スケジュールトリガ
毎月課金を行う継続課金用プログラムを作成します。
 ・カスタムプログラム

手順

1. ソースコードダウンロード
必要なファイルを下記のリンクからダウンロードします。

2. DB作成・変更
2-1.セミナーマスターDB
以下のフィールドを追加します。
フィールドタイプ 表示名 備考
数値 料金
テキスト セミナーID
セレクト 都度課金/継続課金フラグ(注1) 1:都度課金
2:継続課金
注1: 都度課金と継続課金の共通実装のため、必要となります。

また今回追加した「セミナーID」はレコード登録時にアクションを呼び出すためにDBトリガを設定します。
DBトリガの登録方法については以下のコンテンツをご確認ください。
DBトリガのレコードアクション

セミナーマスターDBへDBトリガのレコードアクションを作成し、アクション処理を作成・設定します。
レコードアクションでは、レコード登録時にシステムで採番されるIDをセミナーIDとして登録するよう設定します。
設定内容は画像を参照して下さい。

2-2.セミナー申込DB
以下のフィールドを追加します。
フィールドタイプ 表示名 備考
テキスト 郵便番号
セレクト 決済ステータス 1:未決済
2:決済
数値 支払金額
日時 申込年月日
テキスト トークン
テキスト マスク済番号
テキスト セッションID
テキスト e-SCOTT会員ID (注2)
テキスト e-SCOTT会員パスワード (注2)
日時 決済完了日
日時 決済予定日
数値 支払回数
数値 未払回数
セレクト 支払処理開始フラグ 1:支払い処理未実行
2:支払い処理中
テキストエリア 備考
注2: 都度課金と継続課金の共通実装のため、必要となります。

また今回追加した「セッションID」「申込年月日」はレコード登録時にアクションを呼び出すためにDBトリガを設定します。
DBトリガの登録方法については以下のコンテンツをご確認ください。
DBトリガのレコードアクション

セミナー申込DBへDBトリガのレコードアクションを作成し、アクション処理を作成・設定します。
レコードアクションでは、レコード登録時にランダム文字列をセッションIDに、アクションが実行された日付を申し込み年月日に登録するよう設定します。
設定内容は画像を参照して下さい。

2-3.ログDB
セミナー申込DBと同じフィールドで作成します。
2-4.環境変数DB
以下のフィールドを作成します。
フィールドタイプ 表示名 備考
テキスト 環境変数名
テキストエリア 環境変数値
テキストエリア 説明

環境変数DBに以下のレコードを登録します。
環境変数名 環境変数値 説明
GetTokenCodeURL ソニーペイメントサービス株式会社との契約をすることで、各パラメータが払い出されます。 トークン認証コード取得
AuthURL Master電文
MemberOpeURL 会員情報登録電文
MerchantID マーチャントID
MerchantPass マーチャントパスワード
TokenCode トークン認証コード
SemiMstURL https://api.spiral-platform.com/v1/apps/[アプリID]/dbs/[セミナーマスターDBのDBID]/records (注3) セミナーマスターDBのURL
SemiRegistURL https://api.spiral-platform.com/v1/apps/[アプリID]/dbs/[セミナー申込DBのDBID]/records (注4) セミナー申込DBのURL
注3,注4:DBへアクセスするためのURLです。確認方法は以下のページをご参照ください。
 APIによるDB作成/レコード操作


アプリIDはアプリ作成時に発行されます、基本設定から参照できます。


DBIDはDB作成時に発行されます、基本設定から参照できます。

3.DBトリガ
セミナー申込DBの更新時に、ログDBへ反映するためにDBトリガを設定します。
DBトリガの登録方法については以下のコンテンツをご確認ください。
DBトリガのレコードアクション

セミナー申込DBへDBトリガのレコードアクションを作成し、アクション処理を作成・設定します。
決済情報の更新履歴のみを残すために、発動条件はAPI経由の場合のみとします。
設定内容は画像を参照して下さい。
4.DB アプリロール設定
既存のアプリロールにログDBに関する権限を追加します。
権限調整の詳細は、「アプリロール」をご確認ください。
制限内容は以下の通りです。
アプリロール 許可/制限したい内容
管理者 全操作可能
セミナー事務局
営業/サポート担当
販促
ログDBに関する操作はすべてNG
5.PHP環境変数
共通設定内のPHP環境変数にて、PHPで使用する環境変数を設定します。
設定内容は以下の通りです。
変数名 共通/個別 説明
APIKey 共通 APIキー (注1)
EnvDbUrl 共通 環境変数DBのURL (注2)
注1:APIキーの発行方法は以下のそれぞれの詳細ページをご参照ください。
 APIエージェントでのAPIキーの発行
 ユーザに紐づくAPIキーの発行
注2:環境変数DBへアクセスする為のURLです、使用方法は以下のページをご参照ください。
 APIによるDB作成/レコード操作
6.ページ変更と作成
6-1. セミナー一覧ページ(任意)
セミナー一覧ページに料金フィールドを表示させます。
ご自身で料金表示の対応をする場合はスキップして頂いて構いません。
作成済みのレコードリストブロックを編集してフィールドを追加します。
詳しくは、レコードリストブロックのビジュアル設定をご確認ください。

追加項目
フィールドタイプ 表示名
数値 料金

追加すると以下のようになります。
6-2. セミナー詳細ページ(任意)
セミナー詳細ページに料金フィールドを表示させます。
ご自身で料金表示の対応をする場合はスキップして頂いて構いません。
作成済みのレコードアイテムブロックを編集してフィールドを追加します。
詳しくは、レコードアイテムブロックのビジュアル設定を参照してください。

追加項目
フィールドタイプ 表示名
数値 料金
セレクト 都度課金/継続課金フラグ (注1)
注1: 都度課金と継続課金の共通実装のため、必要となります。

プレビューは以下のようになります。
6-3. セミナー申込ページ
セミナー申込ページにセミナー名と料金を表示させます。
また継続課金で必須となる「郵便番号」を追加します。
作成済みの登録フォームブロックを編集してフィールドを追加します。
追加方法については以下のコンテンツの「フィールドパーツ追加」をご確認ください。
登録フォームブロックのソース設定

追加項目
フィールドタイプ 表示名 備考
テキスト 郵便番号
6-3-1. PHPタブの設定
「php」タブにて、以下のファイルの中身を貼り付けます。
【seminar_application.txt】
このコードはセミナーIDをキーにセミナー情報を取得しパラメータとして引き渡す処理です。
6-3-2. bodyタブの設定
「body」タブにて、以下のファイルの中身を貼り付けます。
【seminar_id_check.txt】
セミナー詳細ページから引き回されたセミナーIDをチェックし、空の場合はエラーを表示します。
6-4. 申込完了メール
申込完了メールに決済処理ページへの遷移用URLを追加します。
登録フォームブロックの完了メールを編集して本文に遷移用URLを追加します。
申込完了メールの本文などを変更したい場合は、「フォームのメールアクション」をご確認ください。

遷移用URLは決済処理ページのURLに、リクエストパラメータとして「?record={{セミナー申込のセッションID}}」を付与します。
これはセッションIDをキーとして、決済処理ページにアクセスするためです。
6-5. 決済処理ページ
申し込んだセミナーの決済情報を登録するためのページを作成します。
6-5-1.ページ作成
「フリーコンテンツ」ブロックを使用して、下図のようにページを作成します。
6-5-2.「フリーコンテンツ」ブロックの作成
決済の情報を表示するフリーコンテンツブロック(ソース設定)を作成します。
作成の詳細については、「フリーコンテンツブロック」をご確認ください。

以下のファイル名の中身に全て置き換えます。
【payment_block.txt】
6-5-3.「head」タブの作成
ページ設定で指定したheadは当該ページのみに適応されます。
「共通ソースのhead」に指定した内容と競合する場合、ページ側が優先されます。
e-SCOTT用API取得コードは、『e-SCOTT+Smart+接続仕様書(クレジットカード決済サービス 別冊:トークン決済サービス編)』の8ページを参照して下さい。
以下のファイル名の中身を「head」タブの1番下に追記します。
【payment_head.txt】
6-5-4.「php」タブの作成
ページ設定で指定したPHPは当該ページのみに適用されます。
以下のファイル名の中身に全て置き換えます。
【payment_php.txt】
6-6.決済完了ページ
入力したクレジットカード番号で決済処理を実施し、決済結果をセミナー申込DBに更新します。
決済完了ページは「フリーコンテンツ」ブロックを使用して作成します。
6-6-1.「フリーコンテンツ」ブロックの作成
決済の情報を表示するフリーコンテンツブロック(ソース設定)を作成します。
作成の詳細については、「フリーコンテンツブロック」をご確認ください。

6-6-2.「php」タブの作成
ページ設定で指定したPHPは当該ページのみに適用されます。
以下のファイル名の中身に全て置き換えます。
【payment_finish_php.txt】
7. 決済用バッチ処理
アプリ設定のスケジュールトリガを利用してバッチ処理を作成します。
7-1.スケジュールトリガの作成
アプリ設定のスケジュールトリガを開き、左上の+ボタンを押してトリガを作成します。
作成方法の詳細は「スケジュールトリガ」をご確認ください。
下図の例では、最も実行回数が多くなるよう1時間に4回としています。
7-2.カスタムプログラム作成
作成したスケジュールトリガを開き、「アクション」タブを選択します。左上の+ボタンを押してアクションを作成します。
カスタムプログラムアクションについての詳細は、スケジュールトリガのカスタムプログラムアクション」をご確認ください。
以下のファイル名の中身をカスタムプログラムアクションのPHP欄に記載します。
【custom_program.txt】

カスタムプログラムからはPHP環境変数が利用できないため、上記ソースコード内の下記変数に7-5 PHP環境変数の項目で説明している、アプリID,DB ID,APIキーを設定してください。


// セミナー申込DB
$semi_regist_url = $baseurl."<アプリID>/dbs/<DB ID>/records";
// 環境変数DB
$env_var_url = $baseurl."<アプリID>/dbs/<DB ID/records";

// APIキー
$apikey = "<APIキー>";
※排他制御を実装していませんので、複数のスケジュールトリガを設定しないで下さい。
8. 動作確認
8-1.サイト・アプリの動作確認
セミナー受付管理ページ4-15-16-1 を参照しながら各ページの動作確認を行います。

8-2.決済処理の動作確認
テスト環境のセミナー一覧ページから順次アクセスし、セミナー申込を完了させます。
申込完了メールが届いたら、完了メールに記載されたURLから決済処理を行います。

「カード情報入力」ボタンを押すと決済用のクレジットカード情報入力用画面が開くので、クレジットカード情報を登録します。
クレジットカード情報を入力し終えたら、「決済」ボタンを押して決済処理を実行します。
もしクレジットカードの入力情報に誤りがある場合は、「カード情報クリア」ボタンを押して入力情報をリセットしてください。
以下のページが表示されれば決済完了となります。


決済処理で更新される項目は以下の通りです。
 
表示名
決済ステータス 決済(ID:2)
トークン スクリプトによる自動採番
マスク済番号 入力したクレジットカード番号の一部
e-SCOTT会員ID スクリプトによる自動採番
e-SCOTT会員パスワード スクリプトによる自動採番
支払年月日 現在日時
決済予定日 次の月の1日 00:00:00
決済回数 1
未払回数 0

9.本番反映
テスト環境での確認が完了したら、 セミナー受付管理ページ5-25-3 を参照しながら本番環境に反映します。

利用について

決済方法について
ソニーペイメントサービス株式会社が提供する決済代行サービスの「e-SCOTT」を利用しています。
決済方法はクレジットカード決済のみとなっております。
クレジットカード決済は、決済時にお客様のクレジットカードの与信枠確保と売上計上を同時に実施する処理としており、支払回数は1回としています。
本記事でご紹介する仕組みでは、継続課金の課金周期は1ヶ月としています。
お申し込み後、毎月1日に決済を実行します。処理件数によっては2日以降に実施されます。
クレジットカード情報の保持について
継続課金は初回月お申込み時に、「e-SCOTT」システムにてクレジットカード情報の保持、管理を行っています。
本記事でご紹介する仕組みでは、ご登録頂いたカード情報の定期的な状態確認を行っておりません。
ソニーペイメントサービス株式会社とのご契約について
初期費用、月額固定費、トランザクション処理料、手数料等は、商材によって異なることがありますので、ソニーペイメントサービス株式会社にお問い合わせ下さい。

お問い合わせ及びお申し込みは下記アドレスにお問い合わせください。
https://faq.sonypaymentservices.jp/category/show/67?site_domain=default
ご契約致しますと、「e-SCOTT」システムのマニュアルが提供されます。

ご利用ガイド

ソニーペイメントサービス(株)加盟店管理画面の操作方法について
操作方法についてはこちらのアドレスにアクセスして下さい。
https://faq.sonypaymentservices.jp/category/show/67?site_domain=default
決済状況の確認方法について
ソニーペイメントサービス株式会社加盟店管理画面からご確認頂けます。
SPIRAL管理画面のセミナー申込DBから該当するセミナー申込者の「申込年月日」「マスク済番号」を確認して下さい。
ソニーペイメントサービス株式会社加盟店管理画面から上記の項目を使用して検索を行います。
決済処理が出来なかった場合、ステータスは「NG」となっております。
処理結果コードからお取引のエラー原因が判断できます。
ソニーペイメントサービス株式会社加盟店管理画面の詳しい操作方法は、「e-SCOTT+Smart+加盟店管理画面操作マニュアル」の57ページを参照して下さい。

処理結果コードの詳細はこちらのアドレスからエラーコード表をダウンロードして、ご確認下さい。
https://faq.sonypaymentservices.jp/faq/show/671?category_id=13&site_domain=default
継続課金の未決済対応について
クレジットカード有効期限切れ、クレジットカード失効、クレジットカード限度額オーバー等で、初月以降に継続課金できないケースがあります。
また、セミナーの申込月と、申し込み完了メールのリンクから決済処理を実施した月が異なる場合は、決済処理を実施した月より前の支払いは自動で行われません。
必要に応じてスケジュールトリガで実施するプログラムの処理を変更してください。

未払いのある方は、SPIRAL管理画面のセミナー申込DBから、支払回数が1以上かつ、未払回数が1以上の条件で検索することができます。
未払い分の別途回収や、継続課金の停止作業を行ってください。
初月度継続課金の取消について
支払い済のセミナー申込者から申込取消のお問い合わせのケースです。
SPIRAL管理画面のセミナー申込DBから該当するセミナー申込者の「申込年月日」「e-SCOTT会員ID」「マスク済番号」を確認します。
ソニーペイメントサービス株式会社加盟店管理画面から上記の項目を使用して検索を行います。
合致する該当するセミナー申込者の売上取消します。
ソニーペイメントサービス株式会社加盟店管理画面の詳しい操作方法は、「e-SCOTT+Smart+加盟店管理画面操作マニュアル」の78ページを参照して下さい。
またSPIRAL管理画面のセミナー申込DBから「決済ステータス」を“未決済”に変更、「決済予定日」を空欄に変更し、「備考」は“課金取消 yyyy/mm/dd”を記載し、更新をして下さい。
継続課金にて保持しているクレジットカード情報変更について
現在ご利用しているセミナー申込者のクレジットカード情報の削除対応を行って下さい。
同時に、セミナー申込者へは再度セミナー申込を行って頂けるようにご案内をお願いします。
登録しているクレジットカード情報の削除対応について
SPIRAL管理画面のセミナー申込DBから該当するセミナー申込者の「申込年月日」「e-SCOTT会員ID」を確認します。
ソニーペイメントサービス株式会社加盟店管理画面から検索を行います。
該当するセミナー申込者の会員ステータスを無効に変更します。
ソニーペイメントサービス株式会社加盟店管理画面の詳しい操作方法は、「e-SCOTT+Smart+加盟店管理画面操作マニュアル」の287ページを参照して下さい。
次にSPIRAL管理画面のセミナー申込DBから該当するセミナー申込者の「決済予定日」を空欄に変更し、更新をして下さい。
e-SCOTT連携に関する問い合わせはこちら

リンク先の「パートナーへのお問い合わせ」よりお問い合わせください。
解決しない場合はこちら コンテンツに関しての
要望はこちら