Step 6:オーソリ(Authorize)のリクエスト | Amazon Pay Japan

Step 6:オーソリ(Authorize)のリクエスト

オーソリ(Authorize)APIの呼び出しは、購入者が購入処理中に選択し、Order Referenceオブジェクトに保存された支払方法に対して指定した購入金額を確保します。

オーソリに成功した場合は、AuthorizationStatusOpen であるオーソリオブジェクトが生成されます。これは次のステップの購入金額の請求が許可されます。オーソリオブジェクトは30日間 Open状態を維持し、1つのOpen状態のOrder Referenceに対して10個のオーソリを作成できます。

注意: クレジットカードの有効性を確認するために1円のAuthorize APIを要求するのはお薦めしません。

同期と非同期のオーソリ(Authorize)API呼び出し

運用ルールの要件次第でオーソリ(Authorize)API呼び出しのモードを選択します。

  • 同期オーソリ

  • 購入者がサイトにいる間にオーソリを確保する場合は、同期オーソリを利用します。同期オーソリは、オーソリ結果をレスポンスとして返却します。オーソリ失敗をサイト上で即座に購入者へ伝え、他の支払方法へ変更を促すことができるため、オーソリ失敗による、販売事業者からの購入者への連絡は不要になります。
  • 非同期オーソリ

  • 購入者がサイトを離れた後にオーソリを確保する場合は、非同期オーソリを利用します。非同期オーソリは、オーソリ結果を待たずにレスポンスを返却します。オーソリが失敗した場合は、販売事業者から購入者に連絡を取り適切な対処を求めてください。 </li>

注意: オーソリで InvalidPaymentMethodの理由コードが返された場合は、Hard DeclineとSoft Declineの異なる2つの処理方法を利用できるSoftDeclineパラメータのオプションがあります。Soft Declineのケースでは、追加のオーソリを要求できます。Soft Declineについての追加の情報は「オーソリ失敗のハンドリング」を参照してください。

処理内容

次の内容でオーソリをリクエストします。

  1. オーソリ(Authorize) APIを呼び出します。オーソリリクエストに次の値をセットします。
    要素
    AuthorizationReferenceId 販売事業者が生成するオーソリのユニークなIDです。これはAmazonによって生成される AmazonAuthorizationIdとは異なります。
    SellerAuthorizationNote 購入者へのメールに表示されるトランザクションの説明です。CaptureNowtrueをセットしている場合でのみ表示されます。
    SoftDescriptor CaptureNowtrueをセットしている場合に、この値は購入者の支払明細書に表示されますます。
    TransactionTimeout 非同期オーソリAPI呼び出し:


    TransactionTimeout には最小値5から最大値1440(デフォルト値)分までの値を5の倍数でセットします。

    オーソリがこのタイムリミット内で処理できなかった場合に理由コードを TransactionTimedOutとして失敗します。

    非同期フローを利用する場合は、AuthorizationStatus レスポンス要素は常にPending がセットされます。Amazonによって処理されると、オーソリリクエストの最終ステータスをIPN経由で受け取ります。(例えば、 OpenDeclinedです。)

    同期オーソリAPI呼び出し:

    TransactionTimeout には0(ゼロ)分をセットします。

    AuthorizationStatus は、通常は30秒以内にOpenDeclined ステータスを返します。

    CaptureNowtrueをセットした場合は、オーソリ(Authorize)API呼び出しでの SellerAuthorizationNote の情報は、購入者への支払確認メールと決済レポートに表示されます。
    注意: AuthorizationReferenceId、SellerAuthorizationNote、SoftDescriptorの値は、購入者の金額確認メールとアカウントステータス、購入者の利用明細に表示され、決済とトランザクションレポートにも表示されます。
  2. オーソリの詳細を取得します。AmazonAuthorizationId を利用してGetAuthorizationDetails処理を呼び出すことでオーソリオブジェクトの詳細を要求することができ、それをオーソリのレスポンスとして受け取ります。
    注意: API呼び出しでのエラーハンドリングを導入し、APIレスポンスの結果をテストしなければなりません。詳しい情報はAmazon Pay API呼び出しからのエラーハンドリングを参照してください。

サンプルコード

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

