Authorize.net 接受托管和客户资料

Posted

技术标签:

【中文标题】Authorize.net 接受托管和客户资料【英文标题】:Authorize.net Accept Hosted & Customer Profiles 【发布时间】:2018-02-08 05:52:34 【问题描述】:

背景:

我正在创建我的第一个 Authorize.net Accept Hosted 解决方案。该计划是使用商家的自定义 php 购物车来收集送货、账单地址,然后出示托管表格来收取付款。许多客户将是没有在 PHP 购物车中生成客户资料的“来宾”客户。

我已经使用 CURL 成功创建了一个 XML 令牌请求,并使用返回令牌来请求支付表单并填充 iframe。

问题:

我们希望将输入购物车的账单/运输信息传递给 Auth.net,这样客户就无需重新输入信息。我能够找到的文档/示例需要使用 SDK 创建客户资料才能执行此操作。

有没有更简单的方法?

我的问题:

    我们可以通过令牌请求中的运输/计费吗? 我们可以通过表单请求中的运输/计费吗? 关于如何在不创建单独的客户资料交易的情况下传递此帐单/运输信息的任何其他建议? 如果我们必须为每笔交易创建客户档案,我们是否可以在不整合整个 SDK 的情况下使用 XML/CURL 创建客户档案?

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

是的,您可以将帐单和送货地址信息传递给令牌请求,然后将其预先填充为以下形式:

<getHostedPaymentPageRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
   <merchantAuthentication>
      <name>YOUR_LOGIN_ID</name>
      <transactionKey>YOUR_TRANSACTION_KEY</transactionKey>
   </merchantAuthentication>
   <transactionRequest>
      <transactionType>authCaptureTransaction</transactionType>
      <amount>20.00</amount>
      <billTo>
         <firstName>Ellen</firstName>
         <lastName>Johnson</lastName>
         <company>Souveniropolis</company>
         <address>14 Main Street</address>
         <city>Pecan Springs</city>
         <state>TX</state>
         <zip>44628</zip>
         <country>USA</country>
      </billTo>
      <shipTo>
         <firstName>China</firstName>
         <lastName>Bayles</lastName>
         <company>Thyme for Tea</company>
         <address>12 Main Street</address>
         <city>Pecan Springs</city>
         <state>TX</state>
         <zip>44628</zip>
         <country>USA</country>
      </shipTo>
   </transactionRequest>
   <hostedPaymentSettings>
      <setting>
         <settingName>hostedPaymentBillingAddressOptions</settingName>
         <settingValue>"show": true, "required":true</settingValue>
      </setting>
      <setting>
         <settingName>hostedPaymentButtonOptions</settingName>
         <settingValue>"text": "Pay"</settingValue>
      </setting>
      <setting>
         <settingName>hostedPaymentReturnOptions</settingName>
         <settingValue>"url":"https://www.mystore.com/good","urlText":"Continue","cancelUrl":"https://www.mystore.com/cancel","cancelUrlText":"Cancel"</settingValue>
      </setting>
      <setting>
         <settingName>hostedPaymentShippingAddressOptions</settingName>
         <settingValue>"show": true, "required":true</settingValue>
      </setting>
   </hostedPaymentSettings>
</getHostedPaymentPageRequest>

是的,您也可以使用 XML/CURL 创建客户资料,而无需整合整个 SDK。

【讨论】:

我发现这种方法的问题是,一旦在结帐表格中预先填写了地址,客户就可以更改地址。我根据收货地址计算销售税,如果在税后更改地址时会出现问题。似乎没有办法在不使其在结帐表单中可供编辑的情况下传递地址。见this post。

以上是关于Authorize.net 接受托管和客户资料的主要内容,如果未能解决你的问题,请参考以下文章

Authorize.net CIM 重复交易窗口

在 ASP.NET 中接受信用卡的最佳方式是啥? (在 ASP.NET 和 Authorize.NET 之间)

E00114 在 Authorize.net 中使用接受 JS 创建带有付款随机数的订阅时,OTS 令牌无效

如何在 authorize.net 中设置试用期间隔?

如何通过 ActiveMerchant::AuthorizeNetCimGateway 在我的客户付款资料中保存名称?

authorize.net 是不是提供 webhook 来处理 ARB 失败的付款?