WooCommerceでのApple Pay決済(Stripe)時に起こるエラーを回避する

WooCommerceのStripe GatewayにてApple Payの対応が、
自社サイトでも超簡単に導入できるようになりました。

今回は、Apple Pay決済時に起きる、「送付先電話番号を入力してください」というエラーの解決方法です。

おそらく、これから日本国内にて、
WooCommerce及びApple Payが普及してきて、
絶対にぶち当たる人が多そうなのでシェアしておきます。

EIKING
なお、個人的にはApple Payは普及しないと思っています。(アンチiPhone)

 

実際のApple Pay決済時のエラーと原因

実際に出現するエラーがこちらになります。

Apple Payでの決済完了かと思いきや時に発生します。

ようは、「送付先電話番号」が必須なのに入力されてないので、決済完了できないというエラーです。

で、実はこの「送付先電話番号」なんですが、
WooCommerceのデフォルトでは存在しません。

「請求先電話番号」しかないんですね。

原因はなんなのか。

実は、WooCommerce For Japan というプラグインです。

EIKING
入れてるでしょ?
Makosei
お・・・おっす!!

このプラグインによる日本マーケット向けの追加項目として、
「送付先電話番号」があり、またそれが「必須」となっています。

しかし、Apple Pay側からWooCommerce側に渡す情報の中には、
もちろんこの「送付先電話番号」が存在していません。

よって、エラーになるわけです。

 

今回のApple Pay決済時エラーの具体的解決策

なので、じゃあどうやって解決しましょうかということですが。

うちでは単純に、「送付先電話番号」を必須から除外することにしました。

これが判断として正解かはわかりませんが、
「請求先電話番号」はWooCommerceデフォで必須なのでまあ大丈夫かなという判断です。

ということで、やることはきまりました。

WooCommerce For Japanのプラグインファイルをいじくって、
必須解除しましょう!

ちなみに今回の編集はプラグインファイルを直接いじります。fanction.phpに追記する方法もあるみたいなんですが、なんせ素人に毛が生えた程度ですので、プラグインアプデ時毎度更新覚悟で、直接ファイルいじる所存です。

 

編集するphpファイルを選択

WordPress管理画面より、

プラグイン > プラグインの編集
から、編集する「WooCommerce For Japan」プラグインを選択し、
include > class-wc-address-field-4jp.phpを選択します。

 

class-wc-address-field-4jp.php内コード書き換え

164行目あたり(これはプラグインの更新で変わるかも)から、

    public function shipping_address_fields( $fields ) {
        $address_fields = $fields;

        $address_fields['shipping_state']['class'] = array( 'form-row-last', 'address-field' );
        $address_fields['shipping_state']['clear'] = true;
        $address_fields['shipping_phone'] = array(
            'label'         => __( 'Shipping Phone', 'woocommerce-for-japan' ),
            'required'      => true,
            'class'         => array( 'form-row-wide' ),
            'clear'         => true,
            'validate'      => array( 'phone' ),
        );
        if(!get_option( 'wc4jp-company-name'))unset($address_fields['shipping_company']);
        return $address_fields;
    }

 

とありますね。

ここの、

            'required'      => true,

 

を、

            'required'      => false,

 

にして完了です。

 

配送先電話番号が必須ではなくなりました

これで、「配送先電話番号」が必須項目ではなくなったので、
空白でも問題なく決済が完了するようになりました。

 

Apple Payでの決済が完了しました

そして、問題なくApple Payでの決済が完了しました。

 

ということで、

うちで運営している、TREZOR正規代理店MyHardwareWalletでは、Apple Pay完全対応してますので、
ぜひご利用ください😇

 

プラグインの更新時は注意

プラグインのアップデートがあった場合は、必ず編集したファイルを確認しましょう。

おそらく上書きされてるので、
編集した部分は元通りになってると思います。

そのためにも、
「編集した部分」のバックアップは保持しておきましょう。

なぜphpファイルではなく、「編集した部分」のほうがいいのか。

それは、実際プラグインのアップデートによって、
編集した部分以外のところが新しくなってることもあるからです。

そうなるとファイルごと元にもどすとバグの原因になります故に。

EIKINGの開発チームにジョインしませんか?


lismoaの開発チームは、あなた待ちです!

lismoa開発チームでは、Ui/UXデザイナー及びRubyのサーバサイドエンジニアを常時募集しています。
lismoaはEC販売者向けの次世代のインフラシステムです。国内外の大手企業とも提携し、最強のECインフラを目指しています。
楽しいよ、いっしょにどうですか?

EIKING
質問や相談は、TwitterかLINE@でお気軽にどうぞやで

コメントを残す

メールアドレスが公開されることはありません。

ABOUTこの記事をかいた人

1985年生まれ、愛媛県出身東京都在住。26歳で起業し、現在は商品開発及び直販・システム開発・仮想通貨(暗号通貨)関連の事業を行う会社を2社経営。 ”遊ぶために働く、働くために遊ぶ”の相乗効果がパフォーマンスの高い人生を実現できる方法と信じ、日々死ぬほど働き、死ぬほど遊んでいる。 趣味はフェス・ライブ観戦(主にBABYMETAL)、麻雀、旅行。 このブログでは、自身が経験したタメになったことや、自信の考えをビジネス・遊び関係なしで配信中。