【问题标题】:Store customer information without charge in Authorize.net and Accept.js?在 Authorize.net 和 Accept.js 中免费存储客户信息?
【发布时间】:2017-09-24 12:46:02
【问题描述】:

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

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

这似乎应该是很基本的东西,但无论出于何种原因,我都找不到它。

【问题讨论】:

  • 你找到答案了吗?我还想知道如何使用我自己的表单而不是 Authorize.net 的托管表单来创建 CIM 客户资料和 CIM 客户付款资料。我在 accept.js 文档中没有看到任何接近显示如何完成的内容。
  • 此问题中链接的文档包含回答此问题所需的一切。 (也许文档自 2017 年以来已更新)

标签: payment-gateway authorize.net


【解决方案1】:

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

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

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

并更改支付对象以使用 nonce:

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

【讨论】:

  • 这个答案非常令人困惑。您描述的 XML 标记似乎与 accept.js library 完全没有关系。此处的原始发帖人询问如何使用 Javascript 库创建客户付款配置文件,而您的回复令人困惑地引用了一些 XML,没有提及从提供的卡数据创建 CIM 配置文件所需的 Javascript。
  • @S.Imp 据我了解,Accept.js 库返回一个随机数。这个随机数可以用于各种事情。其中之一是通过 服务器端 API 创建 CIM 配置文件。我们目前使用 PHP SDK 来创建 CIM 配置文件,并且正在调查(如本答案中所述)使用 Accept.js nonce (opaqueData) 而不是实际的信用卡数据。 Accept.js 库生成随机数,此处显示的 XML 与 Authorize.net API 一起用于创建 CIM 配置文件。
【解决方案2】:

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

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

Python example of creating a payment transaction with a nonce

使用 Access.js 捕获 Opaque 对象,(成功时的返回值)然后将其传递给服务器,它包含 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.

【讨论】:

    猜你喜欢
    • 2017-07-20
    • 2018-05-19
    • 2017-12-15
    • 2018-09-07
    • 2017-05-21
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多