決済方法が銀行振込の場合に「支払い期限として翌週の月曜日の日付を表示する」方法を事例にLiquidを使った日付計算を紹介!
Shopifyの通知メールは、カスタマイズのニーズが特に高いパーツのひとつです。
たとえば、商品の属性に応じて表示内容を変えたり、決済方法によって支払い期限や注意事項を調整したい、という要望はよくあります。特に「銀行振込」や「コンビニ決済」のような後払いの決済方法では、支払い期限を明示することが重要です。
今回は、 決済方法が銀行振込の場合に「支払い期限として翌週の月曜日の日付を表示する」方法をご紹介します。
BtoB向けストアなど、銀行振込を前提としたケースに役立つ小技ですが、Liquidを使った日付計算の学習にもなるので、ぜひ最後まで読んでみてください!
こんなイメージ
もちろん、シンプルに 「来週月曜日までお願いします」 と記載するだけでも問題ありません。ですが、具体的な日付を明記したほうが、より親切ではないでしょうか?
今回の仕組みはシンプルです。
顧客がチェックアウト(決済)ページで「銀行振込」を選択すると、注文通知メールの文面に支払い期限として翌週月曜日の日付が自動で表示されます。この処理をLiquidを使って計算し、自動化する方法を紹介します。
支払い方法による条件分岐
本題に入る前に、支払い方法による条件分岐を押さえておきたいと思います。
{% for transaction in order.transactions %}
{% if transaction.gateway == "Bank Deposit" %}
<p>お支払い方法は銀行振込です。</p>
{% endif %}
{% endfor %}
Shopifyコミュニティなどで以下のようなコードは見受けられますが、
{% if order.transactions[0].gateway == "Bank Deposit" %}
<p>お支払い方法は銀行振込です。</p>
{% endif %}
このコードだと、決済方法の配列の1番目([0])が銀行振込がどうかを判定するif文になるため、うまくいかない場合があると思います。
Liquidコード
さっそくLiquidコードを見ていきましょう。
{% assign order_date = order.created_at | date: "%s" %}
{% assign weekday = order.created_at | date: "%w" %}
{% case weekday %}
{% when "1" %} {% assign days_until_monday = 7 %}
{% when "2" %} {% assign days_until_monday = 6 %}
{% when "3" %} {% assign days_until_monday = 5 %}
{% when "4" %} {% assign days_until_monday = 4 %}
{% when "5" %} {% assign days_until_monday = 3 %}
{% when "6" %} {% assign days_until_monday = 2 %}
{% when "0" %} {% assign days_until_monday = 1 %}
{% endcase %}
{% assign seconds_until_monday = days_until_monday | times: 86400 %}
{% assign next_monday_timestamp = order_date | plus: seconds_until_monday %}
{% assign next_monday = next_monday_timestamp | date: "%Y年 %-m月 %-d日" %}
<p>お支払い期日: {{ next_monday }}(月曜日)午前中</p>
Liquidコードを簡単に解説いたします。
①変数order_date
に注文日の情報を「秒(%s)」で取得し格納
②変数weekday
に注文日の曜日(%w)を格納
③「case-when」構文を使って、注文曜日ごとに翌週月曜日までの残日数を変数days_until_monday
に格納
④翌週月曜日までの「秒」を計算(残日数×86400)し、変数seconds_until_monday
に格納
⑤注文日(order_date_jst
)にseconds_until_monday
にプラス→変数next_monday_timestamp
に格納
⑥変数next_monday_timestamp
を「〇年〇月〇日」というフォーマットに変え、変数next_monday
に格納
⓪変数next_monday
を表示
以上、決済方法が銀行振込の場合に「支払い期限として翌週の月曜日の日付を表示する」方法を事例にLiquidを使った日付計算を紹介しました。ぜひご活用ください。