App内課金をSANDBOXユーザーでテストする - AppStoreConnect編(2019年版)

最近App内課金を実装したので、忘れないようにまとめています。
AppStoreConnectのフォーマットはちょくちょく変わってるので、ハマりそうな箇所を記事に書いてます。

AppStoreConnectでやることは主に以下の3つです。

- 契約/税金/口座情報の登録
- マイAppでApp内課金の登録
- テストユーザーの登録

## 参考にした記事
- アプリ内課金の実装方法 - TERAKOYA
https://terakoya.site/ios_dic/ios-dic-in-app-purchese/
- 契約／税金／口座情報の概要 - App Store Connect ヘルプ
https://help.apple.com/app-store-connect/#/devb6df5ee51
- App内課金のプロモーション - App Store - Apple Developer
https://developer.apple.com/jp/app-store/promoting-in-app-purchases/
- App Store ConnectでSandboxテスターを追加できないときはパスワードを見直す - Qiita
https://qiita.com/pompopo/items/96466afe2e6d4288cee2

## 契約/税金/口座情報の登録
`銀行口座`、`納税フォーム`、`連絡先`の項目を入力していきます。

#### ▼契約/税金/口座情報 / AppStoreConnect
<img width="1190" alt="スクリーンショット_2019-12-03_15_15_29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/60eb5e57-a74c-0661-80b0-e3a998aeb162.png">

- APP内課金をSANDBOXユーザーで試すには`契約/税金/口座情報`の登録は`必須`です！
- ※最低でも`「銀行口座」`と`「納税フォーム」`は入力しておかないとステータスがアクティブにならないため、(課金周りのテストができない)ので注意です。
- 入力には`Admin` か `Finance` 以上の権限が必要です。
権限がない場合はAppStoreConnect上で上記のアイコンが表示されないで注意です。

#### ▼有料App / 契約/税金/口座情報

<img width="1313" alt="スクリーンショット_2019-12-03_15_27_26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/9f52e6b4-d7a7-ec6c-a728-c30043e529ae.png">

#### ▼銀行口座を入力
<img width="1563" alt="スクリーンショット_2019-12-03_16_47_17-3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/7712a740-7329-bc63-67e3-d1dbc5b379f1.png">

#### ▼納税フォームを入力
<img width="516" alt="スクリーンショット_2019-12-03_16_47_26-2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/fa162fbd-43fa-c013-f44d-aa4ba076254e.png">

#### ▼連絡先を入力
<img width="1564" alt="スクリーンショット_2019-12-03_16_47_35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/df14d2b2-622c-a326-faa9-b5128f68a0e7.png">

- 所属先に下記役割の方がいない場合は同一のユーザーでも大丈夫そうです。


#### ▼契約
ステータスが`アクティブ`になれば準備は完了です。
<img width="1313" alt="スクリーンショット_2019-12-03_15_27_26-2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/474fbf6a-ce16-3c93-2faf-b8f64a802116.png">

## マイAppでApp内課金の登録

#### ▼マイApp
<img width="1190" alt="スクリーンショット_2019-12-03_15_15_29-2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/853b3436-c4ef-0c6b-7c0c-f9ef1ca2ca84.png">

#### ▼新規Appの追加
<img width="1578" alt="スクリーンショット_2019-12-03_17_43_13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/c3308d08-2813-120a-7644-ee46e8cb204e.png">

- 新規Appの追加には`Admin`か`AccountHolder`以上の権限が必要です。


#### ▼App内課金の追加
- 機能>App内課金>(+)
<img width="1577" alt="スクリーンショット_2019-12-03_17_51_51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/ccec0634-73e0-a9cf-1cfa-7089a2713447.png">

#### ▼App内課金のタイプを選択
<img width="715" alt="スクリーンショット 2019-12-03 18.11.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/1b358912-cfe2-534f-244c-861c60b89e36.png">

#### ▼参照名と製品IDを入力
<img width="1340" alt="スクリーンショット_2019-12-03_18_22_28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/5b74d799-5c2a-df21-7d67-1109dc0a476b.png">

- 製品IDはコードで実装するProductIDと一致するものになります。
- 私は`アプリ名`.`製品名`で登録しました。　ベストプラクティスがあれば教えてください。

#### ▼ローカリゼーションを入力
<img width="1321" alt="スクリーンショット_2019-12-03_19_28_13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/3fc40173-a958-d716-2fb9-b421ec62bbab.png">

- AppStoreに表示される名前になります。

#### ▼App Store プロモーション（オプション）を入力
<img width="1340" alt="スクリーンショット_2019-12-03_20_17_15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/4f794179-a0fa-0d80-3893-8a4b9464d9ed.png">

<img width="385" alt="スクリーンショット_2019-12-03_20_19_15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/b290a809-baba-9ebd-7b92-b7fa13a6d4d6.png">

- プロモーションを登録するとアプリのプロダクトページからApp内課金を表示や購入することができます。

#### ▼審査に関する情報を入力
<img width="1320" alt="スクリーンショット_2019-12-03_21_18_42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/011dbcd3-d617-9862-c264-6d7bef4e94fd.png">

- 製品のスクリーンショット or 購入ページのスクリーンショットを追加します。

## テストユーザーの登録(WIP)👷‍♂️

#### ▼ユーザーとアクセス
<img width="1190" alt="スクリーンショット_2019-12-03_15_15_29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/494d7ba7-4d83-d985-d8c9-7a09c5c6c9ff.png">

#### ▼SANDBOX テスターを追加<img width="1569" alt="スクリーンショット_2019-12-03_21_27_30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/cb683676-cbe9-15c3-9b2f-f911902b8dcb.png">


#### ▼テスターアカウントを追加
<img width="599" alt="スクリーンショット 2019-12-03 21.30.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/5fc48232-4677-7960-f85e-d0a75d9d4326.png">

- メールアドレスは`hoge@hoge.com`でも通ります。実際に作成している`hoge@gmail.com`でなくても大丈夫です。
- 複数アカウントを作る際は連番で作成しました。`hoge1@hoge.com`、`hoge2@hoge.com`など
- パスワードは8文字以上+英数字+英字大文字+小文字が必要になります。

#### ▼SANDBOXユーザーでログイン
![IMG_0143.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276894/c81e7927-afab-4d94-e28d-73478cef9a0b.png)

- 設定>itunes StoreとApp Store>SANDBOXアカウントでサインインできます。
- シミュレーターではサインインできなかったため、実機でテストを行ってください。
- もしくは購入ボタン押下時、ログインしていない場合は、ログインを要求するダイアログが出るので、ダイアログからサインインできます。

```swift
// 購入ボタンを押した時の購入処理
SKPaymentQueue.default().add(SKPayment(product: productID)
```

## おわりに
コードで実装編も書く予定です。👷‍♂️