BraintreeSDKを利用してPayPal ExpressCheckoutを実装する その15(BraintreeSDKによる決済内容の確認)

その14ではBraintreeSDKによる決済確認画面の表示についてご説明をしました。次は取引内容の確認をしてみましょう。なお、今回の記事は以下の3つのページを参考にしています。
- PayPal | Server-Side Implementation | Node.js – Braintree Developer Documentation(新しいタブで開く)
- PayPal | Testing and Go Live | Node.js – Braintree Developer Documentation(新しいタブで開く)
- Transaction.sale() | Node.js – Braintree Developer Documentation(新しいタブで開く)
Braintree用のルーティングを記述
その13のように を使った決済ではJavaScript内だけで決済が完結するため、その取引内容を確認するための特別なルーティングは必要ありません。
jadeファイルを用いないルーティング
ですがBraintreeを使った決済では、取引の内容をNonce(Number of used=一度だけの使い捨ての文字列)にして、別途Braintreeのサーバーに送信する必要があります。そのNonceに関する記述がないと、前回の記事(新しいタブで開く)で紹介した画像の「同意して支払う」ボタンを押しても、この画像のようにエラーが表示されます。
Nonceは取引内容が記述されたファイルに基づいて暗号化されますので、その元なるファイルが必要になります。
ただファイルといってもユーザーに見せるファイルではありませんので、jadeを使ったテンプレートエンジンのファイルを作成する必要はありません。”/checkout“というルーティングをindex.jsに加筆するだけにとどまります。
“/checkout”の内容を記述
ではindex.jsに”/checkout”の内容を記述していきましょう。4つのブロックに分けて説明いたします。
router.post()
router.post("/checkout", function (req, res) { ... });
取引の内容はBraintreeに送信されますので、HTTPのPOSTメソッドが用いられます。したがってルーティング全体の内容はこのようになります。
gatewayの定義
var gateway = braintree.connect({ accessToken: ACCESS_TOKEN });
app.jsに記述したbraintreeモジュールを使用す使用するために、access_Tokenのデータを”gateway“というオブジェクト変数で定義します。
saleRequestの定義
var saleRequest = { amount: req.body.amount, merchantAccountId: "JPY", paymentMethodNonce: "" + req.body.payment_method_nonce, options: { ... };
“saleRequest“は取引情報や顧客情報が格納されたオブジェクト変数です。オブジェクトのプロパティのうち、paymentMethodNonce(新しいタブで開く)がNonceとして表現され、一度限りの支払い情報として参照されます。
gateway.transaction.sale()
gateway.transaction.sale(saleRequest, function (err, result) { ... });
gateway.transaction.sale()(新しいタブで開く)は、取引情報や顧客情報を定義した”saleRequest”を第一引数として、Braintreeサーバーへ送信します。第二引数において送信結果を表示します。
実際の動作
今回の記事で紹介したコードは、GitHub(新しいタブで開く)で公開しています。その内容に基づいて、アプリケーションを実行してみましょう。
こちらは前回の記事(新しいタブで開く)で表示させた、決済を確定させるためのボタンの表示です。
「同意して支払う」をクリックすると、取引情報がBraintreeサーバーに送信されたことが分かります。ちなみに”npv0nzra”は決済のたびに発行されるIDです。