Authorize API呼び出し

 
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.authorize(  
    amazon_order_reference_id='AMAZON_ORDER_REFERENCE_ID',  
    authorization_reference_id='MY_UNIQUE_AUTHORIZATION_ID',  
    amount='1.00',  
    seller_authorization_note='Authorization note.'  
    capture_now=False)

Authorize 非同期API呼び出し

 
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.authorize(  
    amazon_order_reference_id='AMAZON_ORDER_REFERENCE_ID',  
    authorization_reference_id='MY_UNIQUE_AUTHORIZATION_ID',  
    amount='1.00',tio  
    seller_authorization_note='Authorizan note.'  
    transaction_timeout=60,  
    capture_now=False)

Authorize 同期API呼び出し

 
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.authorize(  
    amazon_order_reference_id='AMAZON_ORDER_REFERENCE_ID',  
    authorization_reference_id='MY_UNIQUE_AUTHORIZATION_ID',  
    amount='1.00',  
    seller_authorization_note='Authorization note.'  
    transaction_timeout=0,  
    capture_now=False)

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

Authorize API呼び出し

 
# Authorize  
  
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_order_reference_id = 'AMAZON_ORDER_REFERENCE_ID'  
authorization_reference_id = 'test_authorize_1'  
amount = 106  
  
client.authorize(  
    amazon_order_reference_id,  
    authorization_reference_id,  
    amount,  
    seller_authorization_note: 'Lorem ipsum dolor',  
    mws_auth_token: 'amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE'  
)

Authorize 非同期API呼び出し

 
# Authorize  
  
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_order_reference_id = 'AMAZON_ORDER_REFERENCE_ID'  
authorization_reference_id = 'test_authorize_1'  
amount = 106  
  
client.authorize(  
    amazon_order_reference_id,  
    authorization_reference_id,  
    amount,  
    seller_authorization_note: 'Lorem ipsum dolor',  
    transaction_timeout: 60,  
    mws_auth_token: 'amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE'  
    )

Authorize 同期API呼び出し

 
# Authorize  
  
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_order_reference_id = 'AMAZON_ORDER_REFERENCE_ID'  
authorization_reference_id = 'test_authorize_1'  
amount = 106  
  
client.authorize(  
    amazon_order_reference_id,  
    authorization_reference_id,  
    amount,  
    seller_authorization_note: 'Lorem ipsum dolor',  
    transaction_timeout: 0,  
    mws_auth_token: 'amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE'  
)

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

非同期モードのAuthorize API呼び出し

 
https://mws.amazonservices.com/OffAmazonPayments_Sandbox/2013-01-01  
    ?AWSAccessKeyId=AKIAFBM3LG5JEEXAMPLE  
    &Action=Authorize  
    &AmazonOrderReferenceId=S23-1234567-1234567  
    &AuthorizationAmount.Amount=94.50  
    &AuthorizationAmount.CurrencyCode=USD  
    &AuthorizationReferenceId=test_authorize_1  
    &SellerAuthorizationNote=Authorization for Blue Shoes  
    &SellerId=YOUR_SELLER_ID_HERE  
    &SignatureMethod=HmacSHA256  
    &SignatureVersion=2  
    &Timestamp=2013-11-16T19:01:11Z  
    &TransactionTimeout=60  
    &Version=2013-01-01  
    &Signature=WlQ708aqyHXMkoUBk69Hjxj8qdh3aDcqpY71hVgEXAMPLE

GetAuthorizationDetails API呼び出し

 
POST /OffAmazonPayments/2013-01-01 HTTP/1.1  
    Content-Type: x-www-form-urlencoded  
    Host: mws.amazonservices.com  
    User-Agent: <your user="" agent="" header="">  

    AWSAccessKeyId=AKIAFBM3LG5JEEXAMPLE  
    &Action=GetAuthorizationDetails  
    &AmazonAuthorizationId=P01-1234567-1234567-0000001  
    &SellerId=YOUR_SELLER_ID_HERE  
    &SignatureMethod=HmacSHA256  
    &SignatureVersion=2  
    &Timestamp=2012-11-05T19:01:11Z  
    &Version=2013-01-01  
    &Signature=WlQ708aqyHXMkoUBk69Hjxj8qdh3aDcqpY71hVgEXAMPLE  

参照

その他のシナリオ