バージョン選択

フォーラム

メニュー

オンライン状況

48 人のユーザが現在オンラインです。 (38 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 48
もっと...

サイト内検索

質問 > フロント機能 > 注文受付メールに以前決済したクレジットカードと表示したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
2645dfd
投稿日時: 2024/5/24 20:41
対応状況: −−−
半人前
登録日: 2022/5/2
居住地:
投稿: 22
注文受付メールに以前決済したクレジットカードと表示したい
[EC-CUBE] EC-CUBE4.2.1
[レンタルサーバ] Xserver
[OS] 使用しているOS名、バージョン
[PHP] 7.4.33
[データベース] MySQL 10.5.13-MariaDB-log
[WEBサーバ] Apache
[導入プラグインの有無] GMO決済プラグイン
[カスタマイズの有無] カートスキップ

クレジットカードの決済プラグインでEC-CUBEペイメント決済プラグイン(4.2系)を使っています。

以前決済したクレジットカードで決済した場合に注文受付メールにその旨を表示させたいです。

試行錯誤したため説明が長くなってしまいましたが、試してみたことを説明します。

注文受付メールのデフォルトでは、クレジットカードで決済するとこのように表示されます。
お支払い方法:クレジットカード決済

GOM決済プラグインと連携すると、購入手続きの際に「以前決済したクレジットカード」が選択して決済できます。その場合、注文受付メールの表示をこのように変更したいです。
お支払い方法:以前決済したクレジットカード

GOM決済プラグインのMySQLを確認してみたところ、こちらでどちらなのかが判別できることに気が付きました。

DBテーブル:plg_gmo_payment_gateway_order_payment
カラム:memo01
新規のクレジットカードで決済したmemo01の内容:{"payment_type":"0",以降クレジットカートの詳細の記述~
以前決済したクレジットカードで決済したmemo01の内容:{"payment_type":"1",以降クレジットカートの詳細の記述~

そのため、注文受付メールのテンプレートにクレジットカート決済の場合、memo01のjsonを解析して表示を切り替える記述を追加しました。
クレジットカートの決済IDは8です。


{% if Order.Payment.id == 8 %}
    {% set memo01 = Order.Payment.memos|first.memo01 %}
    {% if memo01 is not empty %}
        {% set jsonMemo = memo01|json_decode %}
        {% if jsonMemo.payment_type is defined %}
            {% if jsonMemo.payment_type == "1" %}
                決済方法: 以前決済したクレジットカード
            {% else %}
                決済方法: クレジットカード
            {% endif %}
        {% else %}
            決済方法: クレジットカード
        {% endif %}
    {% else %}
        決済方法: クレジットカード
    {% endif %}
{% else %}
    決済方法: その他の支払い方法
{% endif %}



json_decodeがTwigのフォーマットが正しくありません。とエラーが出ましたので、
つかえるようにこちらのカスタマイズをしましたら、エラーは出てこなくなったので上記の記述のままテストしています。

src/Eccube/Twig/Extension/IntlExtension.php

    public function getFilters()
    {
        return [
            new TwigFilter('date_day', [$this, 'date_day'], ['needs_environment' => true]),
            new TwigFilter('date_min', [$this, 'date_min'], ['needs_environment' => true]),
            new TwigFilter('date_sec', [$this, 'date_sec'], ['needs_environment' => true]),
            new TwigFilter('date_day_with_weekday', [$this, 'date_day_with_weekday'], ['needs_environment' => true]),
            new TwigFilter('json_decode', [$this, 'jsonDecode']),//追加
        ];
    }

    public function jsonDecode($string)//追加
    {
        return json_decode($string, true);
    }



app/config/eccube/services.yaml

    Eccube\Twig\Extension\IntlExtension://追加
        tags: ['twig.extension']


しかし、以前決済したクレジットカートで決済し、memo01が「{"payment_type":"1",以降クレジットカートの詳細の記述~」になっていても注文受付メールの表示は「クレジットカード」になってしまします。

テンプレートへの記述が間違っているのか、他にいい方法があるような気もいたします。よろしければご享受いただければ幸いです。
tattsu
投稿日時: 2024/5/25 12:30
対応状況: −−−
仙人
登録日: 2023/12/23
居住地:
投稿: 335
Re: 注文受付メールに以前決済したクレジットカードと表示したい
ライセンスがどうなっているのか分かりませんので詳しくは書きませんが
そもそも最初のこの記述は正しいのでしょうか。

Order.Payment.memos|first.memo01

取得したいデータを表示している他の箇所を参考に修正するしかないかと思います。


----------------
-------------------

EC-CUBEカスタマイズ・バージョンアップ・不具合修正(状況調査は無料)
ゴールドパートナー。

2645dfd
投稿日時: 2024/5/31 10:38
対応状況: −−−
半人前
登録日: 2022/5/2
居住地:
投稿: 22
Re: 注文受付メールに以前決済したクレジットカードと表示したい
返信が遅くなってすいません。
他の方法もないか試してみたのですがなかなかうまくいかない状況でした。
頂いたアドバイスから再度修正してみます。ありがとうございます

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は93,362名です
総投稿数は111,029件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2315
5
umebius
2085
6
yuh
1845
7
h_tanaka
1755
8
red
1574
9
mcontact
1463
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.