先日、「PayPal Payment APIに保存されているPayPal.Meの販売情報をcurlコマンドで取得する方法」という記事を書きました。今回はcurlコマンドではなく、Node.jsで取得するコードを紹介します。
作業の手順について
Node.jsで販売情報を取得するまでの手順は以下の通りとなります。
1. アプリケーションの作成 ↓ 2. 本番環境で使うClient IDとSecretの取得 ↓ 3. curlコマンドでAccess-Tokenの取得 ↓ 4. Node.jsで販売情報を取得
1から3までの作業は先日の記事と同じです。分からない方はこちらの記事にアクセスしてください。
販売情報を取得するNode.jsのコード
以下の文章では、PayPal.Meの販売情報を取得するNode.jsのコードを解説します。Node.jsのバージョンがv10.15.1です。なおコードを作成するにあたって下記の記事を参考にしています。
- HTTPS | Node.js v11.9.0 Documentation
- Node.jsの標準モジュール(https)でAPIを叩く(GETのみ) – Qiita
- Get Started – PayPal Developer
httpsモジュールの読み込み
[php]const https = require(‘https’);[/php]
まずNode.jsが用意しているhttpsモジュールを読み込んで、変数httpsに格納します(GitHub)。
HTTPS通信の開始と終了
[php]
const req = https.request(options, (res) => {
});
[/php]
httpsモジュールのrequestメソッドを使って、PayPal Payment APIが保存されているサーバーにリクエスをするための変数を定義します。具体的なリクエストの内容は、requestメソッドの第一引数であるoptionsで指定します。optionsの内容については後述します。
[php]
req.on(‘error’, (e) => {
});
req.end();
[/php]
合わせてリクエストしたときの結果がエラーであったときと、通信が終了したときのメソッドも合わせて記述しておきます(GitHub)。
ちなみにエラーに関する記述はなくても、プログラミングとしての動作はしますが、endメソッドがない場合は、動作が止まります。
ステータスコードとヘッダーの出力
[php]
const req = https.request(options, (res) => {
console.log(‘statusCode:’, res.statusCode);
console.log(‘headers:’, res.headers);
});
[/php]
requestメソッドの中を定義します。HTTPSでリクエストをしたときのステータスコードとヘッダーをconsole.logで出力します。記述しなくても、PayPal.Meの販売情報を取得することはできます。
これらの記述はHTTP通信ができなかったときや、リクエストエラー・サーバーの不調など何らかの原因で情報を取得できなかったときに調べるために便利です(GitHub)。
GETメソッドで取得した販売情報の書き出し
[php]
res.on(‘data’, (d) => {
process.stdout.write(d);
});
[/php]
ステータスコードとヘッダーの出力に続いて、PayPal.Meの販売情報を書き出します。process.stdout.writメソッドもconsole.logも同じような感じで情報の出力をしますが、両者は若干異なるようです。
リクエストメッセージをオブジェクト変数に格納
[php]
const options = {
protocol: ‘https:’,
host: ‘api.paypal.com’,
path: ‘/v1/payments/sale/sales_id’,
method: ‘GET’,
headers: {
‘Content-Type’: ‘application/json’,
‘Authorization’ : ‘Bearer <Access-Token>’
}
};
[/php]
オブジェクト変数optionsでリクエストの内容を定義します。各プロパティの名前は決まっているので、それぞれプロパティ値を入力していきます。”path”プロパティの”sales_id”と、”headers”プロパティの”<Access-Token>”は、前回の記事を参考にして任意の値を入力してください(Github)。
エラーが発生したときのエラーの記述
[php]
req.on(‘error’, (e) => {
console.error(e);
});
[/php]
最後にHTTPS通信やリクエストにエラーが発生したときにメッセージが出力されるようにします(Github)。
実行結果の確認
$ node request.js
ターミナル上でnodeコマンドを実行すると上記のような結果が表示されます。今回の記事で紹介したNode.jsのコードはGitHub上でまとめています。ご興味のある方は参考にしてください。