[Magento]BankPaymentの情報が取引メールに表示されない

支払方法に簡単に銀行振込の口座が指定できる便利なエクステンション「Bank Payment」ですが、取引メールの支払方法欄に支払方法が表示されないという不具合があるようです。
(以前はちゃんと出てたような気がするので、本体のバージョンアップのせいかもしれません)

取引メールで支払方法を表示するには、メールテンプレートで

{{var payment_html}}

または、

{{var paymentMethod}}

と書けば、そこに支払方法が表示されます。

しかし、「Bank Payment」で設定した支払方法を選択すると、ここが空欄になってしまうのです。
同じ開発元の「Cash On Delivery」は、この方法で表示されますので、エクステンション側の問題だろうと思われます。

いろいろ調べたのですが、私の技術力では原因を突き止めることはできませんでした。
でも、なんとか表示させる方法は見つかりました。

支払方法のタイトルを表示する

まず、支払方法のタイトルを取引メールに表示させる方法ですが、メールテンプレートで直接メソッドを呼び出すことができるので、下記で支払方法のタイトルを表示させることができます。

{{var order.getPayment().getMethodInstance().getTitle()}}

振込先口座(アカウント情報)を表示する

振込先口座は、「Bank Payment」の「getAccounts()」というメソッドで取り出すことができます。
しかし、このメソッドの返り値は配列なので、そのままメールテンプレートに書いても、「Array」と表示されてしまいます。

ここでメソッドを追加することもできるのですが、元ファイルに手を加えないというMagentoの作法にのっとって、テンプレートファイルを追加してアカウント情報を展開したものが得られるようにします。
テンプレートファイルは、「app/design/・・・/BankPayment」のディレクトリに作成します。
ファイル名は任意なので、今回は「getAccounts.phtml」としました。

(新規ファイル)app/design/frontend/base/default/template/bankpayment/getAccounts.phtml

<?php
$allAccounts = '';
$_accounts = $this->getPayment()->getMethodInstance()->getAccounts();
if ($_accounts) {
   foreach($_accounts as $_account):
      $allAccounts .= $_account->getAccountHolder().'<br />'.'  '.$_account->getBankName().'<br />';
   endforeach;
   $allAccounts .= '<br />'.$this->getPayment()->getMethodInstance()->getCustomText();
}
echo $allAccounts;

実はこのテンプレートファイルの内容は、「BankPayment」のディレクトリにある、info.phtml を流用したものです。
info.phtml はレジでの表示に使用されているので、これを参考に出力用文字列 $allAccounts の内容を変えることができます。

取引メールテンプレートでは、次のように書けば振込先口座の情報が表示されます。

{{block type='core/template' area='frontend' template='bankpayment/getAccounts.phtml' payment=$order.getPayment()}}

仕組みがわかってしまえば、アレンジも簡単だと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です