你需要什么
| 字段 | 它做什么 |
|---|---|
| API Login ID | 在 API 调用上标识你的账户。与 Transaction Key 配对使用。 |
| Transaction Key | API 认证机密的那一半。与 Login ID 一起,它生成每一个付款表单。机密。 |
| Signature Key | 确认一个 webhook 确实来自 Authorize.Net。与 Transaction Key 不同。机密。 |
| 成功网址 / 取消网址 | 买家在付款或退出后落到哪里。 |
API Login ID 和 Transaction Key 总是成对出现。Signature Key 是独立的。
我们为什么要每个字段
API Login ID
在 API 调用上为你的账户命名。它只有在与 Transaction Key 配对时才有效。
Transaction Key
证明一个 API 请求属于你的机密。与 API Login ID 一起,它让我们构建托管付款表单,使扣款通过你的账户进行。
Signature Key
证明一个传入的 webhook 真的来自 Authorize.Net,于是没人能伪造一个“已付款”事件。它是一个与 Transaction Key 不同的值。
成功与取消网址
普通设置:买家在付款或退出后落到哪里。非机密。
设置
- 创建一个免费的沙盒账户(无需付款)
你不需要付费商户账户就能测试。Authorize.Net 提供一个镜像生产环境的免费沙盒,无需信用卡。
- 去 developer.authorize.net/hello_world/sandbox.html 注册一个沙盒账户。用那个链接,而不是主注册或价格页(那是付费的正式申请)。
- 在 sandbox.authorize.net 登录沙盒商户界面(Merchant Interface)。
签名方案与生产环境完全相同,所以你在沙盒里验证过的任何东西,在正式里的行为都一样。
- 复制你的三项凭据
沙盒和正式的路径相同:Account → Settings → Security Settings → General Security Settings → API Credentials and Keys。
- API Login ID 显示在顶部。
- Transaction Key:选择“New Transaction Key”,确认,然后立即复制(它只显示一次)。
- Signature Key:选择“New Signature Key”,确认,然后立刻复制。
Account → Settings → Security Settings → API Credentials and Keys - 添加 webhook
- Account → Settings → Business Settings → Webhooks,添加一个端点。
- 把端点 URL 设为你的项目 webhook 地址(见下)。
- 订阅事件。一次性付款:net.authorize.payment.authorization.created、authcapture.created、capture.created、priorAuthCapture.created、refund.created、void.created,以及 fraud.* 事件(held、approved、declined)。订阅(自动定期计费 ARB):net.authorize.customer.subscription.* 事件。续费会以 authcapture.created 到达,已涵盖。多选的事件无害。
- 保存。Authorize.Net 用你的 Signature Key 对每一次投递签名。
https://api.coinmoebius.com/webhook/authorizenet/<your project id>Account → Settings → Business Settings → Webhooks Coin Moebius 把每个事件 id 记录一次并忽略重复,所以重放的 webhook 已替你处理好。
- 用沙盒卡测试
沙盒卡永远不会扣真卡。用任意未来的有效期(例如 12/2030)和任意 CVV(3 位,American Express 为 4 位)。
卡网络 卡号 Visa 4111111111111111 Mastercard 5424000000000015 American Express 370000000000002 Discover 6011000000000012 - 在后台里连接
添加渠道 → Authorize.Net。输入成功网址、取消网址,以及正式组(API Login ID、Transaction Key、Signature Key)。添加可选的沙盒组以便测试。沙盒组要么全填要么全不填:三个字段全有,或一个都没有。正式和沙盒各自分别检查。
连接之后
上线前跑一笔测试付款:
- 创建一个商品,并把它的环境设为 Testing。这会让该商品跑在你的沙盒凭据上,于是你可以下一整单而不动真钱。(如果你跳过了沙盒组,一个 Testing 商品会回退到正式,所以请先添加它。)
- 把买按钮放到一个页面上(本地 HTML 文件也行),指向你的项目。
- 用上面的一张沙盒测试卡完成结账。
- 打开“交易”标签。一行带 Testing 标签的新行出现。当它的状态到达 succeeded 时,你的凭据和 webhook 就都端到端工作了。
准备好接收真实付款时,把商品环境切换到 Live。
问题排查
从“验证”开始。在后台里,点击“验证”(沙盒组则是“验证测试凭据”)来核对你的 API Login ID 和 Transaction Key。
验证失败。
API Login ID 和 Transaction Key 必须是同一个账户(正式或沙盒)的那一对。把两者都重新复制一遍。
签名校验失败。
Signature Key 是一个与 Transaction Key 不同的值。从同一个界面复制 Signature Key。该方案在沙盒和正式里完全相同。
付款完成了,但订单仍停在待处理。
确认 webhook URL 完全一致,且你订阅了付款事件。
一个测试商品扣了一张正式卡。
当没有配置完整的沙盒组时,一个被标记为测试的商品会回退到你的正式凭据。把三个沙盒字段全部添加,或取消该商品的测试标记。
端到端确认一下。
Authorize.Net 只对处于非活跃状态的 webhook 发送 ping:把端点设为非活跃,发一个 ping,然后重新激活它,并看着订单更新。
值得了解
Token 是短命的. 托管表单 token 大约持续 15 分钟。我们为每次结账生成一个新的。
币种. Authorize.Net 主要是一个美国、美元网关。非美元取决于你的处理机构协议。
轮换密钥. 随时生成一个新的 Transaction Key 或 Signature Key,然后粘进去。编辑时机密字段保持空白。
有问题? Join our Discord