アソビューでバックエンドエンジニアをしている上中です。
皆さんShopify利用してらっしゃいますでしょうか。弊社ではアソビュー!ギフトというECサイトを、Shopifyを利用して運営しています。
ShopifyにはFlow(※注)という便利な機能がありますので、今回はそちらを利用して弊社システム内に作成したRest APIを呼び出してみたいと思います。
※注: Shopify FlowはShopify Plusプランに加入している場合のみ利用可能です。
なぜShopify Flowを使うのか?
アソビュー!ギフトでは、ギフト商品を購入いただくと「ギフトコード」というコードが購入者に送られ、そちらを指定のサイトで入力いただくことで体験したいプランが選べるという仕組みになっています。このギフトコードの提供方法として、今回メールでの送信を検討しました。
メールは、顧客が商品を注文すると同時に送りたいわけですが、ギフトコードは弊社独自のシステムにより生成されるため、Shopify だけで機能を完結することはできません。”注文”をトリガーにして、Shopifyから弊社システムのAPIをフックし、ギフトコードの発行と独自フォーマットによるメールの送信を弊社システムによって行う必要があります。
そこでShopify Flowを使ってみることにしました。
フローを作ってみよう
ちょうどこの記事を書いているタイミングでUIが変わっていたので、新UIを探りながら作っていきます。
大まかな流れとしては、トリガー選択 -> 条件を追加 -> アクションを定義の順番で作成を進めます。
- まずはワークフローの画面を開き、「ワークフローの作成」を選択します。
ワークフロー作成時は下図のように様々なシチュエーションに応じてあらかじめ用意されたテンプレートをベースに作成することもできますが、今回はあえて一から作成していくのでテンプレートではなくトリガーを選びます。
2. フローを動作させたいタイミング「トリガー」を選択します。
今回は「注文に対する支払いが完了したとき」にAPIを実行したいので、「Order paid」を探して選択します。説明にある通り、支払いが発生した時にworkflowを起動するトリガーです。
3. 次に、このままアクションを追加すると全ての支払いでアクションを実行してしまうため、条件を追加します。今回は、特定の文字列を含んだSKUの商品が注文に含まれる場合のみ実行することにします。
「Lineitems」は注文に含まれる商品の明細を示しています。
「他の比較を追加する」からAND条件を作成することも可能。
3. 複数の条件を連結することでAndやOR条件にすることも可能です。もう一つ条件を追加して見ます。
SKUだけではなく、支払いの状態が「PAID(完済)」になっていることを条件に加えます。Shopifyでは分割で支払いすることも想定されているため、支払いのたびにAPIを実行するのではなく、すべての支払いが完了して初めてAPIを実行します。
Display financial statusで支払いの状態をチェックします。
4. 最後に、すべての条件にマッチした際に実行したいアクションを追加します。今回は外部システムのRest APIを実行します。
Bodyは「変数の追加」から、Shopifyが保持している注文に関する情報をパラメータとして取り扱うことができます。ここでは注文のIDをAPIのBodyパラメータに付与します。
最後にJSON形式に整形します。以下のようにすることでValueに埋め込むことができます。
5. これで一つフローができました。あとは右上のスイッチをONにすれば、その後の注文に対してこのフローが適用されます。
「アクティビティ」から過去の実行結果を見ることも可能です。
ということで今回はShopifyのFlow機能の簡単な使い方でした。直感的で、初めてでもそれほど迷わず作成できます。
今回のAPI実行以外にも、特定の条件にマッチする注文にタグをつけるという用途でよく使います。
他にも様々なトリガーや条件、アクションを選択可能ですので、色々試してみようと思います。
さいごに
今回のような目的での使い方はあまり多くはないかもしれませんが、少しでも参考になれば幸いです。
アソビューではエンジニアを募集しています!ご興味ある方はぜひ応募ください!