Paypalでの購入テスト(QA向け)

本記事では、ユーザーとしてPaypalの各機能をテストするための準備について記載します。
また、以下のユーザーについてのテスト観点で確認するために必要な情報を記載したつもりです。
 - Paypal残高から購入
 - クレジットカードを変更する（サブスク型サービスを想定）
 - Paypalアカウントに紐づけたクレジットカードが使用できないものだった
 - Paypalコンソールから購入をキャンセルする
 - Paypalコンソールから返金の申し出をする




## Paypalのテストアカウントを作る
 - Paypal Developerで親アカウントを作成する
     - https://developer.paypal.com/home
     1. 「Log in to Dashboard」→「新規作成」と押下します
     1. 「パーソナル（個人）アカウント」で新規登録します
     1. 電話番号を入力してSMS認証します
     1. プロフィールや住所を適当に入力（メールアドレスとパスワードは後で使いますよ！）
     1. 「同意してアカウントを開設」を押下
      - これで親アカウントができました！ 
      - あとは実際に購入のテストで使うためのアカウントを作っていきましょう

## Paypal Developerでアカウントを作る
 - 先ほど作成したアカウントの中に、テスト用のアカウントを好きなだけ作りましょう
     - もう一度 https://developer.paypal.com/ を開く
     1. 「Log in to Dashboard」から、先ほど作成したアカウントのメールアドレスとパスワードでログイン
     1. 画面左のメニューから「Account」を選択すると既にビジネスとパーソナルがありますね
     1. 無視して「Create account」を押下します
     1. 今回は海外のユーザーが買う際の挙動を確認したいので「パーソナル」でUSAアカウントを作ります
     1. 作成したアカウントの３点リーダーから、アカウントを編集します
     ![edit_account.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1778163/9f57fdf8-1e8b-8cb6-6bd1-f167f5e98878.png)
     - 「Profile」タブで名前とメールアドレス、パスワードを分かりやすいものに変えます
     - 「Funding」タブでは「Balance」でPaypal残高を変更できます

## Paypal Sandboxで設定する
 - Paypal Developerで作成したアカウントでSanboxにログインすると、コンソールが表示されます
    ![Sandbox_Home.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1778163/b775fa01-e50e-5dcd-ba0d-e59c193f9b90.png)
 - Sandboxのコンソールでできること
     - 購入や返金時の入出金履歴の確認（Recent activity）
     - クレジットカードの変更（使用できないカードにする方法は後述します）
     - 銀行やクレジットカードの紐付け解除
         - 解除したい銀行を押下して「Remove bank」を押下

## 観点ごとの設定
 ### Paypal残高から購入する
 - 銀行とクレジットカードの紐付けを解除します
     1. Sandboxコンソール右下から銀行orクレジットカードを押下
     1. 「Remove Bank」「Remove card」 押下 
 ### クレジットカードを変更する
   - 別のクレジットカードを紐付ける
     1. コンソールHomeの右下、「Link a Card or Bank」
     1. Link a debit or credit card
     1. debit or credit card
     1. [Paypal Developer](https://developer.paypal.com/) でテストカードを生成する
     1. カード情報を手順3.で開いたテキストボックスに入力する（カード情報は以下のスクショを参照）
![ダミーカード生成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1778163/041e3e60-dd91-1617-743c-7f6c0fe7005e.png)
 ### 使用できないクレジットカードが紐づけられている
 - Sandboxでクレジットカードを紐付ける際、**請求先住所の番地**に`CCREJECT-REFUSED`と入力します
    - これでカード与信エラー（**エラーコード10486**）が返るようになります
    - クレジットカードの紐付けはすぐ上の「クレジットカードを変更する」を参照してください
 ### Paypalコンソールから購入をキャンセルする
 - コンソール上部メニューから、該当の支払いをキャンセルできます（**返金とは別**の話なので注意）　
![キャンセルの流れ1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1778163/79ba4385-32d4-cf40-685e-a613c54e4cf3.png)
![キャンセルの流れ2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1778163/dcda37a5-9931-d11a-db9d-5dce9dc0be7b.png)

 ### Paypalコンソールから返金を申し出る
 - [Resolution Center（問題解決センター）](https://www.paypal.com/disputes/) から返金の申し出ができます
     - 上記リンクからログインできない場合は、Help＞「I want my money back.」を検索して遷移してください
     - 実際のユーザーもここから返金の申し出ができます
     1. 返金を確認したいアカウントでログイン
     1. 「問題を報告」 ＞ 「取引を選択」で対象の取引を選択する
     1. 問題の内容は任意に回答すればOK
     1. 返金金額を入力して実行します（購入金額未満のみ入力できます）

## 購入結果を確認する
 - Sandboxでの確認
   - Home画面の「Recent activity」 に表示された取引を押下すると詳細が確認できます
 - 実際にユーザーに届くメールを確認するには[「Paypal Developer」](https://developer.paypal.com/dashboard/notifications)のNotificationsメニューを表示します
     - 「自動支払いをキャンセルしました」などのメールが確認できます
     - 色々な条件で検索できそうな見た目なのですが、機能としては動いていないようです（2022.10.05現在）