決済プラットフォームである「Stripe」は使いやすくて良いサービスだと思います。
StripeにはAPIが用意されているので、APIを用いて、外部からデータを取得したりすると便利です。
GASでStripeのAPIを使用して、Stripeの支払い結果を取得する方法を紹介します。
APIの実行に必要なAPIキーの取得や、APIの呼び出しについては以下の記事で書いていますので、ご覧ください。
支払い結果の一覧を取得する
まず、支払い結果の一覧を取得する処理です。
支払い結果の一覧を取得するエンドポイントは、/v1/payment_intents です。
function getPayments() {
const url = "https://api.stripe.com/v1/payment_intents";
let response = fetchToStripe(url);
for (let data of response["data"]) {
Logger.log(`id:${data["id"]} amount:${data["amount"]} customer:${data["customer"]} created:${data["created"]} invoice:${data["invoice"]}`);
}
}
取得できる項目は、代表的なものだと以下です。
- id:ユニークなID
- amount:金額
- customer:顧客のID
- created:作成日時(支払い日時として使える)
- invoice:インボイスのID(請求書を発行した場合)
取得できるオブジェクトについては以下をご覧ください。
https://stripe.com/docs/api/payment_intents/object
一覧を取得する場合は、件数の上限が決まっていて、デフォルトの取得件数は10件です。
10件を超えて取得する場合は、「limit」パラメータを付けます。
指定できる上限は100件です。
https://api.stripe.com/v1/payment_intents?limit=100
100件を超えて取得したい場合は、ページネーションのような仕組みを利用することになります。
ただし、ページネーションを件数で指定できるようなパラメータがなく、取得する位置を示す「starting_after」というパラメータを使用します。
例えば、101件目以降を取得する場合、100件目の支払いIDを保存しておいて、パラメータで指定します。
以下のような形式です。
以下の例だと、「pi_XXXXXX」が最後の支払いIDで、「pi_XXXXXX」の次の支払い結果から取得することになります。
https://api.stripe.com/v1/payment_intents?starting_after=pi_XXXXXX
この形式は、Stripeダッシュボードも同様のパラメータを使用しているので、ダッシュボードで見てもらうと分かりやすいと思います。
また、検索条件に顧客を使用することができます。
「customer」というパラメータを付けると、取得する対象の顧客IDを指定できます。
https://api.stripe.com/v1/payment_intents?customer=cus_XXXXXX
その他、使用できるパラメータや取得できる項目は公式ドキュメントをご覧ください。
https://stripe.com/docs/api/payment_intents/list
指定したIDの支払い結果を取得する
続いて、指定したIDの支払い結果を取得する処理です。
支払い結果を1件取得するエンドポイントは、/v1/payment_intents/:id です。
let payment = getPayment("pi_XXXXX");
Logger.log(`id:${payment["id"]} amount:${payment["amount"]} customer:${payment["customer"]} created:${payment["created"]} invoice:${payment["invoice"]}`);
function getPayment(id) {
const url = "https://api.stripe.com/v1/payment_intents/" + id;
return fetchToStripe(url);
}
取得できる項目は公式ドキュメントをご覧ください。
https://stripe.com/docs/api/payment_intents/retrieve