# canHandlePendingAuthorization=true（Dynamic Authorizationおよび非同期オーソリ）はどんな時に設定したら良いですか？

こちらのパラメーターは、Dynamic Authorizationおよび非同期オーソリを実行する為のパラメーターです。高額決済が発生する場合にご設定していただくことを推奨しています。

## Dynamic Authorizationおよび非同期オーソリを利用するメリット
Amazon Payでは、不正利用防止の観点から、決済時に購入者のアカウントに対する審査を行います。審査に通常以上の時間を要する場合があります。
同期オーソリでは、時間内に審査結果を返却できない場合は、調査時間があればオーソリOKにできる「審査に時間がかかる取引」であっても、すべてオーソリNGとします。その場合、ECでは失注になります。
Dynamic Authorizationおよび非同期オーソリを利用することで、一時的に注文を受け付け、審査結果を待ってから受注または失注を判断できるため、ECの機会ロスを最小限にすることができます。

## Dynamic Authorizationとは
「審査に時間がかかる取引」の場合のみ、自動的に最長24時間の厳密審査モードに切り替わり、非同期オーソリで処理します。
その他の取引は同期オーソリと同様です。
詳細は[Dynamic Authorizationについて](https://d2squ3eekfa1zc.cloudfront.net/image/QA-68-4.pdf)を確認してください。

非同期オーソリについては次の「非同期オーソリ」を確認してください。

## 非同期オーソリとは
「審査に時間がかかる取引」に関わらず、すべての取引において、非同期オーソリで処理します。
Amazon Payは、24時間以内に処理を行い、オブジェクトのステータスを最終結果で更新します。
非同期オーソリで受け付けた決済は、すべて即時にオーソリ結果が反映されず決済ステータスはAuthorizationInitiatedとなり、24時間以内に決済結果を更新します。


## Dynamic Authorizationおよび非同期オーソリの対応表
canHandlePendingAuthorizationパラメーターは、条件（checkoutMode、chargePermissionType、設定タイミング）によって
挙動（ Dynamic Authorization or 非同期オーソリ）がそれぞれ異なります。

<table border=”1”>
  <tr>
    <th>checkoutMode</th> <th>chargePermissionType</th> <th>設定タイミング</th><th>Dynamic Authorization</th><th>非同期オーソリ</th>
  </tr>
  <tr>
    <td>設定なし(=通常)</td> <td>OneTime</td><td>UpdateCheckoutSession</td> <td>○</td><td></td>
  </tr>
  <tr>
    <td>設定なし(=通常)</td> <td>OneTime</td><td>CreateCharge</td> <td></td><td>○</td>
  </tr>
  <tr>
    <td>設定なし(=通常)</td> <td>Recurring</td><td>UpdateCheckoutSession</td> <td></td><td>○</td>
  </tr>
 <tr>
    <td>設定なし(=通常)</td> <td>Recurring</td><td>CreateCharge</td> <td></td><td>○</td>
  </tr>
 <tr>
    <td>ProcessOrder(=APB)	</td> <td>OneTime</td><td>ボタンレンダー時のPayload</td> <td>○</td><td></td>
  </tr>
  <tr>
    <td>ProcessOrder(=APB)	</td> <td>OneTime</td><td>CreateCharge</td> <td></td><td>○</td>
  </tr>
  <tr>
    <td>ProcessOrder(=APB)	</td> <td>Recurring</td><td>ボタンレンダー時のPayload</td> <td></td><td>○</td>
  </tr>
  <tr>
    <td>ProcessOrder(=APB)	</td> <td>Recurring</td><td>CreateCharge</td> <td></td><td>○</td>
  </tr>
</table>

詳細は下記をご覧ください。

## UpdateCheckoutSession API (chargePermissionType: Onetime)

canHandlePendingAuthorizationをtrueで設定しますと、Amazon Payはまず同期オーソリ処理を実施します。もし、同期オーソリが失敗となった場合、非同期オーソリ処理を実施します。(Dynamic Authorization)

API実行時に返却されるレスポンスは、同期オーソリが成功した場合は、200。同期オーソリが失敗し、非同期オーソリが成功した場合は202となります。
非同期オーソリの最終結果の確認は、GetChargeのポーリング処理またはIPNを受信して行って下さい。

・留意点
　UpdateCheckoutSessionのcanHandlePendingAuthorization=trueは、PaymentIntent=Authorizeの場合にのみ設定が可能です。他のPaymentIntentではご利用できません。
　PaymentIntent=Confirmの場合は、canHandlePendingAuthorization=trueのCreateChargeでオーソリ処理を行って下さい。
　PaymentIntent=AuthrizeWithCaptureの場合は、PaymentIntent=Authorizeを設定し、オーソリ後にCaptureChargeにて売上請求(Capture)を行って下さい。

 **Dynamic Authorization 処理フロー** 

![image](https://d2squ3eekfa1zc.cloudfront.net/image/QA-68-1.png)

![image](https://d2squ3eekfa1zc.cloudfront.net/image/QA-68-2.png)

![image](https://d2squ3eekfa1zc.cloudfront.net/image/QA-68-3.png)

※HTTPステータスコード　2xx 正常系 ベースの処理フローでの記載です。
Amazon Pay APIのレスポンス受信後、HTTPステータスコードが正常系であることを確認後に、処理フローへ進むよう実装してください。

## UpdateCheckoutSession API (chargePermissionType: Recurring), CreateCharge API (chargePermissionType: Onetime / Recurring)

canHandlePendingAuthorizationをtrueで設定しますと、Amazon Payは非同期でオーソリ処理を実施します。
API実行時に返却されるレスポンスは、201となります。
非同期オーソリの最終結果の確認は、GetChargeのポーリング処理またはIPNを受信して行って下さい。


## 参考
[インテグレーションガイド](https://developer.amazon.com/ja/docs/amazon-pay-checkout/asynchronous-processing.html#manage-asynchronous-authorizations)