Cash App Pay 支払い
アメリカの顧客に広く使用されているデジタルウォレットである Cash App Pay を受け付ける方法をご紹介します。
カスタムの決済フローシステムを実装することをお勧めします。カスタムの決済フローを使用すると、少ない労力で、決済システムに Cash App Pay やその他の支払い方法を追加することができます。API による直接連携を使用した Cash App Pay の受け付けは、以下で構成されます。
- PaymentIntent (支払いインテント) オブジェクトを作成して、支払いを追跡します。
- 支払いを Stripe に送信して処理します。
- 支払いを (モバイルアプリケーションのリダイレクトまたは QR コードを使用して) 認証します。
- 注文が成功または失敗した後に顧客をリダイレクトするために支払い後のイベントを処理します。
PaymentIntent を作成するサーバー側![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
PaymentIntent (支払いインテント) は、顧客から支払いを回収する意図を表すオブジェクトで、決済プロセスのライフサイクルの各段階を追跡します。
サーバーで PaymentIntent
を作成するには、次のようにします。
- 回収する金額と通貨を指定します。
PaymentIntent
の支払い方法のタイプのリストにcashapp
を追加します。ダッシュボードで Cash App Pay が有効になっていることを確認してください。
client secret を取得する![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
PaymentIntent には、client secret が含まれています。これは、支払いプロセスを安全に完了するためにクライアント側で使用されます。client secret をクライアント側に渡す際は、いくつかの方法を使用できます。
Stripe に支払いを送信して、クライアント側で取引を認証する![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
このステップでは、Stripe.js を使用してクライアント側で Cash App Pay の支払いを完了します。取引を認証するには、顧客を Cash App にリダイレクトする必要があります。
Stripe.js スクリプトを決済ページに含めるには、このスクリプトを HTML ファイルの head
に追加します。
<head> <title>Checkout</title> <script src="https://js.stripe.com/v3/"></script> </head>
決済ページで以下の JavaScript を使用して、Stripe.js のインスタンスを作成します。
// Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys const stripe = Stripe(
);'pk_test_TYooMQauvdEDq54NiTphI7jx'
クライアント側で PaymentIntent を確認するには、stripe.
を使用します。
const form = document.getElementById('payment-form'); form.addEventListener('submit', function(event) { event.preventDefault(); // Pass the clientSecret obtained from the server in step 2 as the first argument stripe.confirmCashappPayment( clientSecret, { payment_method: { type: 'cashapp', }, return_url: 'https://www.example.com/checkout/done', }, ); });
注意
confirmCashappPayment
は、return_
にモバイルブラウザーのみをリダイレクトし、デスクトップブラウザーのリダイレクトは行いません。デスクトップブラウザーを使用する顧客については、返されたプロミスが解決された後で、戻り先 URL に手動でリダイレクトできます。
顧客は、モバイルアプリまたはデスクトップアプリで Cash App Pay 取引を認証できます。confirmCashappPayment
の呼び出し後、顧客が使用するクライアントによって認証方法が決定されます。
失敗した支払い![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
Cash App Pay は複数のデータポイントを使用して、取引を拒否するタイミングを決定します (たとえば、機械学習モデルが取引において消費者の高い不正使用のリスクを検出した場合や、Cash App で請求する許可を消費者が取り消した場合など)。
このケースでは、PaymentMethod (支払い方法) は切り離され、PaymentIntent (支払いインテント) オブジェクトのステータスは自動的に requires_
に移行します。
支払いが拒否された場合を除き、Cash App Pay の PaymentIntent (支払いインテント) が requires_
ステータスである場合、顧客は Cash App にリダイレクトされてから 10 分以内に支払いを完了する必要があります。10 分経過してもアクションが行われない場合、PaymentMethod (支払い方法) の関連付けが解除され、PaymentIntent オブジェクトのステータスは自動的に requires_
に移行します。
これが発生すると、Payment Element はエラーメッセージを表示し、顧客に別の支払い方法で再試行するように求めます。
エラーコード![](https://b.stripecdn.com/docs-statics-srv/assets/fcc3a1c24df6fcffface6110ca4963de.svg)
次の表は、一般的なエラーコードと推奨アクションの詳細を示しています。
エラーコード | 推奨アクション |
---|---|
payment_ | 適切な通貨を入力します。Cash App Pay は usd にのみ対応しています。 |
missing_ | 必須のパラメーターの詳細については、エラーメッセージを確認してください。 |
payment_ | このコードは PaymentIntent の last_payment_error.code フィールドに表示されることがあります。エラーメッセージで失敗の詳細な理由と推奨されるエラー処理を確認します。 |
payment_ | Cash App Pay で PaymentIntent を確定する際は、return_ を指定します。 |