私は現在、支払いに payeezy/firstdata を使用するサイトを開発しています。API ドキュメントが弱いため、統合は非常に面倒でした。
ColdFusion と cfhttp リクエストを使用しています。これに従って、コンテンツ ダイジェストと hmac ハッシュを計算しました: https://support.payeezy.com/hc/en-us/articles/203731149-API-Security-HMAC-Hash
デモ端末で計算されたハッシュと一致するハッシュを最終的に取得しましたが、私の問題は次のとおりです。リクエストを送信するときに奇妙なエラーが発生します。エラーが発生します:
「無効な署名が 'Fgx/lR############' を受け取りました。」
最初の数文字は毎回変わります。リクエストのコードは次のとおりです。
postAction = https://api.demo.globalgatewaye4.firstdata.com/transaction/v19 key_id、hmac_value、content_digest はすべてテスト済みで正しいです x_time = getIsoTimeString( now() )
<cfhttp url="#postAction#" method="POST">
<cfhttpparam name="Authorization" type="header" value="CGGE4_API #key_id#:#hmac_value#">
<cfhttpparam name="x-gge4-date" type="header" value="#x_time#">
<cfhttpparam name="x-gge4-content-sha1" type="header" value="#LCase(content_digest)#">
<cfhttpparam name="content-type" type="header" value="text/xml">
<cfhttpparam name="accept" type="header" value="text/xml">
<cfhttpparam name="transaction_body" type="xml" value="#exact_xml#" />
</cfhttp>
<cfdump var="#cfhttp.fileContent#"><cfabort>
送信された xml (スペースまたは改行なし)
<Transaction>
<ExactID>#exact_id#</ExactID>
<Password>#password#</Password>
<Card_Number>#FORM.x_card_num#</Card_Number>
<CardHoldersName>#FORM.x_first_name# #FORM.x_last_name#</CardHoldersName>
<Transaction_Type>00</Transaction_Type>
<Expiry_Date>#FORM.x_exp_date#</Expiry_Date>
<DollarAmount>#amount#</DollarAmount>
<Address>
<Address1>#FORM.x_address#</Address1>
<City>#FORM.x_city#</City>
<Zip>#FORM.x_zip#</Zip>
</Address>
</Transaction>
認証ヘッダーを「Payeezy_Gateway_API #key_id#:#hmac_value#」に変更しました。使用されている hmac 値とキー ID が payeezy 端末で何度もテストされていると、「Bad Authorization Header」というエラーが表示されます。
どうぞ、どんな助けでも大歓迎です!