kintoneパート - [kintone+Stripe+LINE]をノーコードで組み合わせて無人店舗を実現！

# はじめに

本資料は下記イベントの説明用資料です。

https://linedevelopercommunity.connpass.com/event/305413/

本資料は前段階のLINEパート、Stripeパートが完了した状態からスタートします。そのため、この記事に直接アクセスされた方や、資料内で紹介されている前提条件がわからないという方は、まず初めに以下の資料をお読みください。

https://zenn.dev/line_dc/articles/kintone-stripe-line-handson-20240117?redirected=1

https://qiita.com/hideokamoto/private/061c4402096c047fc483

# 自己紹介

![スクリーンショット 2023-08-31 19.44.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/cc88e877-0bc9-c043-c8b3-1aa13cebd6fb.png)
![スクリーンショット 2023-08-31 19.45.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/73eca9b8-7735-7b2d-f9dd-e42c7f11dd87.png)

# このパートで取り組むこと

このパートでは、Makeのシナリオが次の状態から始まります。

1. LINEのBotに何かつぶやくと、Stripeの決済URLを返信される
![スクリーンショット 2024-01-17 15.25.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/ff6f246f-e3e2-2cfc-dca2-38ce330d7e90.png)


2. Stripeの決済が完了するとmake上で決済情報が確認できる
![スクリーンショット 2024-01-17 15.25.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/244e46e9-2b27-2641-4093-d08458ea7aa9.png)

今回は2番目のフローに対してkintoneへデータを投げる仕組みを追加し、以下のようなフローを作っていきます！
![スクリーンショット 2024-01-17 19.55.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/ca3a6ac8-cf3f-40b1-701b-338367661d60.png)


# kintoneの準備

決済情報を保存するkintoneアプリを作成します。

:::note
もしkintone環境がない方は無償の開発者ライセンスが発行できますので、
下記URLより発行してください！
https://cybozu.dev/ja/kintone/developer-license/
:::


|フィールド名|フィールドタイプ|説明|
|:--|:--|:--|
|作成日時|作成日時|kintoneにレコードが新規作成された日時（自動挿入）|
|決済ID|文字列（１行）|Stripeが持つ決済IDを保存するフィールド|
|LINE User ID|文字列（１行）|LINEのUUIDを保存するフィールド|
|商品ID|文字列（１行）|購入された商品IDを保存するフィールド|
|商品名|文字列（１行）|購入された商品名を保存するフィールド|
|合計金額|数値|決済された金額を保存するフィールド|

![スクリーンショット 2024-01-17 15.36.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/0d373ddf-7830-06d7-19ee-9b8d1145f630.png)

:::note 
アプリのテンプレートはこちら
https://drive.google.com/drive/folders/1YySf6ynx5MwAuIpDDllmQmZqbaUHcs85?usp=drive_link

アプリテンプレートを用いたアプリ作成の方法はこちらのヘルプをご確認ください。（めちゃ簡単です）
https://jp.cybozu.help/k/ja/user/create_app/app_csv/add_app_template_file.html
:::

# makeフローの設定

受け皿となるkintoneアプリが完成したら、早速このアプリにデータを流し込むフローを作っていきましょう。まずStripeパートで開発したmakeフローを開きます。

![スクリーンショット 2024-01-17 15.25.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/244e46e9-2b27-2641-4093-d08458ea7aa9.png)

コネクタとして新しく「kintone」を検索して配置してください。
この中の `Create a Record` を選びます。
![スクリーンショット 2024-01-17 15.51.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/2afd6633-0d07-9581-4877-342d79ce742f.png)

![スクリーンショット 2024-01-17 15.52.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/a8ae1b07-90ce-ea6f-4935-b85d7e7c52f4.png)

右側のStripeコネクタとつなぎ、kintoneの接続設定をします。
![スクリーンショット 2024-01-17 15.53.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/a0c3b787-3c8d-b584-fe10-3813d417853f.png)

`Add` から新しい接続設定画面を開き、下記のように入力します。

|入力欄|値|
|:--|:--|
|Connection type|Kintone|
|Connection name|無人店舗用|
|Sub Domain|{kintone環境のドメイン名}|
|Username|{kintone環境のパスワード}|
|Password|{kintone環境のパスワード}|
|Domain Name|cybozu.com|

![スクリーンショット 2024-01-17 15.55.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/0968afd2-4d2c-dc83-5662-f9163be3a123.png)

次に `App ID` を指定しますが、プルダウンをクリックして何かしら表示される方はそこから先ほど作った「購入履歴管理」アプリを選択します。
もし何も表示されない方は、右側の `Map` を選択してアプリIDを直接入力します。
![スクリーンショット 2024-01-17 16.01.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/2cd632fa-ea15-0fb9-2db3-f10d5374664a.png)

アプリIDは購入履歴管理アプリの画面を開いたときのURLにある数字となります。

~~.cybozu.com/k/`158`/

上記まで完了したら、一度`OK`を押します。
そして再度kintoneコネクタを選択して設定画面を開くと・・・

![スクリーンショット 2024-01-17 16.04.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/e63cbb35-b182-e816-8d41-f60c0d83cd26.png)
こんな形でkintoneのフィールドとのマッピングができるようになります。
あとはここにStripeコネクタから受け取った値をマッピングしていくだけです。

