Как в CyberSource использовать гибкий токен кредитной карты с платежным API?

Пытаюсь понять, как работает 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

Вы читали Руководство разработчика Flex? developer.cybersource.com/api/developer-guides/dita-flex/…

rhldr 01.06.2019 03:05

@rhldr О, вау .. Я проверил все документы и искал ссылку, чтобы указать, что в нем никогда не объясняется, как использовать его конкретно с API, и на самом деле это происходит в этом ..

Ben 01.06.2019 05:03

Документ, на который ссылается @rhldr, похоже, не содержит данных о с использованием токене, созданном с помощью Flex.

Matt Mc 02.10.2019 19:37

@MattMc это так, это как бы похоронено в нем. Смотрите мой ответ ниже..

Ben 03.10.2019 05:31

@Бен а! Теперь вижу, спасибо. Не на той странице, на которую он ссылался, а на той, которую сделали вы.

Matt Mc 03.10.2019 18:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
1 391
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, спасибо @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 04.06.2020 16:05

@Deeps на Frontend я использовал их Flex SDK для генерации ключа на стороне клиента. Я на веб-платформе, а не на iOS. Я не уверен, что такое эквивалент. Токенизация карты должна происходить на стороне клиента, а не на вашем сервере.

Ben 05.06.2020 00:56

Другие вопросы по теме