Paidy でバーチャル商品が決済できない
-
こんにちは、便利なプラグインありがとうございます。
Paidy決済にてバーチャル商品(発送の必要がない)を注文する際に決済できず、色々調べた結果、おそらく Japanized for WooCommerce での問題?対応が必要だと思われたためご連絡しました。
(発送が必要な商品は問題なく決済できました)■テスト環境
WordPressバージョン(最新バージョン)
- WordPress: 6.6.2
プラグイン(エラー再現のため2点のみ。すべて最新バージョン)
- WooCommerce: 9.3.2
- Japanized for WooCommerce: 2.6.17
テーマ(最新バージョン)
- Storefront: 4.6.0
■問題の箇所
- WooCommerce Checkout 画面
- → Paidy 選択
- → Paidy Checkout ポップアップのフォームにメールアドレスと携帯番号を入力(テスト環境のため、Paidyから提供されている、承認されるメールアドレスと携帯番号)
- → 決済エラー「ペイディの決済が承認されませんでした」
■原因と思われる箇所
woocommerce-for-japan/includes/gateways/paidy/class-wc-gateway-paidy.php
499 – 507行目辺り<?php if($not_virtual){ ?>
"shipping_address": {
"line1": "<?php echo $shipping_address['line1'];?>",
"line2": "<?php echo $shipping_address['line2'];?>",
"city": "<?php echo $shipping_address['city'];?>",
"state": "<?php echo $shipping_address['state'];?>",
"zip": "<?php echo $shipping_address['zip'];?>"
},
<?php } ?>woocommerce-for-japan ではバーチャル商品の場合、shipping_address を送信しないようにしていると思うのですが、Paidy のドキュメントを見ると、shipping_address は必須のようで、この事が原因で決済できないように思われました。
以下補足事項
- テスト時、$not_virtual は false (バーチャル商品として処理されていると思います)
- 強制的に shipping_address の state と zip の2つだけを送信すると、バーチャル商品でも問題なく決済できました
<?php //if($not_virtual){ ?>
"shipping_address": {
//"line1": "<?php echo $shipping_address['line1'];?>",
//"line2": "<?php echo $shipping_address['line2'];?>",
//"city": "<?php echo $shipping_address['city'];?>",
"state": "東京",
"zip": "000-0000"
},
<?php //} ?>説明長くなりすみません、お手数ですがご確認のほど宜しくお願いいたします。
- You must be logged in to reply to this topic.