@Joshua_Kogan 現在、Custom Wizard プラグインを使用すれば、以下の 2 つの方法でこの処理を実行できます。
外部で支払いを受ける
1 つの方法は、カスタムウィザードの特定のステップが送信された際に、ユーザーを支払いプロバイダーへリダイレクトし、許可されたパラメータと必須データの組み合わせを使用して支払いが完了したことを確認した後、次のステップで「グループに追加」アクションを用いてユーザーをグループに追加するというものです。
以下は、このアプローチにおける支払い部分の詳細な説明です。「グループに追加」部分については自明と思われますので割愛します。
ユーザーを支払いプロバイダー設定へ誘導する
-
Route To アクション
「Route To」と呼ばれる新しいアクションタイプがあり、ステップの送信時にユーザーを特定の URL へ誘導できます。ウィザードでは、このアクションはユーザーの支払いが発生する前のステップに追加する必要があります。現在、デフォルトでは「payment」ステップ自体に追加されていますが、必要に応じてこのステップを削除し、直前のステップに追加することも可能です。
Route To アクションには現在、以下の 2 つの設定があります。-
url: 誘導先の URL です。他のウィザード入力と同様に、ウィザードフィールドには
w{}、ユーザーフィールドにはu{}を使用してデータを挿入できます。 -
code: 誘導先 URL にパラメータとして追加するための一意のコードです。この設定に値を入力すると、カスタムウィザードは一意のランダムな 16 進文字列を生成し、以下の処理を行います。
- 指定したキーを使用して、追加のクエリパラメータとして URL に追加する
- 指定したキーを使用して、送信データにこのコードを保存する
各リクエストに一意のキーを関連付けることで、そのリクエストに対する任意のコールバック(つまり、ユーザーがウィザードに戻ってきた場合)を検証できます。Chargify の場合、Chargify はパラメータ「reference」に送信した任意の値を保存します(詳細はこちら)。その後、Chargify が支払い完了後にユーザーをリダイレクトする「リターン URL」にこの値を追加します。
-
-
Permitted Params
これは新しいステップ設定で、そのステップに対して許可されるクエリパラメータと、それらを送信データに保存する際のキーを指定できます。これにより、ユーザーがウィザードにアクセスした経路などの統計的・分析的データを保存したり、コールバック処理に利用したりできます。Chargify の場合、ユーザーを支払い完了のために Chargify へリダイレクトする際に「reference」コードを Chargify に渡す(かつ送信データに保存)しました。その後、このコードを「リターン URL」に リターンパラメータ として追加し、リターンパラメータで指定したcustomer_referenceを保持するパラメータを保存することで、送信データに記録しました。
なお、Chargify では、「リターン URL」を「Route To」アクションを付与したステップの直後のステップの URL に設定する必要があります。つまり、その同じステップにcustomer_referenceパラメータを許可されたパラメータとして追加することになります。 -
Required Data
これは新しいステップ設定で、ユーザーがステップを表示する前にデータチェックを課すことができます。現在、送信データの一部が他の送信データの一部と等しいことを要求できます。
ユーザーがステップの読み込みを試み、必要なデータチェックに失敗すると、エラーメッセージが表示されます。Chargify の場合、この機能を使用して、「Route To」アクションで生成したコードが、Chargify から返されたcustomer_referenceと一致することを要求します。
ユーザーに表示されるエラーメッセージは、ウィザード管理画面の「データが存在しない場合に表示するメッセージ」フィールドでカスタマイズできます。また、エラーメッセージには「ウィザードを再開」リンクが付加されており、ユーザーはこれをクリックしてウィザードをステップ 1 にリセットし、既存の入力をクリアできます。
内部で支払いを受ける
ProCourse Memberships を使用して支払いを受けることも可能です。
また、OAuth2 または基本認証(Basic authorization)をサポートする API を備えたほぼすべての支払いプロバイダー(例:Stripe は基本認証を使用)を使用することもできます。その場合は、Custom Wizard の「Send to API」アクションと、関連する API エンドポイント管理システムを使用して API 接続を設定します。設定方法はプロバイダーによって異なります。このアプローチは安定性がやや劣りますが、ベータ機能であり、大きな可能性を秘めています。