1. TOPTOP
  2. Webサービス
  3. PayPal

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

braintree_payments_1_1

その14ではBraintreeSDKによる決済確認画面の表示についてご説明をしました。次は取引内容の確認をしてみましょう。なお、今回の記事は以下の3つのページを参考にしています。

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(新しいタブで開く)で公開しています。その内容に基づいて、アプリケーションを実行してみましょう。

paypal_braintree_payments_14_2

こちらは前回の記事(新しいタブで開く)で表示させた、決済を確定させるためのボタンの表示です。

paypal_braintree_payments_15_2

「同意して支払う」をクリックすると、取引情報がBraintreeサーバーに送信されたことが分かります。ちなみに”npv0nzra”は決済のたびに発行されるIDです。