ECcube Paypalモジュール。ペイパルへ遷移時にフォームを自動入力するハック

ECcubeにはPaypalモジュールがあるのだが、ペイパルの支払いページに移った時、フォームに自動入力してくれない。
これだと、ペイパルでの購入者は、住所や氏名など何項目も再入力する必要がある。
ユーザー登録の時に同じデータを入力しているのに、また同じ項目を入力させるフォームが出たらユーザー側からすれば腹立たしい物ではないだろうか。
少なくても筆者ならやりたくない。

そこで、ユーザの利便を考え、ペイパルサイトに遷移した時にカード情報以外の部分を予め自動入力してしまおうというハックである。
改善を行ったのはECcubeの2.4.4、決済モジュールは1.0.1というバージョンである。恐らくは他のバージョンでも大体は似たようなものだろう。

変更部分は次の二か所

変更1
data/downloads/module/mdl_paypal/paypal_link.tpl 53行くらいに以下を追加

    <!–{assign var=key value="first_name"}–>
    <input type="hidden" name="<!–{$key}–>" value="<!–{$arrForm[$key].value}–>" />
    <!–{assign var=key value="last_name"}–>
    <input type="hidden" name="<!–{$key}–>" value="<!–{$arrForm[$key].value}–>" />
    <!–{assign var=key value="state"}–>
    <input type="hidden" name="<!–{$key}–>" value="<!–{$arrForm[$key].value}–>" />
    <!–{assign var=key value="city"}–>
    <input type="hidden" name="<!–{$key}–>" value="<!–{$arrForm[$key].value}–>" />
    <!–{assign var=key value="address1"}–>
    <input type="hidden" name="<!–{$key}–>" value="<!–{$arrForm[$key].value}–>" />
    <!–{assign var=key value="address2"}–>
    <input type="hidden" name="<!–{$key}–>" value="<!–{$arrForm[$key].value}–>" />
    <!–{assign var=key value="zip"}–>
    <input type="hidden" name="<!–{$key}–>" value="<!–{$arrForm[$key].value}–>" />
    <!–{assign var=key value="night_phone_b"}–>
    <input type="hidden" name="<!–{$key}–>" value="<!–{$arrForm[$key].value}–>" />
    <!–{assign var=key value="email"}–>
    <input type="hidden" name="<!–{$key}–>" value="<!–{$arrForm[$key].value}–>" />

 

変更2
data/downloads/module/mdl_paypal/LC_Page_Mdl_Paypal_Helper_Link.php 161行くらいに以下を追加

        //追加///////////////////////////////////////////////////////////////////////////////////
        $this->objFormParam->addParam("first_name", "first_name", URL_LEN, "KVa", array("MAX_LENGTH_CHECK"),$arrData["deliv_name02"]);
        $this->objFormParam->addParam("last_name", "last_name", URL_LEN, "KVa", array("MAX_LENGTH_CHECK"),$arrData["deliv_name01"]);
        $this->objFormParam->addParam("zip", "zip", STEXT_LEN, "KVa",array("MAX_LENGTH_CHECK"),$arrData[‘deliv_zip01’]."-".$arrData[‘deliv_zip02’]);
        $Jp_ken = array("北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県","茨城県","栃木県","群馬県","埼玉県","千葉県","東京都","神奈川県","新潟県","富山県","石川県","福井県","山梨県","長野県","岐阜県","静岡県","愛知県","三重県","滋賀県","京都府","大阪府","兵庫県","奈良県","和歌山県","鳥取県","島根県","岡山県","広島県","山口県","徳島県","香川県","愛媛県","高知県","福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県","沖縄県");
        $objQuery = new SC_Query();
        $city = $objQuery->get(‘mtb_zip’, ‘city’, ‘zipcode = ?’, $arrData[‘deliv_zip01’] . $arrData[‘deliv_zip02’]);
        $this->objFormParam->addParam("state", "state", STEXT_LEN, "KVa",array("MAX_LENGTH_CHECK"), $Jp_ken[$arrData["deliv_pref"]-1]);
        $this->objFormParam->addParam("city", "city", STEXT_LEN, "KVa",array("MAX_LENGTH_CHECK"), $city);
        $this->objFormParam->addParam("night_phone_b", "night_phone_b", STEXT_LEN, "KVa",array("MAX_LENGTH_CHECK"),$arrData["order_tel01"]."-".$arrData["order_tel02"]."-".$arrData["order_tel03"]);
        $this->objFormParam->addParam("address1", "address1", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"), str_replace($city, "", $arrData["deliv_addr01"]));
        $this->objFormParam->addParam("address2", "address2", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"), $arrData["deliv_addr02"]);
        $this->objFormParam->addParam("email", "email", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"), $arrData["order_email"]);

 

これで、ページ遷移時にフォームへ自動入力されているはずです。
なお、不具合については特にチェックしていませんのでよくテストをした方が良いと思われます。
ハックの適用は自己責任でお願いします。