Step 6:オーソリ(Authorize)のリクエスト
オーソリ(Authorize)APIの呼び出しは、購入者が購入処理中に選択し、Order Referenceオブジェクトに保存された支払方法に対して指定した購入金額を確保します。
オーソリに成功した場合は、AuthorizationStatusがOpen であるオーソリオブジェクトが生成されます。これは次のステップの購入金額の請求が許可されます。オーソリオブジェクトは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についての追加の情報は「オーソリ失敗のハンドリング」を参照してください。
処理内容
次の内容でオーソリをリクエストします。
-
オーソリ(Authorize) APIを呼び出します。オーソリリクエストに次の値をセットします。
要素 値 AuthorizationReferenceId 販売事業者が生成するオーソリのユニークなIDです。これはAmazonによって生成される AmazonAuthorizationIdとは異なります。 SellerAuthorizationNote 購入者へのメールに表示されるトランザクションの説明です。CaptureNowに trueをセットしている場合でのみ表示されます。 SoftDescriptor CaptureNow に trueをセットしている場合に、この値は購入者の支払明細書に表示されますます。 TransactionTimeout 非同期オーソリAPI呼び出し:
TransactionTimeout には最小値5から最大値1440(デフォルト値)分までの値を5の倍数でセットします。
オーソリがこのタイムリミット内で処理できなかった場合に理由コードを TransactionTimedOutとして失敗します。
非同期フローを利用する場合は、AuthorizationStatus レスポンス要素は常にPending がセットされます。Amazonによって処理されると、オーソリリクエストの最終ステータスをIPN経由で受け取ります。(例えば、 OpenやDeclinedです。)
同期オーソリAPI呼び出し:
TransactionTimeout には0(ゼロ)分をセットします。
AuthorizationStatus は、通常は30秒以内にOpenかDeclined ステータスを返します。
CaptureNow にtrueをセットした場合は、オーソリ(Authorize)API呼び出しでの SellerAuthorizationNote の情報は、購入者への支払確認メールと決済レポートに表示されます。 -
オーソリの詳細を取得します。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
参照
- Amazon Pay APIリファレンスのAuthorize
- Amazon Pay APIリファレンスのオーソリ状態と理由コード
- Step 5: 注文詳細のセットと確認
その他のシナリオ
- オーソリ失敗のハンドリング
- 売上請求(Capture)とオーソリ(Authorize)で即時請求
- 注文完了後の支払変更のハンドリングの「最初の注文金額以上の請求」