メインコンテンツへスキップ

アプリからPayment for Stripe開始する(URLスキーム)

簡単に言うと、アプリまたはウェブサイトがpayment:// URL を開き、 Payment for Stripe支払いを受け付け、その結果をコールバック URL に渡して開きます。SDK は不要です。サーバー側の処理も必要ありません。iPhone と Android で同じように動作しますが、以下にいくつかの違いを説明します。

完全なリファレンスはpaymentforstripe.com/apiにあります。

仕組み

  1. アプリは、パラメータ付きのpayment:// URL を開きます。
  2. Payment for Stripe起動すると、販売プロセスが開始されます。加盟店は、リーダー、タップ決済、またはカード入力によって支払いを受け付けます。
  3. 処理が完了すると、アプリはcallback URLを開き、結果をクエリパラメータとして追加します。

加盟店はログインしている必要があります。別の課金処理中にリンクが届いた場合、アプリはそれを拒否し、コールバックにはerror=charge_in_progressが返されます。

請求を作成する: payment://new

お客様が設定した金額を一度だけお支払いいただきます。

名前 タイプ 必須 説明
amount 整数 はい 通貨の最小単位での金額(0より大きい) 1000 = 10.00ドル。
currency 弦 いいえ usdやeurなどの3文字のISOコード。省略すると、アプリは既に設定されている通貨を使用します。
description 弦 いいえ 料金の説明。URLエンコードしてください。
customer 弦 いいえ 既存のStripe顧客ID( cus_… ) customer_idも使用できます。設定されている場合、 emailとname無視されます。
email 弦 いいえ 顧客メールアドレス。新規顧客を作成します。
name 弦 いいえ 顧客名。URLエンコードします。新規顧客を作成します。
metadata 弦 いいえ キーと値のペアを含むURLエンコードされたJSONオブジェクトが、支払い情報に追加Stripeれます。Stripeのメタデータ制限が適用されます。
callback 弦 いいえ セール終了後に開くURL。
autoprocess ブール値 いいえ true設定すると、キーパッドをスキップしてすぐに充電が開始されます。デフォルトはfalse 。
auto_return ブール値 いいえ true設定すると、結果が判明次第すぐにコールバックが開始されます。デフォルトはfalse 。falseの場合、コールバックは販売者が結果画面を閉じるまで待機します。
 payment://new?amount=2500&currency=eur&description=Coffee%20and%20pastry
 payment://new?amount=3500&autoprocess=true&auto_return=true&callback=myapp://payment-complete

amountが欠落している、ゼロである、または数値でないリンクは無視されます。

カタログから請求書を作成する:payment://cart

Stripe商品カタログから価格をカートに追加します。その後、販売者は通常どおり請求を行い、売上はStripeに支払い済みの請求書として保存され、その明細項目が含まれます。顧客に請求書がメールで送信されることはありません。

名前 タイプ 必須 説明
prices 弦 はい カンマ区切りのprice_id:quantityペア、例: price_abc:2,price_xyz:1 line_items使用できます。
coupon 弦 いいえ カートに適用するStripeクーポンID。
customer 弦 いいえ 既存のStripe customer_id ID。customer_idでも構いません。
email 弦 いいえ 顧客メールアドレス。新規顧客を作成します。
name 弦 いいえ 顧客名。URLエンコードしてください。
metadata 弦 いいえ キーと値のペアをURLエンコードしたJSONオブジェクト。
callback 弦 いいえ セール終了後に開くURL。
autoprocess ブール値 いいえ trueすべての価格 (およびクーポン) が読み込まれた後に課金を開始します。
auto_return ブール値 いいえ 上記と同じ。デフォルトはfalse 。
 payment://cart?prices=price_coffee:2,price_muffin:1&email=customer@example.com

pricesと一緒にamount送信しないでください。合計金額は価格から算出されるため、価格と金額の両方を含むリンクは無視されます。payment_hiddenで非表示にした価格は、ここでも有効です。

