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

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

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

無期限の無料トライアルではじめよう。


今すぐshopifyのショップ構築をはじめよう

弊社は、shopify公式に認められたshopify expertsメンバーです。shopifyパートナーとして多くのクライアントさまのshopify構築をお手伝いしています。

shopifyのトライアルは通常14日です。短いですよね?うちのフォームからお申し込みすれば無期限で無料トライアル可能です。

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

ABOUTこの記事をかいた人

ネット物販を愛する男。 整備士から転身してネット物販で起業、約1年半で月利8桁に到達。 現在はアパレルD2C、lismoaやPRIMAの運営、EC専門のシステム開発、shopify構築サービスの会社(shopify experts認定)を経営するYouTuber。