発送連絡メールで、特定の支払い方法をしたユーザーのみに文章を表示したい

AI-generated summary

発送連絡メールで、支払い方法ごとに表示文を出し分ける方法が相談され、Liquidの条件分岐で対応できる案が提示された。transactions をループし、transaction.payment_details.credit_card_company や transaction.gateway_display_name を使って、クレジットカード・銀行振込・代引きなどで文言を切り替える内容。

補足として、既存の for transaction in transactions ループ内に設置する場合は、外側のループ記述を省く必要がある点と、想定外の決済方法向けに else を残しておく例も示された。銀行振込のみを対象にする簡略版コードも案内された。

その後、手動決済で日本語名の「テスト決済」を追加した場合、transaction.gateway_display_name に何が入るかが質問された。回答では未検証ながら、英語の決済名と同様に入力した文字列がそのまま入る可能性が高いと説明された。

最終的に、提示された方法で実装できたとの報告があり、この相談は解決済み。

自動送信される発送連絡メールで、
特定の支払い方法をしたユーザーのみに
指定の文章を表示したいのですが可能でしょうか。

少々自信がありませんが、恐らく以下で分岐が作れるかと思います。

{% for transaction in transactions %}
  {% if transaction.payment_details.credit_card_company %}
    

クレジット払い用文章

  {% else %}
    {% capture transaction_name %}{{ transaction.gateway_display_name }}{% endcapture %}
    {% case transaction_name %}
      {% when 'Bank deposit'}
        

銀行振り込み用文章

      {% when 'Cash on delivery (cod)'}
        

代引き用文章

      {% else %}
       

{{ transaction_name }}用文章

    {% endcase %}
  {% endif %}
{% endfor %}

上記の注意点は以下の通りです。

  • {% for transaction in transactions %} のループがすでに書かれている中に設置する場合は、1行目の {% for transaction in transactions %} と最後の {% endfor %} が不要なので削除する
  • 分岐最後の「 {{ transaction_name }}用文章」はクレジットでも銀行振り込みでも代引きでもない場合の表示用

ここまでを踏まえ、例えば銀行振り込みのみの場合は以下のようになります。

{% for transaction in transactions %}
  {% if transaction.gateway_display_name == 'Bank deposit' %}
    

銀行振り込み用文章

  {% endif %}
{% endfor %}

設置場所やクレジットカード決済か否かなどで記述が替わるため少々ややこしいですが、プレビューやテスト購入などで出力を確かめていただければと思います。

ありがとうございます!
ちょっとまだ試せてないですがこのコードでいろいろ解決できそうです!
ちなみに、例えば「手動の決済方法」に日本語名で「テスト決済」という名前の決済を追加して、
支払い時に「テスト決済」を選択した場合、
transaction.gateway_display_nameには’テスト’が入ってくるのでしょうか?
ご存知でしたら教えていただきたく存じますm(__)m

確認いただきありがとうございます。

試していないので明確なことは言えませんが、「テスト決済」と入力したら、恐らくそのまま「テスト決済」と出力されると思います。

Bank deposit などもスペースが入っていてそのまま文字列として使われているように見え、日本語でも恐らく同じだと考えられるためです。

間違っていましたらすみません。

教えていただきありがとうございます、試してみます!
また結果をこちらで報告できたらと思います。

jizoさんに教えていただいた方法で出来ました!ありがとうございました!!