수색…


매개 변수

매개 변수 세부
clientId PayPal 애플리케이션 클라이언트 ID (OAuth 2 자격증 명)
모래밭 PayPal에서 반환하는 모든 HATEOAS 링크에 대한 간단한 참조 객체
paymentId 지불을 완료하기 위해 PayPal에서 반품 된 지불의 ID
payerId 지불을 완료하기 위해 PayPal에서 반납 된 지불 자의 ID입니다.
페이팔 PayPal 노드 SDK 참조
payReq 트랜잭션에 대한 지불 정보가 포함 된 JSON 객체
요구 서버 요청의 요청 객체
입술 서버 요청의 응답 객체
비밀 PayPal 애플리케이션 비밀번호 (OAuth 2 자격증 명)

비고

이 샘플에서는 PayPal SDK를 사용하여 PayPal을 통한 지불 처리 방법에 대해 설명합니다. 이것들은이 지불 옵션을 허용하는 다중 단계 프로세스를 개략적으로 설명하는 간단한 요청 샘플입니다.

노드 Express 서버 예제

이 예제에서는 PayPal 노드 SDK를 사용하여 PayPal로 지불을 처리하는 방법을 표시하는 Express 서버 통합을 설정합니다. 간결함을 위해 결제 세부 정보에 정적 JSON 구조를 사용합니다.

PayPal 지급 처리 기능을 구축 할 때 따라야 할 세 가지 일반적인 단계가 있습니다.

  1. PayPal을 통해 처리하려는 지불을 포함하는 JSON 오브젝트를 작성합니다. 그런 다음 PayPal로 보내서 지불을 확인하기 위해 사용자를 리디렉션 할 수있는 링크를 얻습니다.
  2. 그런 다음 사용자에게 PayPal로 리디렉션하여 지불을 확인합니다. 일단 확인되면 PayPal은 사용자를 Google 애플리케이션으로 리디렉션합니다.
  3. 앱으로 반환되면 사용자를 대신하여 결제가 완료됩니다.

간단한 노드 애플리케이션으로 이것을 분해하여 NPM에서 PayPal 노드 SDK를 얻습니다.

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. PayPal 노드 SDK 패키지.
  3. JSON으로 인코딩 된 본문을 사용하기위한 bodyParser 패키지
  4. 서버용 Express 프레임 워크.

다음 몇 줄 은 응용 프로그램을 만들 때 얻은 클라이언트 ID와 암호에 대한 변수를 설정합니다. 그런 다음 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');
            }
        }
    });
});

가장 먼저 PayPal에 지불을 생성하는 데 필요한 정보가 들어있는 지불 요청 JSON 객체를 설정합니다. 우리는 설정 intent 하는 sale A의 추가 (페이팔 그들이 지불을 취소 확인 / 이후에 사용자를 전달한다) 리디렉션 URL을 지정 payment_methodpaypal 우리는 페이팔 지불을 만들 것입니다 알리기 위해를, 다음의 트랜잭션 정보를 지정 지불 할 사람.

그런 다음 payReq 객체를 전달하면서 payment.create(...) 를 호출합니다. 그러면 PayPal에 지불 요청 작성이 전송됩니다. 반환 된 후 반환 객체에있는 제공된 HATEOAS 링크를 반복하여 approval_url 아래에 레이블이 지정된 사용자를 리디렉션해야하는 URL을 추출 할 수 있습니다.

HATEOAS 링크의 형식은 직접 사용하는 경우 취약한 참조 코드를 생성 할 수 있으므로 제공된 모든 링크를 반복하고 향후 참조 할 수있는 참조 객체에 넣습니다. 해당 객체에서 approval_url 을 찾으면 사용자를 리디렉션합니다.

이 시점에서 사용자는 PayPal로 리디렉션되어 지불을 확인합니다. 일단 실행되면 createPayment(...) 함수에서 지정한 return_url 다시 리디렉션됩니다.

이제 지불을 완료하기 위해 해당 반품을 처리 할 경로를 제공해야합니다.

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 , PayerIDtoken 과 함께 전송 될 세 개의 쿼리 문자열 매개 변수가 있습니다. 우리는 처음 두 가지를 다룰 필요가 있습니다.

우리는 매개 변수를 추출하고 PayerID를 지불 실행 단계의 필요에 따라 간단한 개체에 배치합니다. 다음으로 지불을 완료하기 위해 두 개의 매개 변수를 전달하는 payment.execute(...) 호출이 수행됩니다.

요청이 이루어지면 payment.stateapproved 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