PayPalのAPI(SDK)による実装、PayPalチェックアウトについて説明します。
実装方法
こちらを参照ください。
PayPal提供のJavaScript SDK(Smart Payment Buttons)を読み込んで、指定のJavaScriptを貼り付けるだけで基本実装は完了します。
サーバーサイドの実装をする場合
こちらを参照ください。
上記で触れられているSDKを利用せず下記のREST APIを直接呼び出すことも可能です。
https://developer.paypal.com/docs/api/orders/v2/
https://developer.paypal.com/docs/api/payments/v2/
REST APIの呼び出し方法(各API共通部分)
https://developer.paypal.com/docs/api/overview/
https://developer.paypal.com/docs/api/reference/api-requests/
https://developer.paypal.com/docs/api/reference/api-responses/
https://developer.paypal.com/docs/rate-limiting/
古い実装を新しくする場合
こちらを参照ください。
事前承認支払いの実装について
事前承認支払いのご利用は審査が必要です。現在、詳しい実装方法はご利用可能なユーザー様に個別に案内しています。
モバイルSDKの実装について
モバイルSDKの実装は、Braintree iOS SDKまたは、Android SDKをお使いください。※Braintreeアカウントは必要ありません。
- 上記で必要となるgatewayおよびClient Token (CLIENT_AUTHORIZATION)の生成方法はこちらを参照ください。
- モバイルSDKで事前承認支払いを行う場合はVaultを利用します。
その他
- Webhook(通知)の受け取り(決済ステータスが後で保留になる場合などに必要です)https://developer.paypal.com/docs/checkout/integration-features/add-webhooks/
- 取引履歴の参照 https://developer.paypal.com/docs/checkout/integration-features/search-transactions/
- 他の決済方法と並列表示(ラジオボタンでの切り替え)https://developer.paypal.com/docs/checkout/integration-features/mark-flow/
- 返金の実行 https://developer.paypal.com/docs/checkout/integration-features/refunds/
- 与信と回収(Authorize and Capture)を別々にする方法 https://developer.paypal.com/docs/checkout/integration-features/auth-capture/
エラー処理
https://developer.paypal.com/docs/checkout/integration-features/handle-errors/
PayPal決済画面でカード与信エラーが起きた場合のリカバリー
https://developer.paypal.com/docs/checkout/integration-features/funding-failure/
(サーバーサイドの実装をしている場合のみ必要です)
セキュリティ対応
https://developer.paypal.com/docs/classic/lifecycle/info-security-guidelines/
ベストプラクティス
https://developer.paypal.com/docs/checkout/best-practices/
住所連携方法(配送先連携による売り手保護、新規登録時の入力削減を実現します。JavaScript、サーバーサイド共にOrderのpurchanse_unit.shippingとして渡します):
https://developer.paypal.com/docs/api/orders/v2/#definition-purchase_unit
PayPalアカウントの個人情報や配送先住所を取得する方法(ソーシャルログインのようにECサイトの配送先や会員情報の自動入力に利用できます):
https://developer.paypal.com/docs/checkout/integrate/#5-capture-the-transaction
(data、およびdetailsから取得できます)
商品情報の連携方法(支払い者の取引明細に表示されます。JavaScript、サーバーサイド共にOrderのpurchanse_unit.itemsとして渡します):
https://developer.paypal.com/docs/api/orders/v2/#definition-purchase_unit
売り手保護対象かどうかの確認方法(Orderの詳細で確認できます):
https://developer.paypal.com/docs/api/orders/v2/#orders_get
PayPalボタンのカスタマイズ方法:
https://developer.paypal.com/docs/checkout/integration-features/customize-button/
https://developer.paypal.com/docs/checkout/reference/customize-sdk/
(読み込むJavaScriptのパラメータとJavaScriptの記述両方を使ってカスタマイズします)
事故決済の防止方法(請求IDによる二重決済防止、eCheckの無効化など):
https://developer.paypal.com/docs/classic/admin/setup-account/#block-accidental-payments
(eCheckの説明は以下の「アカウントの設定」の参照リンクにあります)
請求IDの実装方法:
https://developer.paypal.com/docs/api/orders/v2/#definition-purchase_unit
(「invoice_id」で渡せます)
トラブルシューティング
https://developer.paypal.com/docs/checkout/troubleshoot/
JavaScriptのパフォーマンス対策:
https://developer.paypal.com/docs/checkout/troubleshoot/performance/
サポートブラウザ、IE対策:
https://developer.paypal.com/docs/checkout/troubleshoot/support/
https://developer.paypal.com/docs/checkout/troubleshoot/internet-explorer/
アカウントの設定
実装以外のアカウントの設定ポイントについては以下をご参照ください。
https://qiita.com/PPJP/items/9b089d44d48c9b245eb3
テストについて
https://developer.paypal.com/docs/checkout/integrate/#7-test-the-integration
テスト環境(Sandbox)
https://qiita.com/PPJP/items/6ba65ed21da7fba65586
※エラーテストを行う際は、利用するSandboxのSellerアカウントのProfileの「Negative Testing」がONになっていることを確認してください。
https://qiita.com/PPJP/items/6ba65ed21da7fba65586#sandbox%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AEprofile%E3%81%AE%E8%A8%AD%E5%AE%9A
PayPalアカウントのカード与信エラーの発生方法:
カードの請求先住所(カードを登録する際に入力)の番地(Line1)に「CCREJECT-REFUSED」といれると、カード与信エラーが常に発生するようになります。このカードを決済時に利用することで、上記の「カード与信エラーが起きた場合のリカバリー」のテストができます。
https://developer.paypal.com/webapps/developer/docs/classic/express-checkout/ht_ec_fundingfailure10486/#test-a-sale-or-authorization-integration
Sandboxのテストに関するTIPS
https://developer.paypal.com/docs/classic/lifecycle/sb_tips
リリース方法
https://developer.paypal.com/docs/checkout/integrate/#8-go-live
その他
リリース後の運用について
- APIのレスポンスに含まれるdebug-id(correlation-id)、Authorize/CaptureのIDなどは必ずログに残すようにしてください。問い合わせ時に必要となります。
- 本番やSandboxの状態確認や障害通知の受け取りはこちらから可能です。
ガイドとリファレンス
https://developer.paypal.com/docs/checkout/integration-features/
https://developer.paypal.com/docs/checkout/reference/
PayPalチェックアウトに使うAPIの詳細:
https://developer.paypal.com/docs/api/orders/v2/
https://developer.paypal.com/docs/api/payments/v2/
API Executor(APIの挙動を試すことができます):
https://www.paypal.com/apex/home