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

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

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

最佳答案

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

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

检查您的 PHP 代码并确保将交易 ID 的值转换为字符串。可以肯定的是,您可能想要检查您的代码并自己进行转换。例如:

(string)$transaction_id

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

$transaction_id + 1

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

引用资料:

关于transactions - 使用测试帐户在 Authorize.net 上测试退款?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1258793/

相关文章:

.net - 在数据库外实现事务的模式

java - @Transactional 处理 Spring 中的任何异常

android - Ormlite Android 批量插入

javascript - 如何扩展Vue Storefront核心模块

paypal - 如何验证 PayPal 中的沙盒商家帐户?

java - Spring Batch - 提交间隔和跳过限制

c# - 如何为一种产品设置多个价格(nopcommerce)

php - 将用户发送到预填充的亚马逊购物车结账处

paypal - 如何使用 Paypal 或 Stripe 自动为帐户充值

payment-gateway - 通过西联汇款