WooCommerceにAmazon Pay 決済プラグインを入れても定期課金ができない不具合の原因

Posted by VALID SEO on 2017年06月19日(月)12:59

わしは、一体、何屋さんなの?!というところですが、ご縁がありましてWooCommerceにAmazon Pay 決済プラグインを導入する、という作業のお手伝いをさせていただいておりました。

 
お客さんがやりたかったのは、定期課金(Subscriptions、Recurring Payment)ということで、まぁ月々の会費の徴収ですね。
 

PayPalでやってもいいんですが、Amazon Payでもやりたい(ショップの一つにAmazonを使っておられるため?)ということで、簡単な導入方法ないか?ということでした。

正直、当方はこの辺りの知識が非常に疎いので「うちでは、難しいです。」というお返事差し上げたのですが、

「WooCommerceにAmazon Pay 決済プラグインがある」
「それでとりあえず簡単に導入できそう」
「とりあえず、できるところまで自分でやってみるから、サポートだけお願いします。」

という流れで、サポートだけすることになりました。

 
ということで、WooCommerceをインストールされて、有料の

を導入。その後、無料の

を設定するところまでたどり着かれました。

 
が、商品登録してみるとなぜか、支払画面(/checkout)でAmazon Payの決済方法が出てこずに、

Sorry, it seems there are no available payment methods which support subscriptions. Please contact us if you require assistance or wish to make alternate arrangements.

日本語だと

現在の状況で利用可能な支払方法がありません。お手伝いを必要とするか、または別の方法をご希望の場合はお問い合わせください。

というエラーメッセージが表示されます・・・。

何か設定が悪いのかなんなのか・・・とソースを追っかけたり、いろいろな設定で試してみたりしましたが、原因がわからず・・・でした。

 

500円の商品なら定期課金ができることを発見、そしてAmazon Payの仕様を確認すると・・・

ということで、お客さんといろいろ試しているうちに、

  • 現状でも定期課金(Subscriptions)できないわけでじゃない
  • 課金できる条件として500円以下の商品なら定期課金(Recurring Payment)ができる

ということが分かりました。

 
なんか怪しいなこの「500」という数字・・・ということで、いろいろ調べていくとWooCommerce用のAmazon Pay 決済プラグインのdocsフォルダーの中の

  • DEVELOPER.md というテキスト(?)ファイル

を開いてみると、

### Recurring Payment Limits

The recurring payments API limits total charges to a single billing agreement to $500 per calendar month.

According to [this documentation page](https://payments.amazon.com/documentation/automatic/201752090#201757640):

> **Note**: Amazon imposes a $500 per calendar month limit on the amount of funds you can charge a buyer. If you expect to exceed this limit due to an upgrade or the buyer’s usage, please contact Amazon.

It is unclear if/how the limit will be altered should you contact Amazon.

If an authorization/capture attempt is made that pushes a given billing agreement over the $500 monthly cap, the following error will be encountered:

> BillingAgreement C01-6601668-8704891 has already been authorized for amount 0.00 in time period i.e. Sun Nov 01 00:00:00 UTC 2015 ? Tue Dec 01 00:00:00 UTC 2015. A new authorization with amount 503.00 cannot be accepted as the total authorization amount cannot exceed 500.00.

In order to curb the number of potential recurring payment failures due to the cap, the gateway will disable itself if a cart contains more than $500 of recurring monthly subscriptions.

というような記述がありました。

アマゾンには「月々の定期課金は500ドルまで」という制限があるらしく、それに合わせてAmazon Pay 決済プラグイン内でも500ドルの制限があります、的な記述かと思いますが、なんかこの「500」という数字が怪しいです。

 
でソースを確認してみると、見事に
WC_Gateway_Amazon_Payments_Advanced_Subscriptions というクラスの中の is_available() という関数の中で、

// Check monthly limit if seller supports recurring payment.
if ( $is_available && $this->is_seller_supports_recurring_payments() ) {

$potential_monthly_max = $this->calculate_potential_monthly_maximum_payment_in_cart();

if ( $potential_monthly_max > 500 ) {
return false;
}
}

ということで、「500」を越える場合は、false を返すようになってました。

 
でも、これ

国別通貨の対応してないやん!(笑)

 
まー、Freeプラグインだからしょうがないけど、とりあえず、この500を

if ( $potential_monthly_max > 50000 ) {
return false;
}

な感じで50000(アマゾンジャパンの制限値が5万のようです。)に修正して月額3万円の会費を徴収できるように修正いたしました。

 
しょうがないんだけど、アマゾンの定期課金の上限値の制限はどっか管理画面で設定できるようにしたほうがいいような気もしますねー・・・。

まぁ、こういうプラグインの設計方針に詳しくないので何ともいえませんが・・・。

 
おかげで、売上向上クラブのイベントも終わったし、久しぶりに土日はゆっくり寝ようと思っていたのに金曜から今日までほとんどこれに掛かりっきりになってしまいました。

勉強にはなりましたし、自分の所でも短期間で定期課金のサービス構築できるようになったんで結果として良かったですけどね。

 
サービスインが近いんで、正直胃が痛くなりましたが、解決してよかったです、ホント(笑)
 
 

追記 2017/07/08 17:18:17)

WooCommerce Amazon Pay Gateway の version 1.7.3 で不具合解消したようです。

 
 


お役に立てましたら、↓どこかで拡散して頂けると嬉しいです。
人気SEOブログランキング このエントリーをはてなブックマークに追加

Comments are closed.


  • ツイッター