在Authorize.net和Accept.js中免费存储客户信息?

Store customer information without charge in Authorize.net and Accept.js?

我正在使用 Authorize.net 并花了几天时间查看文档,但对于我来说,我似乎无法找到一种方法来存储客户的信用卡信息,而无需卡击中我们的服务器。

Accept.js documentation 中,他们似乎授予了一个可用 15 分钟的随机数,但我看不到使用该随机数来存储卡的方法。有什么方法可以使用他们的 JS 库来创建客户吗?

这看起来应该是非常基本的东西,但不知为何,我找不到它。

通过将指定卡数据的支付对象替换为使用随机数,随机数或一次性令牌可用于创建客户资料:

使用createCustomerProfileRequest时,将支付对象从指定卡数据更改为如下:

 <payment>
      <creditCard>
        <cardNumber>4111111111111111</cardNumber>
        <expirationDate>2020-12</expirationDate>
      </creditCard>
 </payment>

并更改支付对象以使用随机数:

  <payment>
     <opaqueData>
        <dataDescriptor>COMMON.ACCEPT.INAPP.PAYMENT</dataDescriptor>
        <dataValue>nonce_here</dataValue >
     </opaqueData>
  </payment>

Authorize.net 声明您可以在任何可以使用银行信息或信用卡信息的地方使用来自 access.js 的 Nonce。但是文档很不清楚。

我花了一分钟才找到它,但您正在使用其中一个 SDK,然后您可以在存储库中查看有关如何创建 opaqueData 对象并将其传递到支付对象的示例。

Python example of creating a payment transaction with a nonce

使用Access.js捕获Opaque对象,(成功时的return值)然后将其传递给服务器,它包含dataValue(nonce)和dataDescriptor。然后按照有关如何创建付款资料的示例项目示例进行操作,但将付款信息替换为以下内容。

# PYTHON EXAMPLE

opaqueData = apicontractsv1.opaqueDataType()
opaqueData.dataDescriptor = "COMMON.ACCEPT.INAPP.PAYMENT"

# This is the nonce you get back from the server. This particular one 
# is from the example I linked above but shortened to fit the width of 
# this view.
opaqueData.dataValue = "119eyJjb2RlIjoiNTBfMl8wNjAwMDUyN0J..."

# Add the payment data to a paymentType object
payment = apicontractsv1.paymentType()
payment.opaqueData = opaqueData

# Now you can use this payment object anywhere you'd use the typical 
# creditcard or bankinfo payment objects. Including creating payment profiles.