PayPal

PayPal API決済の実装方法

PayPalのAPI(SDK)による実装、PayPalチェックアウトについて説明します。

実装方法

こちらを参照ください。

PayPal提供のJavaScript SDK(Smart Payment Buttons)を読み込んで、指定のJavaScriptを貼り付けるだけで基本実装は完了します。
image.png

サーバーサイドの実装をする場合

こちらを参照ください。

上記で触れられている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を利用します。

その他

エラー処理

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

サンプルコードやソースコード

その他のソリューション

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away