こんにちは、Ryohei(@ityryohei)です!

本記事では、WordPressで会員制サイトを構築することができるSimple Membershipで、PayPalサブスクリプションの決済完了後に日本語姓名の会員が登録されない場合の対処法をご紹介しています。

Simple MembershipでPayPalサブスクリプションの決済は正常に処理されているのに日本語姓名の会員が登録されない。どうすればいいんだろう?

上記の疑問にお答えします。

では、解説していきます。

検証バージョン

本記事の内容は下記のバージョンにて検証した結果を記載しております。

  • WordPress:6.1.1
  • Simple Membership:4.2.3

PayPal決済完了後に日本語姓名の会員が登録されない原因

本現象が発生すると、英語の姓名で登録した会員は問題なく登録されるのに、日本語姓名の会員がSimple Membershipのメンバーに登録されません。英語の姓名であれば問題なく登録されるため、システム上の問題ではなく文字コードが影響している可能性が考えられます。

Simple Membershipのドキュメントには下記のように記載されています。

PayPal 即時支払い通知 (IPN) メッセージに、広く受け入れられている UTF-8 形式を使用したいと考えています。そうしないと、PayPal がお客様の言語のネイティブではないエンコーディングを使用して支払い通知を送信しようとすると、一部の文字が認識できなくなります。

引用元:PayPal IPN メッセージの UTF-8 形式の設定

IPNはPayPalの取引情報の通知するメッセージサービスで、PayPalで決済された取引情報はIPNでWordPressに通知されます。そのためIPNの文字コードがUTF-8ではない文字コードに設定されていると、Simple Membershipでは一部の文字を認識することができず、正常に処理されません。その影響で日本語姓名の場合で会員として登録されない現象が発生します。原因は文字コードのため、PayPalのIPNの文字コードとWebサイトの文字コードをUTF-8に設定すれば良さそうです

IPNとWebサイトの文字コードをUTF-8に設定する

PayPalのIPNの文字コードをUTF-8に設定する方法は、SImple Membershipのドキュメントに記載されています。PayPalにログインした状態で、下記URLにアクセスして文字コードを変更します。

https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding

言語のエンコード設定ページが表示されますので、詳細オプションを選択します。

その他のエンコードオプション設定ページにて、それぞれの設定をUTF-8に設定して保存します。

私の環境では、上記を設定した状態で再度に日本語の声明で会員登録を行うと問題なく登録されるようになりました。もしSANDBOXで検証する場合は、SANDBOX用のアカウントの姓名を日本語に変更してお試しください。

最後に

Simple Membershipを使えば、オンラインサロンのような会員制サイトを比較的簡単に構築することができます。オンラインサロンではサブスクリプションのように月額や年額といった支払いを提供する必要があります。決済関連の検証項目はサイトの信用にかかわる重要事項ですので、公開前にしっかりテストを実施するようにしましょう。

以上、Simple MembershipでPayPalサブスクリプションの決済完了後に日本語姓名の会員が登録されないときの対処法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。