# [SaaS型SP開発者向け] V2AuthTokenを利用してAmazon Payで決済する方法を教えてください。

## 認証情報自動連携について
* V2では、SaaS型SP（Service Provider:以降、SP）に限り、事業者が利用する SPの管理画面を起点に、認証情報発行およびSPへ自動連携する機能を追加することができるようになります。
* この機能により、事業者の作業負担が減り、キー発行後すぐAmazon Payをご利用いただけるだけでなく、事業者からSPへの問い合わせの削減も見込めます。
* また、事業者からシークレットキー（PrivateKey）を共有いただく必要もなくなるため、セキュリティの向上も期待できます。（PrivateKeyの代わりに、V2AuthTokenを利用します）
* 詳細は、[認証情報自動連携機能](https://www.amazonpay-integration.com/v2/doc/V2_%E8%AA%8D%E8%A8%BC%E6%83%85%E5%A0%B1%E8%87%AA%E5%8B%95%E9%80%A3%E6%90%BA%E6%A9%9F%E8%83%BD.pdf)をご覧ください。

## Amazon Payボタンを表示する際の注意点
 **1.Payloadを作成する** 
* [Generate the Create Checkout Session payload](https://developer.amazon.com/ja/docs/amazon-pay-checkout/add-the-amazon-pay-button.html#2-checkoutsession-%E3%83%9A%E3%82%A4%E3%83%AD%E3%83%BC%E3%83%89%E3%82%92%E7%94%9F%E6%88%90%E3%81%97%E3%81%BE%E3%81%99)に従い、Payloadを作成してください。
* 以下のstoreIdには、加盟店のstoreIdを設定してください。

```
    {
        "webCheckoutDetails": {
            "checkoutReviewReturnUrl": "https://a.com/merchant-review-page"
        },
        "storeId": "amzn1.application-oa2-client.8b5e45312b5248b69eeaStoreId", //加盟店のstoreIdを利用する
        .....
    } 
```

 **2.1.のPayloadを利用して、Signatureを生成する** 
* [Sign the payload](https://developer.amazon.com/ja/docs/amazon-pay-checkout/add-the-amazon-pay-button.html#3-%E3%83%9A%E3%82%A4%E3%83%AD%E3%83%BC%E3%83%89%E3%81%AB%E7%BD%B2%E5%90%8D%E3%81%97%E3%81%BE%E3%81%99)に従い、1.で作成したPayloadからSignatureを作成してください。
* YOUR_PUBLIC_KEY_IDとYOUR_PRIVATE_KEY_STRINGにはSPのPrivateKeyやPublicKeyIdを設定してください。※以下の例はJavaでSignatureを生成する例です。

```
    .setPublicKeyId("YOUR_PUBLIC_KEY_ID") //SPのPublicKeyIdを利用する
    ...
    .setPrivateKey("YOUR_PRIVATE_KEY_STRING") //SPのPrivteKeyを利用する
```

 **3.1.で作成したPayloadと2.で生成したSignatureを使い、Amazon Payボタンを生成する** 
* [Render the button](https://developer.amazon.com/ja/docs/amazon-pay-checkout/add-the-amazon-pay-button.html#4-%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AE%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC)に従い、Amazon Payボタンを設置してください。

## Amazon Pay APIを実行する際の注意点
* APIを実行する際には、headerに```x-amz-pay-authtoken```を追加するのみです。
* それ以外は、PrivateKeyを利用した実行方法と変わりません。

 **headerへの設定方法** 
* API実行時のheaderに、```x-amz-pay-authtoken（V2AuthToken）```を指定してください。
* Clientを生成する際に設定する、PrivateKeyやPublicKeyIdについては、SPのPrivateKeyとPublicKeyIdをご利用ください。

```
    //PHPでGetCheckoutSession APIを実行する場合の例
    $headers = array('x-amz-pay-authtoken' => $amz_pay_authToken);
        
    try {
        $client = new Amazon\Pay\API\Client($amazonpay_config);
        $result = $client->getCheckoutSession($checkout_session_id, $headers);
        $response = '{"status":' . $result['status'] . ',"response":' . $result['response'] . '}';
        echo($response);

    } catch (\Exception $e) {
        // handle the exception
        echo $e . "\n";
    }
```