クレジットカードによる支払いは、認証と支払い確定の2つのステップにより行われます。 認証では、クレジットカードの与信枠(限度額)の検証が行われ、支払い金額分の与信枠を確保します。支払い確定では、認証により与信枠が確保された金額の支払いを確定します。明細書に記載される請求金額には、支払い確定されたものが掲載されます。 PAY.JP では、認証と支払い確定を同時に行う通常の支払い処理と、認証と支払い確定を個別のリクエストで行う支払い処理をサポートしています。ここでは後者について説明します。
与信枠の確保
まずは与信枠の確保を行ってみましょう。
capture
という支払いが確定されるかどうかを示すパラメーターを false
に変えてリクエストを行うだけです。デフォルトでは true
になっており、この場合はその場で支払いが確定されます。
以下のようなリクエストで与信枠の確保のみを行うことができます
curl https://api.pay.jp/v1/charges \
-u sk_test_c62fade9d045b54cd76d7036: \
-d "amount=500" \
-d "currency=jpy" \
-d "capture=false" \
-d "card=作成したトークン"
成功すると captured
が false
、 paid
が true
の与信枠が確保された支払い情報が作成されます。
また、確保された与信枠は一定の期間を過ぎると解放されるようになっています。PAY.JP ではデフォルトで7日間の失効期間を設けており、1〜60日まで任意の失効期間を設定できます。
たとえば、30日の失効期間を設定する場合は下記のリクエストで可能です
curl https://api.pay.jp/v1/charges \
-u sk_test_c62fade9d045b54cd76d7036: \
-d "amount=500" \
-d "currency=jpy" \
-d "capture=false" \
-d "expiry_days=30" \
-d "card=作成したトークン"
失効した支払い情報では refunded
が true
となり、 amount_refunded
に解放された与信枠の金額が入ります。
支払いを確定する
与信枠の確保に成功したら、支払いを確定してみましょう。すでに失効した支払いは確定できないのでご注意ください。 以下のようなリクエストで支払い確定を行います
curl https://api.pay.jp/v1/charges/与信枠が確保された支払いID/capture \
-u sk_test_c62fade9d045b54cd76d7036: \
-XPOST
成功すると captured
が true
になり、支払いが確定されます。
また、確保された与信枠より少額であれば、金額を下げて支払い確定を行うことができます。金額を上げての支払い確定はできませんのでご注意ください。
以下のようなリクエストで金額を変更して支払い確定を行います
curl https://api.pay.jp/v1/charges/与信枠が確保された支払いID/capture \
-u sk_test_c62fade9d045b54cd76d7036: \
-XPOST \
-d "amount=350"
成功すると captured
が true
になり、 amount_refunded
に元の金額と変更金額の差分が入ります。たとえば、与信枠が確保された金額が500円で支払い確定された金額が350円だった場合、 amount_refunded
には差分である 150 が入ります。この処理は返金とは異なります。
確保された与信枠を解放する
確保された与信枠を任意のタイミングで解放できます。 与信枠の解放は下記のリクエストで可能です
curl https://api.pay.jp/v1/charges/与信枠が確保された支払いID/refund \
-u sk_test_c62fade9d045b54cd76d7036: \
-XPOST \
成功すると refunded
が true
になり、 amount_refunded
に確保されていた分の金額がセットされます。
与信枠が確保されたままだとその金額分だけ限度額を圧迫してしまうことになるので、支払い確定の必要がなくなった場合は都度解放いただくことを推奨します。