|入力欄|値|補足|
|:--|:--|:--|
|決済ID|{{2.body.data[].id}}|2つ目のStripeコネクタにある値|
|LINE User ID|{{1.object.metadata.line_user_id}}|1つ目のStripeコネクタにあるmetadata|
|商品ID|{{2.body.data[].price.id}}|2つ目のStripeコネクタにある値|
|合計金額|{{2.body.data[].amount_total}}|2つ目のStripeコネクタにある値|
|商品名|{{2.body.data[].description}}|2つ目のStripeコネクタにある値|

# 動作確認

今回、makeのフローが2つに分けれているため、実行モードをONにしておく必要があります。
makeの左側のメニューより「Scenarios」を選択します。
![スクリーンショット 2024-01-17 16.11.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/0cd61d3d-491e-5684-0e82-16bb2a749ecc.png)
LINEパートで作成したフロー（↑画面の無人店舗）をONにしておきます。

これをしておくことで、トリガーが常に待機している状態になるので、このまま先ほど修正してたフローの画面を開いて`Run once`を実行します
![スクリーンショット 2024-01-17 16.12.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/410a7b3f-b68e-bbc4-2702-5bcc9d304a5c.png)

LINEアプリに移動してBotに対して何かつぶやきます。
![Screenshot_20240117-161352.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/d44973fa-b0f0-0c59-9140-8a494e9a70b9.png)
![Screenshot_20240117-161431.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/1e7c4bad-f5bc-ff27-0dcb-029778d2c73f.png)

kintoneにデータが作成されていれば成功です！
![スクリーンショット 2024-01-17 16.27.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/d2831b0b-0aba-6bf3-1593-5b16507a02c6.png)

# +α）決済完了のお知らせをLINEにも投稿する

今のままでも一連の流れはできているのですが、ユーザーからすると決済URLが届いたあとに何もレスポンスがないため、本当に決済ができたのか不安です。
なので、決済が正常に完了したことをLINEにも返す処理を追加してみたいと思います。

先ほどまで修正していたフローにLINEのコネクタの `Send a Push Message` を選択します。
![スクリーンショット 2024-01-17 16.38.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/37388ed1-945b-a428-8d4d-56c348109b01.png)

Stripeコネクタと繋げようとすると自動的にRouterという分岐コネクタが出てくるのでそのまま接続します。（makeすげー）
![スクリーンショット 2024-01-17 16.39.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/39f1e5b8-b694-4e09-5f26-ea504585de99.png)

ConnectionにLINEパートで作成したLINEコネクションを選択して、Toにkintone設定でも利用したmetadata（LINE User ID）を指定します。
![スクリーンショット 2024-01-17 16.41.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/8cf574ca-15cb-1ebf-ecd1-3bb3a7e4b230.png)

これで完了なので、再度動作テストをすると・・・
![Screenshot_20240117-164344~2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/5bab4bf5-d268-cb19-c9b0-003ccc04a559.png)

完了のメッセージが届きました！（適宜、わかりやすいやつに変えてくださいw）

こんな形でこれも追加しよ、と思ったタイミングですぐに修正できるのがノーコード開発の最大のメリットです！

# 分析

kintoneは購買履歴データからの分析ツールとしても利用することが可能です。
![スクリーンショット 2024-01-17 20.22.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/a10635c9-9b8b-3989-c99f-abbfe15cf563.png)

・・・うん。今回のデモデータではグラフにしても全然楽しくないですね・・。
![スクリーンショット 2024-01-17 20.22.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/4635b094-407d-07a6-3fee-c70595dc8c6c.png)

まともなデータを入れるとこんな感じになります！
![スクリーンショット 2024-01-17 20.23.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/029a1ea3-dba7-8613-0270-52cb77ff1564.png)
![スクリーンショット 2024-01-17 20.23.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/3247684a-644d-4883-f34b-4fcc6dece31b.png)
![スクリーンショット 2024-01-17 20.24.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/c8227c4f-a063-6aa2-41b3-299e515249bd.png)

# 発展

さらに、LINEアカウント情報をあらかじめkintoneで管理しておけば、
そのアカウントに紐づく属性等も管理することが可能になり、
つまり購買履歴に購入者の属性情報を紐付けることも可能になります。

こんな形でLINE IDに紐づく情報を管理しておけば、
![スクリーンショット 2024-01-17 20.29.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/c35b530a-d31b-48c7-f554-3bf98fd0f206.png)

こんな形で各購買履歴に購入者（LINEアカウント）の属性が紐付けられる！
![スクリーンショット 2024-01-17 20.30.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153051/f5077842-b155-f2ad-a3f5-afd8041a2ffa.png)

LINEアカウント情報をkintoneで管理する方法はこちらの記事をご覧ください！（今回のmakeを使ってももちろん実現可能です）

https://qiita.com/RyBB/items/23221bafd8231579b396

# まとめ

LINE×Stripe×kintoneという3つのSaaSサービスをノーコードで連携させるシナリオでした！
makeなどのiPaaSをうまく使うことで複雑そうに思えるシナリオもノーコードでサクッと作れてしまいます！すごい！