PayPal
PayPalでの支払い
サーチ…
パラメーター
| パラメータ | 詳細 |
|---|---|
| クライアントID | PayPalアプリケーションクライアントID(OAuth 2の認証情報) |
| リンク | PayPalからのすべてのHATEOASリターンの単純な参照オブジェクト |
| paymentId | 支払いを完了するためにPayPalから返された支払いのID |
| payerId | 支払いを完了するためにPayPalから返された支払人のID |
| ペイパル | PayPalノードSDKリファレンス |
| payReq | トランザクションの支払情報を含むJSONオブジェクト |
| req | サーバー要求からの要求オブジェクト |
| レス | サーバー要求からの応答オブジェクト |
| 秘密の | あなたのPayPalアプリケーションの秘密(OAuth 2の認証情報) |
備考
これらのサンプルでは、PayPal SDKを使用してPayPal経由で支払いを処理する方法について説明しています。これらは、この支払いオプションを許可するための複数ステップのプロセスを概説する簡単なリクエストサンプルです。
ノード・エクスプレス・サーバーの例
この例では、PayPalノードSDKを使用して、PayPalで支払いを処理する方法を表示するExpressサーバー統合を設定します。簡潔にするため、支払いの詳細には静的なJSON構造を使用します。
PayPal支払いを処理する機能を構築する際には、次の3つの一般的な手順に従います。
- PayPalで処理する予定の支払いを含むJSONオブジェクトを作成します。その後、PayPalに送信して、支払いを確認するためにユーザーをリダイレクトするリンクを取得します。
- 次に、PayPalにリダイレクトして支払いを確認します。確認が済むと、PayPalはユーザーをアプリケーションにリダイレクトします。
- アプリに戻ったら、ユーザーに代わって支払いを完了します。
これを単純なNodeアプリケーションとして解説すると、まずNPMからPayPal Node 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
});
このアプリには4つの要件が必要です:
- 私たちのサーバー用の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に追加し、(PayPalは、彼らが支払いをキャンセル確認/後にユーザを転送する必要があります)リダイレクトURLを指定し、 payment_methodのpaypal我々はPayPal支払いを行いますことを知らせるためには、そのためのトランザクション情報を指定します確認する支払人。
次に、 payReqオブジェクトを渡してpayReq payment.create(...)呼び出します。これにより、PayPalに支払請求依頼が送信されます。それが返って成功したら、returnオブジェクトのHATEOASリンクをループして、ユーザーをリダイレクトする必要があるURLを抽出します。このURLはapproval_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 3つのクエリ文字列パラメータも送信されtoken 。我々は最初の2つに対処する必要があります。
パラメータを抽出し、支払実行ステップの必要性のためにPayerIDを単純なオブジェクトに配置します。次に、 payment.execute(...)を呼び出し、2つのパラメータを渡して支払いを完了します。
その要求が行われると、 payment.stateがapproved設定されているかどうかを確認して、支払いが正常に完了したかどうかを確認します。その場合、返品された支払オブジェクトから必要なものを保管することができます。
私たちの最後のステップは、サーバーを初期化し、指定したルートに到着するトラフィックを待ち受けることです。
//create server
http.createServer(app).listen(3000, function () {
console.log('Server started: Listening on port 3000');
});
サーバーが初期化されると、 http://localhost:3000/createに行くと、支払い処理が初期化されます。