PayPalは多くの決済手段を提供いていますが、
Express Checkout NVP/SOAPについて記載します。
Express Checkoutはいくつかの決済方法を提供しています。
今回はデジタルコンテンツで品目は1つの1回限りの支払いを想定します。
(送料などはありません。)
上記資料を中心に個別APIはそれどれのドキュメントを見ました
SetExpressCheckout(必須) <決済処理開始>
---> PayPalへリダイレクト PayPal側でユーザーは「同意して支払い」実行
---> returnURLへ復帰
---> GetExpressCheckoutDetails(任意) <詳細情報取得>
---> 最終確認
---> DoExpressCheckoutPayment(必須) <決済実行>
SetExpressCheckout、GetExpressCheckoutDetails、DoExpressCheckoutPaymentはそれぞれ決められたパラメータでリクエストしレスポンスを取得します。
SetExpressCheckoutを呼び出し決済フローで使用するトークンを取得します。
取得トークンを付与しユーザーをPayPalへリダイレクトします。
項目 | 値 |
---|---|
METHOD | SetExpressCheckout |
PAYMENTREQUEST_0_AMT | 決済総額 |
PAYMENTREQUEST_0_CURRENCYCODE | 言語 |
PAYMENTREQUEST_0_PAYMENTACTION | Sale |
PAYMENTREQUEST_0_DESC | 説明文 |
PAYMENTREQUEST_n_INVNUM | 請求書番号2 |
returnURL | 復帰URL |
cancelURL | キャンセル時復帰URL |
リダイレクト
sandboxの例
public function redirectToPayPal( $token ) {
$payPalURL = 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&useraction=commit&token=' . urlencode($token);
header( "Location: " . $payPalURL );
exit;
}
GetExpressCheckoutDetailsで決済詳細情報を所得できます。
必要に応じて最終確認画面へ表示します。
項目 | 値 |
---|---|
METHOD | GetExpressCheckoutDetails |
TOKEN | token |
PAYERID | PayerID |
token, PayerIDはPaypalから復帰URLが呼ばれる際にクエリラメーターとして付与されています。
DoExpressCheckoutPaymentを呼び出し決済を実行します。
項目 | 値 |
---|---|
METHOD | DoExpressCheckoutPayment |
PAYMENTREQUEST_0_AMT | 決済総額 |
PAYMENTREQUEST_0_CURRENCYCODE | 言語 |
PAYMENTREQUEST_0_PAYMENTACTION | Sale |
TOKEN | 処理トークン |
PAYERID | PayerID |
cURLのパラメーターはURLエンコードし送信します。またNVP/SOAP APIのレスポンスは全てURLデコードします。
[TOKEN] => EC-xxxxxxxxxxx
[TIMESTAMP] => 2016-10-29T00:47:48Z
[CORRELATIONID] => xxxxxxxxxxx
[ACK] => Success
[VERSION] => 124
[BUILD] => 26126731
[TOKEN] => EC-xxxxxxxxxxx
[BILLINGAGREEMENTACCEPTEDSTATUS] => 0
[CHECKOUTSTATUS] => PaymentActionNotInitiated
[TIMESTAMP] => 2016-01-01T00:00:00Z
[CORRELATIONID] => xxxxxxxxxxx
[ACK] => Success
[VERSION] => 124
[BUILD] => 26126731
[EMAIL] => buyer@example.com
[PAYERID] => xxxxxxx
[PAYERSTATUS] => verified
[FIRSTNAME] =>
[LASTNAME] =>
[COUNTRYCODE] => JP
[ADDRESSSTATUS] => Confirmed
[CURRENCYCODE] => JPY
[AMT] => 1080
[ITEMAMT] => 1080
[SHIPPINGAMT] => 0
[HANDLINGAMT] => 0
[TAXAMT] => 0
[DESC] => サンプル商品 1080円
[INSURANCEAMT] => 0
[SHIPDISCAMT] => 0
[INSURANCEOPTIONOFFERED] => false
[PAYMENTREQUEST_0_CURRENCYCODE] => JPY
[PAYMENTREQUEST_0_AMT] => 1080
[PAYMENTREQUEST_0_ITEMAMT] => 1080
[PAYMENTREQUEST_0_SHIPPINGAMT] => 0
[PAYMENTREQUEST_0_HANDLINGAMT] => 0
[PAYMENTREQUEST_0_TAXAMT] => 0
[PAYMENTREQUEST_0_DESC] => minKer サンプル商品 1080円
[PAYMENTREQUEST_0_INSURANCEAMT] => 0
[PAYMENTREQUEST_0_SHIPDISCAMT] => 0
[PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID] => seller@example.com
[PAYMENTREQUEST_0_INSURANCEOPTIONOFFERED] => false
[PAYMENTREQUEST_0_ADDRESSSTATUS] => Confirmed
[PAYMENTREQUESTINFO_0_ERRORCODE] => 0
[TOKEN] => EC-xxxxxxxxxxx
[SUCCESSPAGEREDIRECTREQUESTED] => false
[TIMESTAMP] => 2016-01-01T00:00:00Z
[CORRELATIONID] => xxxxxxxxxxxxxxxx // PayPal との取引を一意に識別する相関 ID。
[ACK] => Success
[VERSION] => 124
[BUILD] => 26126731
[INSURANCEOPTIONSELECTED] => false
[SHIPPINGOPTIONISDEFAULT] => false
[PAYMENTINFO_0_TRANSACTIONID] => xxxxxxxxxxxxxx
[PAYMENTINFO_0_TRANSACTIONTYPE] => expresscheckout
[PAYMENTINFO_0_PAYMENTTYPE] => instant
[PAYMENTINFO_0_ORDERTIME] => 2016-01-01T00:00:00Z
[PAYMENTINFO_0_AMT] => 1080
[PAYMENTINFO_0_FEEAMT] => xxx
[PAYMENTINFO_0_TAXAMT] => 0
[PAYMENTINFO_0_CURRENCYCODE] => JPY
[PAYMENTINFO_0_PAYMENTSTATUS] => Completed // 処理が完了しています。
[PAYMENTINFO_0_PENDINGREASON] => None
[PAYMENTINFO_0_REASONCODE] => None
[PAYMENTINFO_0_PROTECTIONELIGIBILITY] => Ineligible
[PAYMENTINFO_0_PROTECTIONELIGIBILITYTYPE] => None
[PAYMENTINFO_0_SECUREMERCHANTACCOUNTID] => xxxxxx
[PAYMENTINFO_0_ERRORCODE] => 0
[PAYMENTINFO_0_ACK] => Success
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。