# OneTime（都度支払い）で、注文確定後の増額・減額の処理方法を知りたいです。

増額をする場合は、Amazon Payボタンの描画時に下記パラメーターをPayloadに設定頂く事で増額機能をご利用いただけます。
paymentDetails.allowOvercharge = true
※ボタン描画時にPayloadに当項目を設定していない場合は、増額機能はご利用頂けませんのでご留意下さい。

増額設定時の請求上限は、70000円かUpdateCheckoutSessionで指定した金額の900%の高い方までとなっています。
(増額可能な金額は、請求上限－注文金額（UpdateCheckoutSessionで指定した金額）となります)
ChargePermissionオブジェクトのlimits.amountLimit.amount/ limits.amountBalance.amount項目にて増額可能な金額(総額・残額)をご確認いただけます。

## APIでの処理方法

### 注文確定後の増額の処理方法
注文金額で取得したオーソリを取り消して、増額後の総額でオーソリすることで処理できます。
(または、増額分だけ追加でオーソリすることも可能です)

 **例：10,000円の注文だったが、離島送料の追加で11,500円になった場合** 

| 処理概要  | a) 増額後の総額でオーソリし、売上請求する|  b)増額分だけ追加でオーソリし、売上請求する | 
| ------------- | ------------- |------------ |
| 1)注文確定時  | ・Update Checkout Session Details  API を呼び出す（Payment intent = Authorize , Charge Amount=10000を設定）|   ・Update Checkout Session Details  API を呼び出す（Payment intent = Authorize, Charge Amount=10000を設定）    |
| 2)増額決定時  | ・Create Charge API を呼び出す（Amount=11500を設定）<br> ・Cancel Charge API を呼び出す（1.で取得したオーソリ10000を開放）  | ・Create Charge API を呼び出す（Amount=1500を設定）  |
| 3)売上請求時  | ・Capture Charge API を呼び出す（Amount=11500を設定）|・1)で生成したオーソリに対してCapture Charge API を呼び出す（Amount=10000を設定）<br> ・2)で生成したオーソリに対してCapture Charge API を呼び出す（Amount=1500を設定）  |
| 4)売上請求が全て完了した時 |  ・Close Charge Permission API を呼び出す |  ・Close Charge Permission API を呼び出す　|

※留意点その１：aの方法は、2)のCreate Charge APIを呼び出したときにオーソリ失敗する可能性がbの方法よりも上回ります。
※留意点その２：aの方法は、デビットカード決済の場合、一時的に「増額前の金額＋増額後の金額」が引き落とされます。増額前の金額の返金は後日行われます。
※留意点その３：bの方法は、Chargeオブジェクトが複数となって、それぞれに対してCapture Charge API を呼び出すことになります。
※留意点その４：処理概要4のClose Charge Permissionは、実行すると以降の追加請求(Create Charge)は実施いただけません。予定している全ての請求が完了した後に実行してください。

### 注文確定後の減額の処理方法

減額後の金額で売上請求することで処理できます。また減額下限値は1円となります。
(または、減額後の金額でオーソリし直してから売上請求することも可能です)

 **例：10,000円の注文だったが、一部キャンセルが発生して7,000円になった場合** 

| 処理概要  | a)減額後の金額で売上請求する|  b)減額後の金額でオーソリし直してから売上請求する | 
| ------------- | ------------- |------------ |
| 1)注文確定時  | ・Update Checkout Session Details  API を呼び出す（Payment intent = Authorize , Charge Amount=10000を設定）  |・Update Checkout Session Details  API を呼び出す（Payment intent = Authorize, Charge Amount=10000を設定） |
| 2)減額決定時  | (処理不要)   |・Cancel Charge API を呼び出す<br> ・Create Charge API を呼び出す（Amount=7000を設定）  |
| 3)売上請求時  | ・Capture Charge API を呼び出す（Amount=7000を設定） |・Capture Charge API を呼び出す（Amount=7000を設定）  |
| 4)売上請求が全て完了した時 |  ・Close Charge Permission API を呼び出す |  ・Close Charge Permission API を呼び出す　|

※留意点その１：bの方法は、2)のCreate Charge APIを呼び出したときにオーソリ失敗する可能性があります。
※留意点その２：処理概要4のClose Charge Permissionは、実行すると以降の追加請求(Create Charge)は実施いただけません。予定している全ての請求が完了した後に実行してください。
※下限は1円まで可能です。


### 増額の処理フロー

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

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

### 増額の処理フロー例(上記aのケース)

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

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

## セラーセントラルでの処理方法

### 増額請求の処理方法
増額設定された場合、セラーセントラルで請求処理を行いましたら、下記スクリーンショットのように「追加請求金額」欄が表示されます。
上の請求金額欄に注文金額を、下の「追加請求金額」に増額分を入れていただき、「確認する」ボタンを押したら処理できます。

![image](https://dkt57ui24rirk.cloudfront.net/image/QA-12-SC.png)

### 減額請求の処理方法

減額後の金額を請求金額欄に入れてから処理ください。

## （補足）Amazonギフトカードについて

Amazonギフトカードの場合については [ Amazonギフトカードの利用について注意点を知りたいです。  ](https://www.amazonpay-faq.jp/faq/QA-42) をご参照ください。

## 参考
[CloseChargePermissionを実行した際に、status: 422 InvalidChargePermissionStatusエラーが返却されます。](https://www.amazonpay-faq.jp/faq/QA-117)