PayPal
Оплата кредитной карты (Узел)
Поиск…
параметры
| параметр | подробности |
|---|---|
| card_data | Объект JSON, содержащий информацию о платежах для транзакции |
| данные кредитной карты | Объект JSON, содержащий данные кредитной карты, которые отправляются в PayPal, чтобы быть сводчатыми |
| ID клиента | Ваш идентификатор клиента приложения PayPal (учетные данные OAuth 2) |
| PayPal | Ссылка на SDK SDK PayPal |
| секрет | Ваш секретный код приложения PayPal (учетные данные OAuth 2) |
| UUID | Ссылка на пакет node-uuid |
замечания
Этот пример берет пользователя посредством кредитования простой транзакции с использованием PayPal SDK.
Образец узла
Начните с установки модуля узла PayPal из NPM
npm install paypal-rest-sdk
В файле приложения добавьте информацию о конфигурации для SDK
var paypal = require('paypal-rest-sdk');
var client_id = 'YOUR CLIENT ID';
var secret = 'YOUR SECRET';
paypal.configure({
'mode': 'sandbox', //sandbox or live
'client_id': client_id,
'client_secret': secret
});
Мы добавляем требование для SDK, затем настраиваем переменные для идентификатора клиента и секретности, которые были получены при создании приложения . Затем мы настраиваем наше приложение, используя эти данные, и указываем среду, в которой мы работаем (в прямом эфире или в песочнице).
Затем мы настраиваем объект JSON, который содержит информацию о платежах для плательщика.
var card_data = {
"intent": "sale",
"payer": {
"payment_method": "credit_card",
"funding_instruments": [{
"credit_card": {
"type": "visa",
"number": "4417119669820331",
"expire_month": "11",
"expire_year": "2018",
"cvv2": "874",
"first_name": "Joe",
"last_name": "Shopper",
"billing_address": {
"line1": "52 N Main ST",
"city": "Johnstown",
"state": "OH",
"postal_code": "43210",
"country_code": "US" }}}]},
"transactions": [{
"amount": {
"total": "7.47",
"currency": "USD",
"details": {
"subtotal": "7.41",
"tax": "0.03",
"shipping": "0.03"}},
"description": "This is the payment transaction description."
}]};
Добавьте intent sale и payment_method credit_card . Затем добавьте в карточку и адресную информацию для кредитной карты в разделе funding_instruments и сумму, подлежащую funding_instruments по transactions . Здесь можно разместить несколько объектов транзакции.
Наконец, мы делаем запрос на payment.create(...) , передавая наш объект card_data , чтобы обработать платеж.
paypal.payment.create(card_data, function(error, payment){
if(error){
console.error(error);
} else {
console.log(payment);
}
});
Если транзакция прошла успешно, мы должны увидеть объект ответа, аналогичный следующему:
{
"id": "PAY-9BS08892W3794812YK4HKFQY",
"create_time": "2016-04-13T19:49:23Z",
"update_time": "2016-04-13T19:50:07Z",
"state": "approved",
"intent": "sale",
"payer": {
"payment_method": "credit_card",
"funding_instruments": [
{
"credit_card": {
"type": "visa",
"number": "xxxxxxxxxxxx0331",
"expire_month": "11",
"expire_year": "2018",
"first_name": "Joe",
"last_name": "Shopper",
"billing_address": {
"line1": "52 N Main ST",
"city": "Johnstown",
"state": "OH",
"postal_code": "43210",
"country_code": "US"
}
}
}
]
},
"transactions": [
{
"amount": {
"total": "7.47",
"currency": "USD",
"details": {
"subtotal": "7.41",
"tax": "0.03",
"shipping": "0.03"
}
},
"description": "This is the payment transaction description.",
"related_resources": [
{
"sale": {
"id": "0LB81696PP288253D",
"create_time": "2016-04-13T19:49:23Z",
"update_time": "2016-04-13T19:50:07Z",
"amount": {
"total": "7.47",
"currency": "USD"
},
"state": "completed",
"parent_payment": "PAY-9BS08892W3794812YK4HKFQY",
"links": [
{
"href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/sale\/0LB81696PP288253D",
"rel": "self",
"method": "GET"
},
{
"href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/sale\/0LB81696PP288253D\/refund",
"rel": "refund",
"method": "POST"
},
{
"href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/payment\/PAY-9BS08892W3794812YK4HKFQY",
"rel": "parent_payment",
"method": "GET"
}
],
"fmf_details": {
},
"processor_response": {
"avs_code": "X",
"cvv_code": "M"
}
}
}
]
}
],
"links": [
{
"href": "https:\/\/api.sandbox.paypal.com\/v1\/payments\/payment\/PAY-9BS08892W3794812YK4HKFQY",
"rel": "self",
"method": "GET"
}
],
"httpStatusCode": 201
}
В этом возвращенном объекте, имеющем state approved говорится, что транзакция прошла успешно. Под объектом links есть ряд ссылок HATEOAS, которые предоставляют потенциальные последующие шаги, которые могут быть предприняты в действии, которое только что было выполнено. В этом случае мы можем получить информацию об оплате, сделав запрос GET на предоставленную self конечную точку.
Выполнение платежа со сводной кредитной картой (узлом)
В этом примере мы рассмотрим, как хранить кредитную карту с помощью хранилища PayPal, а затем ссылаться на эту сохраненную кредитную карту для обработки транзакции кредитной карты для пользователя.
Причина, по которой мы хотим использовать хранилище, заключается в том, что нам не нужно хранить конфиденциальную информацию о кредитных картах на наших собственных серверах. Мы просто ссылаемся на способ оплаты с помощью предоставленного идентификатора хранилища, а это значит, что нам не нужно иметь дело со многими нормами соответствия PCI с сохранением самих кредитных карт.
Как и в предыдущих примерах, мы начинаем с создания нашей среды.
var paypal = require('paypal-rest-sdk'),
uuid = require('node-uuid');
var client_id = 'YOUR CLIENT ID';
var secret = 'YOUR SECRET';
paypal.configure({
'mode': 'sandbox', //sandbox or live
'client_id': client_id,
'client_secret': secret
});
Единственное отличие от предыдущих образцов заключается в том, что нам требуется новый пакет node-uuid , который должен использоваться для создания уникальных UUID для плательщиков при хранении карты. Вы можете установить этот пакет через:
npm install node-uuid
Затем мы определяем объект JSON кредитной карты, который будет отправлен в хранилище PayPal для хранения. Он содержит информацию с карты, а также уникальный идентификатор плательщика, который мы генерируем с помощью node-uuid . Вы должны сохранить этот уникальный payer_id в своей собственной базе данных, поскольку он будет использоваться при создании платежа со сводчатой картой.
var create_card_details = {
"type": "visa",
"number": "4417119669820331",
"expire_month": "11",
"expire_year": "2018",
"first_name": "John",
"last_name": "Doe",
"payer_id": uuid.v4()
};
Наконец, нам необходимо сохранить кредитную карту и обработать платеж с использованием этой карты. Чтобы credit_card.create(...) кредитную карту, мы вызываем credit_card.create(...) , передавая объект credit_card_details который мы только что создали. Если все пойдет хорошо, мы должны вернуть объект нам с подробностями о сводчатой карте. Для оплаты этой карты нам понадобятся только две части информации: плательщик, который мы уже сохранили, и идентификатор хранилища, который также должен храниться как ссылка в нашей собственной базе данных.
paypal.credit_card.create(create_card_details, function(error, credit_card){
if(error){
console.error(error);
} else {
var card_data = {
"intent": "sale",
"payer": {
"payment_method": "credit_card",
"funding_instruments": [{
"credit_card_token": {
"credit_card_id": credit_card.id,
"payer_id": credit_card.payer_id
}
}]
},
"transactions": [{
"amount": {
"total": "7.47",
"currency": "USD",
"details": {
"subtotal": "7.41",
"tax": "0.03",
"shipping": "0.03"
}
},
"description": "This is the payment transaction description."
}]
};
paypal.payment.create(card_data, function(error, payment){
if(error){
console.error(error);
} else {
console.log(JSON.stringify(payment));
}
});
}
});
В разделе, посвященном успешному сводке кредитной карты, мы просто определяем данные карты и обрабатываем платеж, как это было сделано с предыдущим примером обработки кредитных карт. Основное различие в структуре card_data объекта является funding_instruments раздел, который мы определяем под payer . Вместо определения информации о кредитной карте вместо этого мы используем следующий объект, который содержит ссылку идентификатора хранилища, и идентификатор плательщика:
"credit_card_token": {
"credit_card_id": credit_card.id,
"payer_id": credit_card.payer_id
}
Так мы используем сводчатую карточку для обработки платежа.