1

getHostedPaymentPageRequest仅提供两种类型的事务来使用以下 XML 为表单生成令牌。

两种交易类型:

  1. authCaptureTransaction
  2. authOnlyTransaction
<getHostedPaymentPageRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
  <merchantAuthentication>
    <name>5KP3u95bQpv</name>
    <transactionKey>346HZ32z3fP4hTG2</transactionKey>
  </merchantAuthentication>
  <transactionRequest>
    <transactionType>authCaptureTransaction</transactionType>
    <amount>20.00</amount>
    <profile>
      <customerProfileId>123456789</customerProfileId>
    </profile>
    <customer>
      <email>ellen@mail.com</email>
    </customer>
    <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>
  </transactionRequest>
  <hostedPaymentSettings>
    <setting>
      <settingName>hostedPaymentReturnOptions</settingName>
      <settingValue>{"showReceipt": true, "url": "https://url-when-continue-button-clicked/receipt", "urlText": "Continue", "cancelUrl": "https://url-when-cancel-button-clicked.com/cancel", "cancelUrlText": "Cancel"}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentButtonOptions</settingName>
      <settingValue>{"text": "Pay"}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentStyleOptions</settingName>
      <settingValue>{"bgColor": "blue"}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentPaymentOptions</settingName>
      <settingValue>{"cardCodeRequired": false, "showCreditCard": true, "showBankAccount": true}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentSecurityOptions</settingName>
      <settingValue>{"captcha": false}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentShippingAddressOptions</settingName>
      <settingValue>{"show": false, "required": false}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentBillingAddressOptions</settingName>
      <settingValue>{"show": true, "required":false}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentCustomerOptions</settingName>
      <settingValue>{"showEmail": false, "requiredEmail": false, "addPaymentProfile": true}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentOrderOptions</settingName>
      <settingValue>{"show": true, "merchantName": "G and S Questions Inc."}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentIFrameCommunicatorUrl</settingName>
      <settingValue>{"url": "https://url-contianing-iframe"}</settingValue>
    </setting>
  </hostedPaymentSettings>
</getHostedPaymentPageRequest>

我应该如何修改 XML 以便获得定期计费表单?因为我没有在接受托管中找到任何实现示例来获取有效的表单令牌以进行定期计费。没有提到对接受托管文档进行定期计费。

另外,我使用的是重定向方法而不是 iframe 方法来显示不返回任何响应的表单。

4

1 回答 1

0

没有一种通过托管表单创建订阅的表单。幸运的是,有人已经在他们的论坛上发布了如何执行此操作,我将在此处重新发布:

如果您尝试使用接受托管表单来创建订阅,您实际上不会使用托管支付页面,此处描述。

正确的工作流程是使用 API 请求客户资料:createCustomerProfileRequest. 您只需要他们的电子邮件地址。

从该调用中获取配置文件 ID 后,您为接受托管的添加配置文件表单请求令牌。此表格和其他表格的文档在此处。我什至没有意识到这些形式的存在。即使您知道要查找的内容,也很难在 Google 中找到它们。

您需要客户资料 ID 来获取“添加付款资料”表单的令牌。

由于您从您设置的 IFrameCommunicator 页面获取响应,因此您在客户端处理对此表单的响应(它对付款表单或这些客户资料类型表单的工作方式相同)。 这是一个示例

然后我调用服务器端代码以使用 api 创建订阅 - 我将客户资料 ID 传递给它,因为老实说,我不知道表单是否返回新创建的付款资料 ID。如果您有客户资料 ID,则可以检索任何现有的付款资料。因此,仅使用客户资料 ID,我拨打电话以获取付款资料 ID - getCustomerProfileRequest。该调用会返回各种内容,包括付款资料。我只抢第一个。现在有了客户资料 ID 和付款资料 ID,我可以创建订阅 - ARBCreateSubscriptionRequest。有一些示例可以帮助您正确地形成订阅。

最后说明:如果您在沙盒中测试,则需要在获取付款配置文件 ID 和使用 api 获取订阅之间延迟 20 秒。沙盒没有实时处理这些事务的资源。弄清楚这一点花了我几个小时。您可以通读这篇文章以确认,虽然它较旧,但它仍然是正确的:

https://community.developer.authorize.net/t5/Integration-and-Testing/E00040-when-Creating-Subscription-from-Customer-Profile/mp/59597#M34176

于 2020-04-27T12:42:31.247 回答