如何用XML获取Authorize.Net表单令牌以实现跳转至其托管支付页?
你需要对接的是Authorize.Net的**托管支付表单(Hosted Payment Form)**功能,以下是完全匹配你需求的流程示例:
一、生成托管表单令牌(XML请求)
使用你提供的测试地址 https://apitest.authorize.net/xml/v1/request.api,发送POST请求,请求体为XML格式,用于获取跳转所需的令牌:
<?xml version="1.0" encoding="utf-8"?> <createTransactionRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"> <merchantAuthentication> <name>你的API登录ID</name> <transactionKey>你的交易密钥</transactionKey> </merchantAuthentication> <transactionRequest> <transactionType>authCaptureTransaction</transactionType> <amount>10.00</amount> <!-- 替换为实际交易金额 --> <hostedPaymentSettings> <setting> <settingName>hostedPaymentReturnUrl</settingName> <settingValue>https://你的域名/支付成功回调页</settingValue> </setting> <setting> <settingName>hostedPaymentCancelUrl</settingName> <settingValue>https://你的域名/支付取消回调页</settingValue> </setting> <setting> <settingName>hostedPaymentButtonText</settingName> <settingValue>完成支付</settingValue> </setting> <!-- 可添加更多自定义设置,比如是否显示账单地址等 --> </hostedPaymentSettings> </transactionRequest> </createTransactionRequest>
请求成功后,你会收到包含hostedPaymentReturnToken的响应,这个令牌就是跳转托管页的核心参数:
<?xml version="1.0" encoding="utf-8"?> <createTransactionResponse xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"> <messages> <resultCode>Ok</resultCode> <message> <code>I00001</code> <text>Successful.</text> </message> </messages> <transactionResponse> <responseCode>1</responseCode> <authCode>XXXXXX</authCode> <!-- 其他响应字段 --> </transactionResponse> <hostedPayment> <hostedPaymentReturnToken>生成的令牌值</hostedPaymentReturnToken> <hostedPaymentUrl>https://accept.authorize.net/payment/payment?token=生成的令牌值</hostedPaymentUrl> </hostedPayment> </createTransactionResponse>
二、跳转至Authorize.Net托管支付页
拿到hostedPaymentReturnToken后,你可以通过两种方式引导用户进入托管支付页面:
方式1:自动提交表单
<form id="paymentForm" method="post" action="https://accept.authorize.net/payment/payment"> <input type="hidden" name="token" value="拿到的hostedPaymentReturnToken"> </form> <script> document.getElementById('paymentForm').submit(); </script>
方式2:直接跳转URL
引导用户点击链接或自动跳转:
<a href="https://accept.authorize.net/payment/payment?token=拿到的hostedPaymentReturnToken">前往Authorize.Net完成支付</a>
关键说明
- 测试环境使用
apitest.authorize.net相关地址,生产环境替换为api.authorize.net(支付地址accept.authorize.net保持不变) - 可通过
hostedPaymentSettings自定义托管表单的显示内容、回调规则,比如设置是否收集账单地址、自定义表单标题等 - 支付完成/取消后,Authorize.Net会跳转你设置的回调地址,并携带交易结果参数,可在回调页验证交易状态
内容的提问来源于stack exchange,提问作者Mountain Development
相关产品推荐
相关产品推荐

