17
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PaymentAdvent Calendar 2015

Day 5

PayPalを使った決済機能の異常系テスト

Last updated at Posted at 2015-12-07

決済機能の開発で難しい部分はテストだと思います。

正常系、いわゆるクレジット経由で売り上げが立ところまでは、テスト用のクレジットカード情報が公開されているので比較的簡単にできますが、異常系、つまり決済がなにかしらの理由で処理されない場合のテストは、その現象を発生させるのが難しく頭を悩ませる部分かと思います。

PayPalには、いくつか異常系のテスト機能があるので、それを紹介したいと思います。

##クレジットカードが拒絶される(与信エラー)ケースのテスト
こちらの方法で実現できます。

買い手が買おうとした時に、登録している、もしくはしようとしているクレジットカードに与信上の問題がある(残高オーバー、その他与信的な問題)場合のテストでおそらく最も発生する率が高いケースかと思います。

##APIのエラーコードに対応したテストをする
PayPalのデベロッパーサイトでSandboxアカウントを作る際に、AccountDetail > Settingsの「Negative Testing」をOnにすると、各APIの特定のフィールド(ほとんどがAMTなどの決済額のフィールド)にエラーコードと同じ数値を小数点として指定することで、そのエラーコードに対応したエラーをAPIが返すようになります。

例:DoExpressCheckoutPayment APIでエラーコード10539を発生させたい場合、AMTに105.39を指定します。

通貨がJPYの場合はAMTに小数点は指定できないので、通貨はデフォルトのUSDを使います。

詳細は以下に載っています。
https://developer.paypal.com/docs/classic/lifecycle/sb_error-conditions/?mark=nrgativer%20testing

##支払いが保留などになるケースをテストする
PayPalは様々な不正検知の仕組みを持っているため、支払いがたまに即座に完了されず保留などになるケースがあります。
この状況をテストするには、上記同様SandboxのSettingsで「Payment review」をonにすると、すべての取引が完了せず、「保留」などのレビュー待ちになります。

詳細は以下に載っています。
https://developer.paypal.com/docs/classic/lifecycle/sb_payment-review/?mark=payment%20review%20test

上記3ポイントをテストしておけば、決済に絡むテストはかなりカバーできるのではと思います。
(もちろん通信障害やタイムアウトなどのシステム一般的なテストは別途必要ですが)

17
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?