3


1

Authorize.netを使用するWebサイトを開発していますが、現在テストアカウントを使用しています。 払い戻しをテストするには一意の取引IDが必要ですが、テストアカウントを使用しているだけなので、テスト取引を行ったときに一意の取引IDは返されません(常に2147483647)。 これが機能するための別の方法はありますか? 私のコードがAPIで機能するかどうかを確認する必要があります。

3 Answer


1


成功したトランザクションの後にAuthorize.netがあなたに返す「トランザクションID」を解析するためにあなたが使っているどんなコードでもそのトランザクションIDを整数に変換しています。 整数ではなく文字列として扱う必要があります。 2008年、Authorizeは、32ビット整数を使い果たしたため、整数から文字列ベースのトランザクションIDに切り替えることを宣言しました。

2147483647は、32の2進数ビット(1111 1111 1111 1111 1111 1111 1111 1111 1111)で作成できる最大10進整数です。 これは、Authorizeが> 2147483647(たとえば3000000000)のトランザクションIDを返し、プログラミング言語が許容される最大値(2147483647)にビットを切り捨てていることを意味します。

PHPコードを調べて、トランザクションIDが値を文字列としてキャストしていることを確認してください。 念のために言うと、あなたは自分のコードを調べて自分自身でキャストすることをお勧めします。 例えば:

(文字列)$ transaction_id

また、コードが自動的に文字列を整数としてキャストするようなことをしていないことを確認してください。 例えば:

$ transaction_id 1

最後に、トランザクションIDがデータベースから読み取られている場合は、データベースがトランザクションIDを文字列データ型として格納していることを確認してください。 たとえば、mysqlでは、CHARまたはVARCHARを使用して、それを10より大きくします。 安全を期すために16または24を試してください。

参考文献:


1


だから要するにあなたの返金をテストするにはライブアカウントが必要になります。 x_test_request = TRUEに設定してhttps://secure.authorize.net/gateway/transact.dllに投稿し、有効なトランザクションIDが返ってきたかどうかを確認することができます。 ただし、Live URLにトランザクションを投稿するには、Authorize.Netの有効なLiveアカウントが必要です。


0


テストモードでトランザクションリクエストを送信しながらトランザクションIDを取得するには、リクエストパラメータリストを設定する必要があります。

x_test_request = FALSE

あなたは正しいIDを取得します