既存の請求書を支払う:payment://invoice

Stripe未払い請求書に対する対面決済を受け付けます。金額、通貨、顧客情報、税金はすべて請求書から取得されます。決済が成功すると、アプリは請求書を支払い済みとしてマークします。iPhoneとAndroidに対応しています。

名前 タイプ 必須 説明
id 弦 はい Stripe請求書in_で始まる必要があります。未決済の請求書を送信します。iPhone では、まず下書きが確定されます。Android では、下書きはerror=invoice_state_changedで拒否されます。
metadata 弦 いいえ PaymentIntentに追加された、URLエンコードされたJSONオブジェクト。
callback 弦 いいえ 販売完了時に開くURL。販売成功時にinvoice_idとpayment_intent_idを取得します。
autoprocess ブール値 いいえ true請求書のチェックが成功した後、カードリーダーが接続されている場合にのみ課金を開始します。
auto_return ブール値 いいえ 上記と同じ。デフォルトはfalse 。
 payment://invoice?id=in_1ABC123xyz&autoprocess=true&callback=myapp://invoice-paid

請求書によって販売が設定されるので、 amount 、 currency 、 customer 、 customer_id 、 email 、 name 、 description 、 coupon 、 prices 、 line_itemsのいずれかに該当するとerror=invoice_invalid_paramでリンクが拒否されます。支払い済み、無効、回収不能、$0、定期購読に紐づいている、またはデフォルトの支払い方法が設定されている請求書も拒否され、それぞれ独自のinvoice_…エラーが発生します。

コールバック

アプリは、以下の内容をコールバックURLに追加します。

名前 タイプ 送信済み 説明
status 弦 いつも success 、 error 、またはcancelled 。
charge_id 弦 成功について 支払いのID。iPhoneではStripeチャージ( ch_… )です。AndroidではPaymentIntent( pi_… )です。
stripe_charge_id 弦 Androidのみ Stripe料金( ch_… )。
payment_intent_id 弦 成功について PaymentIntent。iPhoneはpayment://invoice場合にのみ送信します。Androidはすべてのカード決済に対して送信します。
invoice_id 弦 請求書リンク 支払い済みの請求書、 payment://invoice 。
amount 整数 成功について 請求金額(最小単位)。
currency 弦 成功について 小文字のISOコード。
error 弦 エラー発生時 charge_in_progressやinvoice_already_paidのような短いコード、またはカード決済が拒否された場合の分かりやすいメッセージ。
 myapp://payment-complete?status=success&charge_id=ch_3Qx…&success=true&amount=3500&currency=usd&chargeId=ch_3Qx…

両方のプラットフォームで同じIDが必要ですか?まずstripe_charge_idを読み込み、それでもダメな場合はcharge_idにフォールバックしてください。

古い統合の場合、アプリはsuccess=true 、 chargeId 、 cancelled=true 、およびerror[message]も送信します。新しいコードではstatus読み取る必要があります。

キャンセルが発生すると、すぐにコールバックが開始されます。請求の成功またはエラーはauto_return=trueを指定しない限り、販売者が結果画面を閉じるまで待機します。iPhone では、現金販売では何も請求されないため、コールバックは開始されません。

URLエンコーディング

  • スペースや記号を含むすべての値をエンコードします。スペースは%20に、 {と}は%7Bと%7Dに、 "は%22に、 :は%3Aになります。
  • コールバック URL に独自のクエリ文字列がある場合は、 &がpayment://リンクを分割しないように、コールバック全体をエンコードしてください。
  • pricesに含まれるコンマとコロンはそのままにしておいて構いません。

メタデータ{"order_id":"1234","location":"Store A"}は次のようになります。

 payment://new?amount=10000&description=Invoice%20%231234&metadata=%7B%22order_id%22%3A%221234%22%2C%22location%22%3A%22Store%20A%22%7D

古いmetadata[order_id]=1234の形式も機能します。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています