PayPal
PayPal 지불하기
수색…
매개 변수
| 매개 변수 | 세부 |
|---|---|
| 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 지급 처리 기능을 구축 할 때 따라야 할 세 가지 일반적인 단계가 있습니다.
- PayPal을 통해 처리하려는 지불을 포함하는 JSON 오브젝트를 작성합니다. 그런 다음 PayPal로 보내서 지불을 확인하기 위해 사용자를 리디렉션 할 수있는 링크를 얻습니다.
- 그런 다음 사용자에게 PayPal로 리디렉션하여 지불을 확인합니다. 일단 확인되면 PayPal은 사용자를 Google 애플리케이션으로 리디렉션합니다.
- 앱으로 반환되면 사용자를 대신하여 결제가 완료됩니다.
간단한 노드 애플리케이션으로 이것을 분해하여 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
});
이 앱에는 네 가지 요구 사항이 필요합니다.
- 우리 서버의 HTTP 패키지.
- PayPal 노드 SDK 패키지.
- JSON으로 인코딩 된 본문을 사용하기위한 bodyParser 패키지
- 서버용 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_method 의 paypal 우리는 페이팔 지불을 만들 것입니다 알리기 위해를, 다음의 트랜잭션 정보를 지정 지불 할 사람.
그런 다음 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 , PayerID 및 token 과 함께 전송 될 세 개의 쿼리 문자열 매개 변수가 있습니다. 우리는 처음 두 가지를 다룰 필요가 있습니다.
우리는 매개 변수를 추출하고 PayerID를 지불 실행 단계의 필요에 따라 간단한 개체에 배치합니다. 다음으로 지불을 완료하기 위해 두 개의 매개 변수를 전달하는 payment.execute(...) 호출이 수행됩니다.
요청이 이루어지면 payment.state 가 approved payment.state 설정되어 있는지 확인하여 지불이 성공적으로 완료되었는지 확인합니다. 그렇다면 우리는 반환 된 지불 오브젝트에서 필요한 것을 저장할 수 있습니다.
마지막 단계는 서버를 초기화하고 지정한 경로로 들어오는 트래픽을 수신하는 것입니다.
//create server
http.createServer(app).listen(3000, function () {
console.log('Server started: Listening on port 3000');
});
서버가 초기화되면 http://localhost:3000/create 하면 결제 프로세스가 초기화됩니다.