Поиск…


параметры

параметр подробности
ID клиента Ваш идентификатор клиента приложения PayPal (учетные данные OAuth 2)
связи Простой ссылочный объект для всех возвратных ссылок HATEOAS из PayPal
PaymentID Идентификатор платежа, возвращенного из PayPal, для завершения платежа
payerId Идентификатор плательщика, возвращенный с PayPal, для завершения платежа
PayPal Ссылка на SDK SDK PayPal
payReq Объект JSON, содержащий информацию о платежах для транзакции
REQ Объект запроса из запроса сервера
Рез Объект ответа из запроса сервера
секрет Ваш секретный код приложения PayPal (учетные данные OAuth 2)

замечания

Эти образцы охватывают процесс обработки платежа через PayPal с использованием SDK PayPal. Это простые образцы запросов, которые описывают многоэтапный процесс для разрешения этой опции платежа.

Пример сервера узла

В этом примере мы собираемся настроить интеграцию с Express Server, чтобы отобразить, как обрабатывать платеж с помощью PayPal, используя SDK PayPal Node. Для краткости мы будем использовать статическую структуру JSON для деталей платежа.

Есть три общих шага, которые мы последуем при построении функций для обработки платежа PayPal:

  1. Мы создаем объект JSON, содержащий платеж, который мы намерены обрабатывать через PayPal. Затем мы отправляем это в PayPal, чтобы получить ссылку для перенаправления пользователя для подтверждения платежа.
  2. Затем мы перенаправляем пользователя в PayPal для подтверждения платежа. После подтверждения PayPal перенаправляет пользователя обратно в наше приложение.
  3. После возврата в приложение мы завершим платеж от имени пользователя.

Разрушая это как простое приложение Node, мы начинаем с получения SDK SDK PayPal из NPM:

npm install paypal-rest-sdk

Затем мы настраиваем конфигурацию и пакеты приложений.

var http = require('http'),
    paypal = require('paypal-rest-sdk'),
    bodyParser = require('body-parser'),
    app = require('express')();

var client_id = 'YOUR APPLICATION CLIENT ID';
var secret = 'YOUR APPLICATION SECRET';

//allow parsing of JSON bodies
app.use(bodyParser.json());

//configure for sandbox environment
paypal.configure({
    'mode': 'sandbox', //sandbox or live
    'client_id': client_id,
    'client_secret': secret
});

Для этого приложения требуется четыре требования:

  1. HTTP-пакет для нашего сервера.
  2. Пакет SDK для узла PayPal.
  3. Пакет bodyParser для работы с закодированными органами JSON.
  4. Рамки Express для нашего сервера.

Следующие несколько строк устанавливают переменные для идентификатора клиента и секретности, которые были получены при создании приложения . Затем мы настраиваем bodyParser чтобы разрешать закодированные JSON тела, затем настраиваем наше приложение с использованием сведений о приложении и определяем среду, в которой мы работаем (для производства или для тестовой среды).

Теперь давайте создадим маршрут для создания платежного запроса с помощью PayPal.

app.get('/create', function(req, res){
    //build PayPal payment request
    var payReq = JSON.stringify({
        'intent':'sale',
        'redirect_urls':{
            'return_url':'http://localhost:3000/process',
            'cancel_url':'http://localhost:3000/cancel'
        },
        'payer':{
            'payment_method':'paypal'
        },
        'transactions':[{
            'amount':{
                'total':'7.47',
                'currency':'USD'
            },
            'description':'This is the payment transaction description.'
        }]
    });

    paypal.payment.create(payReq, function(error, payment){
        if(error){
            console.error(error);
        } else {
            //capture HATEOAS links
            var links = {};
            payment.links.forEach(function(linkObj){
                links[linkObj.rel] = {
                    'href': linkObj.href,
                    'method': linkObj.method
                };
            })
        
            //if redirect url present, redirect user
            if (links.hasOwnProperty('approval_url')){
                res.redirect(links['approval_url'].href);
            } else {
                console.error('no redirect URI present');
            }
        }
    });
});

Первое, что мы делаем, - это настроить объект JSON для запроса платежа, который содержит информацию, которую мы должны предоставить PayPal для создания платежа. Мы устанавливаем intent sale , указываем URL-адреса переадресации (где PayPal должен перенаправлять пользователя после подтверждения / отмены платежа), добавьте payment_method paypal чтобы сообщить, что мы сделаем платеж PayPal, а затем укажите информацию о транзакции для плательщика для подтверждения.

Затем мы вызываем payment.create(...) , проходящую в нашем объекте payReq . Это отправит запрос на создание платежа в PayPal. После того, как это будет возвращено и будет успешным, мы сможем пропустить предоставленные ссылки HATEOAS в возвращаемом объекте, чтобы извлечь URL-адрес, который нам нужен, чтобы перенаправить пользователя, который помечен как approval_url .

Формат ссылок HATEOAS может вызвать хрупкий ссылочный код, если он используется напрямую, поэтому мы перебираем все предоставленные ссылки и помещаем их в лучший ссылочный объект для будущего доказательства против изменений. Если approval_url затем найден в этом объекте, мы перенаправить пользователя.

На этом этапе пользователь перенаправляется в PayPal для подтверждения платежа. Как только они это сделают, они перенаправляются обратно в return_url который мы указали в функции createPayment(...) .

Теперь нам нужно предоставить маршрут для обработки этого возврата, чтобы завершить платеж.

app.get('/process', function(req, res){
    var paymentId = req.query.paymentId;
    var payerId = { 'payer_id': req.query.PayerID };

    paypal.payment.execute(paymentId, payerId, function(error, payment){
        if(error){
            console.error(error);
        } else {
            if (payment.state == 'approved'){ 
                res.send('payment completed successfully');
            } else {
                res.send('payment not successful');
            }
        }
    });
});

Когда пользователь будет возвращен обратно в ваше приложение, будут также три параметра строки запроса, которые будут отправлены вместе, paymentId , PayerID и token . Нам нужно иметь дело только с первыми двумя.

Мы извлекаем параметры и размещаем PayerID в простом объекте для необходимости этапа выполнения платежа. Затем выполняется вызов payment.execute(...) , передавая эти два параметра для завершения платежа.

После того, как этот запрос будет сделан, мы увидим, успешно завершил ли платеж, проверив, approved ли платежный payment.state . Если это так, мы можем сохранить то, что нам нужно, из возвращаемого объекта платежа.

Нашим последним шагом является инициализация нашего сервера и прослушивание трафика, приближающегося к указанным нами маршрутам.

//create server
http.createServer(app).listen(3000, function () {
   console.log('Server started: Listening on port 3000');
});

После инициализации сервера перейдите к http://localhost:3000/create инициализирует процесс оплаты.



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