ZapierでStripeの任意のAPIを呼び出すアクションを追加する方法と、作成時の注意点


Stripeでオンライン決済や請求書の処理などを行う際、ZapierなどのIPaaSを使うことで、メール送付やkintone / Notionなどへのデータ連携などをノーコードで実現できます。

Zapierの場合は、Stripeと連携するアクションが用意されています。

![スクリーンショット 2023-02-09 14.04.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/fe80f24e-2018-488b-8a8e-be7dfde1f114.png)

顧客データやサブスクリプション契約の作成など、複数のアクションをコーディングすることなく実現できます。

![スクリーンショット 2023-02-09 14.02.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/0d4505ca-d65d-92f0-bb75-12eea544edd9.png)

## サポートされていないAPIや引数を呼び出す方法

しかしビジネスのケースによっては、「ZapierにないAPIリクエスト」が必要になる場合もあります。

その場合は、「Custom Request in Webhooks by Zapier」アクションを利用します。

:::note warn
「Custom Request in Webhooks by Zapier」アクションは、「Professional」プラン以上の契約が必要です。
https://zapier.com/app/pricing
:::


### アクションで「Webhooks」を追加する

「Custom Request in Webhooks by Zapier」アクションは、アクション追加時に「Webhooks by Zapier」の名称で検索・選択できます。

 ![スクリーンショット 2023-02-09 14.09.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/f387bced-865a-6e5b-99a8-9c08493575ea.png)

### `Event`で`Custom Request`を選択する

このアクションでは、呼び出すAPIのメソッドやURLなどを指定できます。

今回は`Custom Request`を選択しましょう。

![スクリーンショット 2023-02-09 14.11.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/3c8e2e48-a4ef-24ee-89e0-485b1a71c674.png)


### 呼び出したいAPIリクエストを定義しよう

メソッドやURL,パラメータを指定する画面が開きます。

[Stripe API Document](https://stripe.com/docs/api)の`cURL`に掲載されているリクエストサンプルをもとに、リクエスト内容を設定しましょう。

https://stripe.com/docs/api

![スクリーンショット 2023-02-09 16.13.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/48772800-dd6e-db75-3271-853f081a4f8d.png)

:::note warn
**Data Pass-Through**は`false`に設定しましょう。

:::

### Stripeダッシュボードで、制限付きAPIキーを作成しよう

APIを呼び出すための認証として、StripeのAPIキーを利用します。

![スクリーンショット 2022-10-07 19.25.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/1aac1f08-e753-5c49-1081-339ff42425cb.png)

システムの開発などでは、「シークレットAPIキー」を利用することが多いですが、今回のケースでは「制限付きAPIキー」をZapier用に発行することをお勧めします。

![スクリーンショット 2022-10-07 19.27.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/5824784b-1202-d4a1-1e51-3155a9f2f011.png)

呼び出したいAPIのアクションだけ許可する形にすることで、万が一Zapierアカウントに不正アクセスがあった場合などでも、Stripeアカウントの情報にアクセスされる可能性のあるエリアを絞り込むことができます。

**制限付きキーについてもっと知る**

https://qiita.com/hideokamoto/items/b5816a359151b7e11dc9#%EF%BC%92-%E9%96%8B%E7%99%BA%E8%80%85%E3%81%94%E3%81%A8%E3%81%AB%E6%A9%9F%E8%83%BD%E3%82%92%E5%88%B6%E9%99%90%E3%81%97%E3%81%9Fapi%E3%82%AD%E3%83%BC%E3%82%92%E4%BD%9C%E3%82%8B%E5%88%B6%E9%99%90%E4%BB%98%E3%81%8D%E3%81%AE%E3%82%AD%E3%83%BC

### `Basic Auth`に制限付きAPIキーを作成しよう

作成したAPIキーの設定は、`Basic Auth`で行います。

下のスクリーンショットのように、`rk_から始まる制限付きAPIキー|`で入力しましょう。

![スクリーンショット 2023-02-09 16.14.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/3b71c459-112e-3351-cc2e-b84c8fe7eae2.png)

### API呼び出しをテストする

`Test action`でAPI呼び出しをテストしましょう。

![スクリーンショット 2023-02-09 16.20.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/7a03cbbc-4cf4-5654-e06b-13a94c23b801.png)

ここで意図したレスポンスや操作ができていれば、アクション作成が成功しています。

もしAPIがエラーを返していると表示された場合は、Stripeダッシュボードの[[開発者 > ログ]](https://dashboard.stripe.com/test/logs)でデバッグできます。

![スクリーンショット 2023-02-09 16.21.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/c81f4d22-aa9e-044f-5dec-ea22ee3585b0.png)

## Webhookアクションを組み合わせたワークフローの例

次のスクリーンショットのワークフローでは、CheckoutやPayment Linksの注文完了イベントをトリガーに、注文内容をGoogleシートやGmailに共有しています。

![スクリーンショット 2023-02-09 16.27.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366300/ea1fabee-a4a4-00a9-223c-b570a040543e.png)

この他にも、データのフォーマットアクションやフィルターなどを使うことで、「特定の条件の顧客にのみ、処理を行う」などのワークフローも可能です。





## まとめ

Zapierの「Custom Request in Webhooks by Zapier」アクションを使う方法について紹介しました。

このアクションを使って、StripeなどのAPI連携をより柔軟に設定できます。

APIの呼び出し方は、APIドキュメントの`cURL`サンプルが参考になります。

ただし、「**このアクションを利用するため**」および「***３ステップ以上のワークフローを組むため**」、Zapierの有料プランを契約する必要がある点に注意しましょう。

また、StripeのAPIキーを安全に運用するため、シークレットAPIキーの代わりに制限付きAPIキーを作成することをお勧めします。