1

试图了解 Cyber​​Source 的工作原理。

在 Cyber​​Source 中,Secure Acceptance 灵活令牌 API 可用于在客户端对信用卡进行令牌化处理,以供将来处理。

那部分很容易。有很多文档和一些包可以做到这一点。

然后如何使用该令牌通过 Cyber​​Source Payments API 创建费用?

我发现的所有示例都显示了如何在客户端对卡进行标记,以及如何对未标记的卡进行收费(即卡数据发送到服务器),但我找不到显示如何使用灵活令牌创建的示例收费(或预授权)。

在大多数其他网关(如 Stripe)中,文档中非常清楚,但 Cyber​​Source 似乎没有提供。

我错过了什么吗?

我正在使用 Node,但对其他语言的解决方案感到满意。

https://developer.cybersource.com/api-reference-assets/index.html#flex

https://developer.visa.com/capabilities/cybersource/reference

4

1 回答 1

2

好的,感谢@rhldr 指出这个特定的文档。

答案在此页面https://developer.cybersource.com/api/developer-guides/dita-flex/SAFlexibleToken/FlexMicroform/GetStarted.html的“使用令牌”下。

注意:其他一些文档(不知道为什么它们有许多文档变体),就像这个一样,根本没有提到这一点。

请参阅 RESTPaymentAPI 部分。它需要作为 customerId 字段提供。

"paymentInformation": {
    "customer": {
        "customerId": "7500BB199B4270EFE05340588D0AFCAD"
    }
}

这是一个如何在 API 端实现它的最小示例

var cybersourceRestApi = require('cybersource-rest-client');
var configuration = require('./cybersource/config.js');

var configObject = new configuration();
var instance = new cybersourceRestApi.PaymentsApi(configObject);

var clientReferenceInformation = new cybersourceRestApi.Ptsv2paymentsClientReferenceInformation();
clientReferenceInformation.code = 'test_payment';

var processingInformation = new cybersourceRestApi.Ptsv2paymentsProcessingInformation();
processingInformation.commerceIndicator = 'internet';

var amountDetails = new cybersourceRestApi.Ptsv2paymentsOrderInformationAmountDetails();
amountDetails.totalAmount = "100.00";
amountDetails.currency = 'USD';

var orderInformation = new cybersourceRestApi.Ptsv2paymentsOrderInformation();
orderInformation.amountDetails = amountDetails;


var paymentInformation = new cybersourceRestApi.Ptsv2paymentsPaymentInformation();

// THIS IS THE IMPORTANT BIT
var customer = new cybersourceRestApi.Ptsv2paymentsPaymentInformationCustomer()
customer.customerId = token
paymentInformation.customer = customer

var request = new cybersourceRestApi.CreatePaymentRequest();
request.clientReferenceInformation = clientReferenceInformation;
request.processingInformation = processingInformation;
request.orderInformation = orderInformation;
request.paymentInformation = paymentInformation;

if (!authoriseOnly) {
    request.processingInformation.capture = true;
}

基于 Cyber​​Source nodejs REST 示例的代码:https ://github.com/Cyber​​Source/cybersource-rest-samples-node


更多信息。一旦你知道在哪里看,它实际上在几个地方得到了解释。

例如,转到https://developer.cybersource.com/cybs-dev-api-ref/index.html#payments-process-a-payment,展开下面的“请求字段描述”并转到

customer         
    .. customerId    

客户卡和账单信息的唯一标识符。

当您使用支付标记化或定期计费并在您的请求中包含此值时,授权或信用通常需要的许多字段将变为可选字段。

注意当您使用支付令牌化或定期计费时,客户 ID 的值实际上是客户的 Cyber​​source 支付令牌。该令牌存储消费者卡号等信息,因此可用于账单支付、定期支付或一次性支付。通过在支付 API 请求中使用此令牌,商家无需在请求本身中传递卡号或到期日期等数据。

请参阅第 222 页的“支付标记化”和第 225 页的“定期计费”。

于 2019-06-01T03:15:27.893 回答