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ファイルではなく、「編集した部分」のほうがいいのか。

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

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

そろそろ自社システム構築の時期では?


あなただけの専用システムで差をつけよう

売上が上がるほど、自社システムを構築することによるレバレッジ効果は増大します。

EC販売とシステム開発両方に精通した私たちillustriousにお任せください。
漠然とした相談でもかまいません、ご相談全て私EIKINGが対応します。

EIKING
YouTubeでは動画版eiking.asiaも配信してるのでチャンネル登録よろしくね。

ABOUTこの記事をかいた人

ネット物販を愛する男。26歳で整備士から転身してネット物販で起業、約1年半で月利8桁に到達。現在はネット物販、lismoaやPRIMAなどのネット物販用サービスの運営、ネット物販専門のシステム開発を行う会社を2社経営。 趣味はフェス・ライブ観戦(主にBABYMETAL)、筋トレ、旅行。