Пытаюсь понять, как работает CyberSource..
В CyberSource API Secure Acceptance Flexible Token можно использовать для токенизации кредитной карты на стороне клиента для обработки в будущем.
Эта часть достаточно проста. Есть много документации и несколько пакетов, которые это делают.
Как затем использовать этот токен для создания платежа с помощью CyberSource Payments API?
Все примеры, которые я нашел, показывают, как токенизировать карту на клиенте и как заряжать нетокенизированную карту (т. е. данные карты отправляются на сервер), но я не могу найти пример, показывающий, как использовать гибкий токен для создания зарядка (или предварительная аутентификация).
В большинстве других шлюзов, таких как Stripe, это довольно ясно описано в документации, но CyberSource, похоже, не предоставляет этого.
Я что-то пропустил?
Я использую Node, но доволен решениями на других языках.
https://developer.cybersource.com/api-reference-assets/index.html#flex
https://developer.visa.com/capabilities/cybersource/reference
@rhldr О, вау .. Я проверил все документы и искал ссылку, чтобы указать, что в нем никогда не объясняется, как использовать его конкретно с API, и на самом деле это происходит в этом ..
Документ, на который ссылается @rhldr, похоже, не содержит данных о с использованием токене, созданном с помощью Flex.
@MattMc это так, это как бы похоронено в нем. Смотрите мой ответ ниже..
@Бен а! Теперь вижу, спасибо. Не на той странице, на которую он ссылался, а на той, которую сделали вы.
Хорошо, спасибо @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;
}
Код на основе образцов REST узлов CyberSource: https://github.com/CyberSource/cybersource-rest-samples-node
Больше информации. Как только вы знаете, где искать, это на самом деле объясняется в нескольких местах.
Например, перейдите к https://developer.cybersource.com/cybs-dev-api-ref/index.html#payments-process-a-payment, разверните «ОПИСАНИЕ ПОЛЯ ЗАПРОСА» внизу и перейдите к
customer
.. customerId
Unique identifier for the customer's card and billing information.
When you use Payment Tokenization or Recurring Billing and you include this value in your request, many of the fields that are normally required for an authorization or credit become optional.
NOTE When you use Payment Tokenization or Recurring Billing, the value for the Customer ID is actually the Cybersource payment token for a customer. This token stores information such as the consumer’s card number so it can be applied towards bill payments, recurring payments, or one-time payments. By using this token in a payment API request, the merchant doesn't need to pass in data such as the card number or expiration date in the request itself.
See "Payment Tokenization," page 222, and "Recurring Billing," page 225.
Я столкнулся с той же проблемой. Я сгенерировал токен в Cyber Source iOS SDK, и токен представляет собой строку в кодировке base 64 (очень длинную). Как вы сказали, нам нужно указать токен в идентификаторе клиента, я пробовал то же самое, но он говорит неверные данные. Я вижу, что ваш токен маленький и не закодирован в base64, но мой. Итак, не могли бы вы рассказать мне, как вы получили этот небольшой платежный токен?
@Deeps на Frontend я использовал их Flex SDK для генерации ключа на стороне клиента. Я на веб-платформе, а не на iOS. Я не уверен, что такое эквивалент. Токенизация карты должна происходить на стороне клиента, а не на вашем сервере.
Вы читали Руководство разработчика Flex? developer.cybersource.com/api/developer-guides/dita-flex/…