決済の詳細
KOMOJUのAPIは、多くの異なる支払い方法に対してひとつの汎用的なインターフェースを提供しようと努力しています。これらの違いを、payment_details
というオブジェクトにカプセル化します。
このpayment_details
オブジェクトには通常、特定の決済手段には必要であるものの、他の決済手段には必要でないユーザー入力が含まれています。例えば、クレジットカード番号はpayment_details
内部にあり、銀行振込の連絡先情報やコンビニの店舗選択も同様です。
payment_details
は、要求だけでなく応答にも現れます。すべてのペイメントオブジェクト応答にはpayment_details
が含まれますが、通常は入力とは少し異なります(たとえば、応答payment_details
では完全なクレジットカード番号は表示されません)。
決済の詳細を使用するAPI
決済のフロー
次に、さまざまなpayment_details
フォーマットと関連するUXフローを示します。
クレジット・カード
クレジット・カード決済では、顧客のカード詳細情報を収集する必要があります。これらのカードの詳細がサーバに到達した場合は、PCI-DSS規制の対象となります。
Request Attribute | タイプ | 説明 |
---|---|---|
payment_details[type] * | constant | 「credit_card」 |
payment_details[number] * | string | カード番号、スペースなし。 |
payment_details[name] | string | カードに印刷されたカード所有者のフルネーム。 |
payment_details[month] * | string | 有効期限の月。例:「02」。 |
payment_details[year] * | string | 有効期限の年の下2桁。例:「29」 |
payment_details[verification_value] | string | カード裏面のカード検証値(CVV)。これは任意ですが、提供されない場合は受け入れ率が低下する可能性があります。この値を長期間保存しないように注意してください。 |
クレジットカードの支払いは同期的に完了します。結果の支払いオブジェクトのstatus
属性に支払いの最終ステータスが表示されるか、あるいはエラー・オブジェクトが表示されます。
コンビニ
コンビニ決済では、どこのお店で支払いをするのかをお客様に尋ねることが必要です。
Request Attribute | タイプ | 説明 |
---|---|---|
payment_details[type] * | constant | 「konbini」 |
payment_details[store] * | enum | お客様が支払いを予定しているコンビニエンスストアチェーン。 |
payment_details[email] * | string | お客様のEメールアドレス。 |
payment_details[phone] | string | お客様の電話番号。 |
この応答では、"authorized"
ステータスを持つ支払いオブジェクトを取得するはずです。この"authorized"(認証済み)ステータスは、クレジットカードの認証とは異なります。これは、お客様がそのお店に行って現金で支払うのを待っているということです。お客様が支払いを行うと、payment.captured
というタイプのWebhookが届きます。
コンビニ支払いを直接作成する場合は、お客様に支払い方法を必ず示すことが重要です。応答オブジェクトには、payment_details.instructions_url
属性があり、これは読み取って顧客に提示できます。KOMOJUもこのコンテンツをお客様のメールアドレスに送信しますが、支払い後すぐに指示が表示されたほうが変換率が高くなります。
日本の銀行への振込
弊社では日本国内の銀行振込決済をサポートしています。フローはコンビニと似ています。ここでは、顧客から情報を収集し、それを弊社に送信し、顧客が何らかのアクションを実行するまで待機します。
次に、お客様の視点から見たフローを示します。
- ユーザーは銀行の詳細を業者に提供します(業者はKOMOJUに送信します)。
- 業者がユーザーに銀行名と口座番号を表示します(この取引で自動的に生成されます)。
- ユーザーは自分の銀行(または銀行アプリ)に行き、手動で全額を上記の口座に送金します。
Request Attribute | タイプ | 説明 |
---|---|---|
payment_details[type] * | constant | 「bank_transfer」 |
payment_details[email] * | string | お客様のEメールアドレス。 |
payment_details[family_name] * | string | お客様の姓(アルファベットまたは漢字)。 |
payment_details[given_name] * | string | お客様の名前(アルファベットまたは漢字)。 |
payment_details[family_name_kana] * | string | お客様の姓(かな)。 |
payment_details[given_name_kana] * | string | お客様の名前(かな)。 |
payment_details[phone] | string | お客様の電話番号。 |
ここでもコンビニと同様、決済の手順を表示することをお勧めします。応答にはpayment_details.instructions_url
が含まれます。これは、任意でお客様に送信することもできます。
または、自分で銀行の詳細を表示することもできます。これを行う場合は、以下の応答フィールドをすべて表示してください。
Response Attribute | タイプ | 説明 |
---|---|---|
payment_details.bank_name | string | 顧客が送金しなければならない金融機関の名称。 |
payment_details.account_branch_name | string | 上記金融機関の支店の名称。 |
payment_details.account_number | string | 通常、6~7桁の口座番号で、この取引専用に生成されます。この口座番号にお金が到達すると自動的に検出し、決済をキャプチャします。 |
payment_details.account_type | string | 通常は、「普通預金」 |
payment_details.account_name | string | この取引の仮想銀行口座の口座名義人の名前。 |
payment_details.payment_deadline | datetime | 顧客が送金を完了しなければならない期限。 |
モバイルアプリ(PayPay、LinePay、メルペイ、楽天ペイ、auPay)
モバイルアプリの決済方法はすべて同じように動作します。必要なのは顧客がアプリにログインすることだけなので、顧客から情報を収集する必要はありません。
Request Attribute | タイプ | 説明 |
---|---|---|
payment_details[type] * | constant | 「paypay」、「linepay」、「rakutenpay」、「aupay」 |
payment_details[email] | string | お客様のEメールアドレス。これを使って領収書を送ることもできますが、任意です。 |
応答では、ステータスが"pending"
で、かつpayment_details.redirect_url
属性を持つペイメントオブジェクトを取得するはずです。お客様をそのURLにリダイレクトします。お客様が決済を完了すると、お客様は決済またはセッション作成時に指定されたreturn_url
リダイレクトされ、payment.captured
というWebhookが届きます。
その他
サポートされているpayment_details
オブジェクトの全一覧は、ペイメント: 作成のリファレンスで見ることができます。このリファレンスは、最新のAPIスキーマで常に最新の状態となっています。ほとんどの決済手段は、上記のモバイルアプリの決済方法と同じように動作します。
テストモードを使用して、一般的なフローの感じを掴むことをお勧めします。すべての新規アカウントは無料のテスト業者を利用でき、決済のシミュレーションを無制限に行うことができます。
Updated 9 months ago