使用测试帐户在Authorize.net上测试退款?

时间:2009-08-11 07:00:57

标签: transactions e-commerce payment-gateway payment authorize.net

我正在开发一个使用Authorize.net但我目前正在使用测试帐户的网站。要测试退款,它需要一个唯一的交易ID,但由于我只使用测试帐户,因此在您进行测试交易时,它不会返回唯一的交易ID(始终为2147483647)。还有另一种方法可以使用吗?我需要查看我的代码是否适用于API。

3 个答案:

答案 0 :(得分:1)

无论您使用什么代码来解析Authorize.net在成功交易后将该事务ID转换为整数后给您的“交易ID”。它应该被视为一个字符串,而不是整数。在2008年,Authorize声明他们正在从一个整数切换到一个基于字符串的事务ID,因为它们用完了32位整数。

2147483647是32位二进制位可以产生的最大的10位整数(1111 1111 1111 1111 1111 1111 1111 1111)。这意味着Authorize返回了一个交易ID> 2147483647(例如3000000000)并且您的编程语言将位截断为允许的最大值,2147483647。

检查您的PHP代码并确保将事务ID转换为字符串。可以肯定的是,您可能希望仔细检查代码并自行投射。例如:

(string)$transaction_id

还要确保您的代码不会自动将字符串转换为整数。例如:

$transaction_id + 1

最后,如果正在从数据库中读取事务ID,请确保数据库将事务ID存储为字符串数据类型。例如,使用mysql,使用CHAR或VARCHAR并使其大于10.尝试16或24是安全的。

参考文献:

答案 1 :(得分:1)

如果您要将您的请求发布到https://test.authorize.net/gateway/transact.dll,那么您将始终收到0作为transaction_id。

所以简而言之,您需要一个真实账户来测试您的退款。 您可以设置x_test_request = TRUE并发布到https://secure.authorize.net/gateway/transact.dll并检查您是否获得有效的交易ID。 但是,您需要一个有效的Live帐户和Authorize.Net才能将交易发布到Live URL

答案 2 :(得分:0)

要获取事务ID,在测试模式下发送事务请求时,需要在请求参数列表中设置:

x_test_request=FALSE

然后你会得到正确的身份