Поиск…


параметры

параметр подробности
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
}

Так мы используем сводчатую карточку для обработки платежа.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow