Step 9:返金のリクエスト

既に成功している売上請求金額に対して、全部または一部の返金を行うことができます。

注意 :返金が呼び出しされた場合は、もはや資金はオーソリや売上請求できません。

返金処理が成功した場合は、返金(Refund)オブジェクトはCompleted 状態になり、購入者に返金通知メールが送信されます。

Amazonによって返金が失敗した場合は、返金オブジェクトはDeclined 状態になります。

返金するための期限はありません。しかしながら、購入から長い時間が経った返金要求は無効になったり、失敗する場合があります。

注意 :めったに返金することがない場合は、ワークフロー内で返金(Refund) APIを呼び出す代わりにセラーセントラル経由で返金を手動で呼び出すことができます。

処理内容

次の内容の通りに返金をリクエストします。

  1. 返金(Refund) APIの呼び出しを行います。次の値を返金リクエスト内にセットすることで、購入者への返金通知メールとアカウントステータスに表示され、決済とトランザクションレポートにも表示されます。
    • Refund Reference ID(返金用Reference ID)
    • Refund amount(返金金額)
    • Seller Refund Note(販売事業者用の返金メモ)
    Reference IDはユニークであることを確認します。 詳しい情報はAmazon Pay API呼び出しのエラーハンドリングを参照してください。
  2. Amazonから返される返金のIPNメッセージを確認します。返金リクエストはリアルタイムで処理されず、最初の RefundStatusは常にPending です。処理時間は変動し、数時間かかります。Amazonは処理ステータスをIPNメッセージ経由で通知します。
  3. 返金詳細を取得します。返金のIPNメッセージから返されたAmazonRefundId を利用してGetRefundDetails APIを呼び出して、返金オブジェクトの詳細を問い合わせできます。
  4. エラーか失敗のレスポンスがないか確認します。API呼び出しで発生するかもしれないエラーについてハンドリングが必要であり、 Declined状態にの返金について管理が必要です。 返金がDeclinedの場合は、レスポンス内に次の理由コードを参照できます。

    AmazonRejected
    Amazonによって返金処理が失敗になったことを示します。このケースでは、テクニカルサポートにお問合せください。

    ProcessingFailure
    Amazonは次の理由によりトランザクションを処理できませんでした。
    • 内部処理エラーによりトランザクションを処理できませんでした。
    • Amazonマーケットプレイス保証、または、チャージバックが既に発行されている。
    ProcessingFailureの理由コードを受け取った場合は、セラーセントラルのパフォーマンス をクリックしてAmazonマーケットプレイス保証かチャージバックが発生していないか確認し、売上請求オブジェクトが Completed 状態か確認した後で、1,2分後にリトライしてください。リトライが成功しなかった場合は、テクニカルサポートにお問合せください。

    詳しい情報はAmazon Pay API呼び出しのエラーハンドリングを参照してください。

Pythonのサンプルコード(US)

 
from pay_with_amazon.client import PayWithAmazonClient  
  
client = PayWithAmazonClient(  
    mws_access_key='YOUR_ACCESS_KEY',  
    mws_secret_key='YOUR_SECRET_KEY',  
    merchant_id='YOUR_MERCHANT_ID',  
    region='na',  
    currency_code='USD')  
  
response = client.refund(  
    amazon_capture_id='AMAZON_CAPTURE_ID',  
    refund_reference_id='REFUND_REFERENCE_ID',  
    refund_amount='1.00',  
    seller_refund_note='Test order.')

Rubyのサンプルコード(US)

 
# Refund  
  
require 'pay_with_amazon'  
  
merchant_id = 'YOUR_MERCHANT_ID'  
access_key = 'YOUR_ACCESS_KEY'  
secret_key = 'YOUR_SECRET_KEY'  
  
client = PayWithAmazon::Client.new(  
    merchant_id,  
    access_key,  
    secret_key,  
    sandbox: true,  
    currency_code: :usd,  
    region: :na  
)  
  
amazon_capture_id = 'S23-1234567-1234567-0000002'  
refund_reference_id = 'test_refund_1'  
amount = 106  
  
client.refund(  
    amazon_capture_id,  
    refund_reference_id,  
    amount,  
    seller_refund_note: 'Lorem ipsum dolor',  
    mws_auth_token: 'amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE'  
)

その他のサンプルコード(US)

 
https://mws.amazonservices.com/OffAmazonPayments_Sandbox/2013-01-01  
?AWSAccessKeyId=AKIAFBM3LG5JEEXAMPLE  
&Action=Refund  
&AmazonCaptureId=S23-1234567-1234567-0000002  
&RefundAmount.Amount=199.00  
&RefundAmount.CurrencyCode=USD  
&RefundReferenceId=test_refund_1  
&SellerRefundNote=For%20your%20returned%20item%2C%20Casad%20%272Jours%20Bonheur%27%20Satchel%20in%20Sandstorm  
&SellerId=YOUR_SELLER_ID_HERE  
&SignatureMethod=HmacSHA256  
&SignatureVersion=2  
&Timestamp=2013-11-27T19%3A01%3A11Z  
&Version=2013-01-01  
&Signature=WlQ708aqyHXMkoUBk69Hjxj8qdh3aDcqpY71hVgEXAMPLE