Shopify flowで支払い期限切れの注文を在庫に戻したい(Unpaidの変数について)

Topic summary

ユーザーがShopify Flowでコンビニ決済の支払い期限切れ注文を在庫に戻すフローを構築しようとしたが、KOMOJUの資料通りに設定してもうまく動作しなかった。

問題点:

  • order.unpaid変数がfalseを返し、期待通りに機能しない
  • 当初、unpaid=trueが「支払いなし」、unpaid=falseが「支払いあり」と理解していた

原因の特定:

  • 回答者の検証により、order.unpaidは支払い完了状況では変化しない可能性が判明
  • コンビニ払いや銀行振込など「保留中の決済」でもfalseになる
  • クレジットカードの即時決済でもfalseになるため、条件分岐には不適切
  • Shopify海外コミュニティの投稿でも同様の挙動が報告されている

解決策:

  • order.unpaidの代わりにorder.displayFinancialStatusを使用
  • この変数で条件分岐を設定し、無事に解決した

添付画像には設定画面とフロー構成が含まれている。

Summarized with AI on November 22. AI used: claude-sonnet-4-5-20250929.

Shopify flowでコンビニの支払い期限切れた注文を在庫に戻すフローを組みたいと思っています。

KOMOJUから提供された下記資料通りに組んだのですが、うまくワークしませんでした。

Run historyから注文を確認したところ、支払いなしの注文に対してfalseを返しているようでした。

・Unpaid(支払いが行われていないかどうか)がtrueの場合、支払いなし

・Unpaid(支払いが行われていないかどうか)がfalseの場合、支払いあり

と理解していたのですが、こちらが逆になりますでしょうか?

もし違っていた場合に、支払い済みのお客様のオーダーをキャンセルしてしまうため、質問させていただきました。

よろしくお願いいたします。

・Unpaid(支払いが行われていないかどうか)がtrueの場合、支払いなし

・Unpaid(支払いが行われていないかどうか)がfalseの場合、支払いあり

と理解していたのですが、こちらが逆になりますでしょうか?

逆というわけではないように思われました。

おそらく、Komojuのコンビニ払いは支払いステータスが「保留中の決済」になるかと思います。

私は、Komojuを導入していませんので、同様に「保留中の決済」となる銀行振込で試してみました。

質問者様と同様に、支払いステータスが「保留中の決済」の時、

order.unpaidはfalseになりました。

しかし、

クレジットカードで即時決済を行った場合も、同様に、

order.unpaidはfalseになりました。

したがって、

order.unpaidの値は、

支払いが完了しているかどうかでは変化しない可能性があります。

海外のShopifyコミュニティの投稿に興味深いものがありました。

https://community.shopify.com/c/shopify-apis-and-sdks/graphql-orders-fullypaid-true-returns-orders-pending-payment/td-p/564473

Shopify Flowは、基本的に、APIの仕様に則っていたと記憶していますので、

上記の投稿の情報をShopify Flowの話にも適用できるかと思います。

上記の投稿によると、

pending(保留中の決済)の時、order.unpaidはfalseとなる、

そうです。

これがバグかどうかはともかく、

「保留中の決済」は、order.unpaidがfalseになるというのは間違いないということだけは言えそうです。

そうしますと、

order.unpaidを条件分岐として利用するのは危険そうです。

Komojuのヘルプページにある通り、

https://komoju-ja.helpscoutdocs.com/article/636-shopify-flow

STATUSを利用されるのが良いかと思います。

しかし、

Komojuのヘルプページは少し古いようですね。

現在は、下記を使われるのが良いのではないかと思います。

order.displayFinancialStatus

ご参考まで。

(キュー田辺)

order.unpaidの値が支払い状況で変化しない可能性は考えておらず、盲点でした。
order.displayFinancialStatusを使用し、下記の設定で無事に解決いたしました。

ご返信ありがとうございました。

2 Likes