PayPalエクスプレスチェックアウトの設定でエラー

フォーラム 使い方全般 PayPalエクスプレスチェックアウトの設定でエラー

  • このトピックには4件の返信、2人の参加者があり、最後にTeratchにより9年、 8ヶ月前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #73721
    Teratch
    参加者

    ——————————————-
    WordPress のバージョン:4.1.1
    Welcart のバージョン:1.4.13
    ご利用のテーマ:POP CLOUD
    症状を確認したブラウザ:Chrome
    サーバー(会社名、サービス名):Xserver
    SSLの利用: 有り
    WordPress のパーマリンク設定:デフォルト
    ——————————————–
    お世話になっております。

    クレジット決済設定画面(PayPalエクスプレスチェックアウト決済サービス)でPayPalアカウント(メールアドレス)を変更(他のサイトに同様の設定をしようとして、うっかり変更してしまいました。)してしまい、更新しようとしたところ、エラーが出て更新できなくなりました。

    クレジット決済設定画面(PayPalエクスプレスチェックアウト決済サービス)には、次の情報を入力しています。
     ・PayPalエクスプレスチェックアウト ← 利用する
     ・動作環境 ← テスト(Sandbox)
     ・APIユーザー名 ← Paypal Sandboxより入手したもの
     ・APIパスワード ← 同上
     ・署名 ← 同上
     ・PayPalアカウント(メールアドレス) ← PayPalアカウントのメールアドレス

    「PayPalエクスプレスチェックアウトの更新」ボタンを押すと、”更新しました”と表示されますが、画面最上部に次のエラーメッセージが表示されます。
    データは更新されていないようです。
    Warning: ksort() expects parameter 1 to be array, string given in /****************/wp-content/plugins/usc-e-shop/classes/usceshop.class.php on line 1410

    以前(Welcart 1.4.12の時)もPayPalエクスプレスチェックアウトの新規設定で同様の現象が出て問い合わせをさせていただきましたが、その時は他の部分で違う現象も合わせて起きていたため、データベースが壊れている可能性があるということでした。
    データベースからインストールし直して解決しましたが、今回は特に他の現象は出ておらず、上記のエラーだけです。

    特にデータベースを壊すような処理はしていませんが、データベースは頻繁に壊れるものなのでしょうか。

    もし他の原因があるようでしたら、ご教示いただきたく、よろしくお願い申し上げます。

    • このトピックはnanbuが9年、 8ヶ月前に変更しました。
    #73758
    nanbu
    キーマスター

    こんにちは。

    利用できる支払方法のデータというものが有りますが、それが壊れている可能性があります。
    仰る通り、データがそんなにしょっちゅう壊れることは通常ございません。何か環境に原因があるのではないかと思いますが推測できません。

    #73781
    Teratch
    参加者

    お世話になっております。
    本現象について調べてみましたところ、次のような状況であることが分かりましたので連絡させていただきます。
    1.Wordpress、MySQL、Welcartプラグイン(usc-e-shop.1.4.13)を新規に作成し、「クレジット決済設定」で「PayPal(EC)」にSandBoxの設定をしましたが正常に更新されます。「基本設定」の「決済種別」にも「PayPal(EC)」が選択項目として追加されます。

    2.次に、Welcartプラグインのclassesライブラリのusceshop.class.phpのエンコードをSJISにから、UTF-8に変換しました。(変換した理由は、私はWelcartを英語(en)環境で使用させていただいていますが、カートの”State”の未登録エラーメッセージが”Enter the Prefecture”となっているのを”Enter the State”に置き換えています。また、その他多少の変更をしています。その際にスクリプトを変更後、エンコードをUTF-8に変換しています。ただし、今回は調査のためusceshop.class.phpのスクリプトには何も手を加えず、エンコードだけをSJISからUTF-8に変換しています。)

    3.Welcartプラグインを停止し、UTF-8のusceshop.class.phpをFTPでアップロード後、Welcartプラグインを有効化し、その後、再度「クレジット決済設定」で「PayPal(EC)」にSandBoxの設定項目(PayPalアカウントメールアドレス)を変更しましたが正常に更新され、「基本設定」の「決済種別」にも「PayPal(EC)」が選択項目として追加されたままです。
    しかしその後、「クレジット決済設定」で「PayPal(EC)」の項目を何も変更せずに「PayPalエクスプレスチェックアウト項目の設定を更新する」ボタンのみを押下すると、次のワーニングが画面上部に表示されます。
    Warning: ksort() expects parameter 1 to be array, string given in /****************/wp-content/plugins/usc-e-shop/classes/usceshop.class.php on line 1410
    「クレジット決済設定」の「PayPal(EC)」の項目は変更されたようですが、「基本設定」の「決済種別」には何も選択項目が表示されなくなりました。
    「クレジット決済設定」の「PayPal(EC)」の「利用しない」をチェックして、「PayPalエクスプレスチェックアウト項目の設定を更新する」ボタンを押下すると、次のエラーになります。
    Fatal error: Cannot unset string offsets in /****************/wp-content/plugins/usc-e-
    shop/classes/usceshop.class.php on line 1398

    この後、SJISのusceshop.class.phpに入れ替えても、現象は改善されなくなります。

    4、上記1の時に、新規インストール直後(usceshop.class.phpがSJISの状態)でやはり「クレジット決済設定」の「PayPal(EC)」の項目を何も変更せずに「PayPalエクスプレスチェックアウト項目の設定を更新する」ボタンのみを押下してみていますが、問題なく更新され、「基本設定」の「決済種別」も正常に表示されていました。

    5.調査結果として、usceshop.class.phpのエンコードをSJISからUTF-8に変換すると、正常に変換できない項目があるのではないでしょうか。Welcartプラグインの各スクリプトのエンコードを見ると、SJISのものとUTF-8のものがありますが、こういった事情があるため、そのようにしていらっしゃるのでしょうか。つまり、Welcart本体の各スクリプトに変更を加える必要がある場合には、エンコードは変えてはいけないと理解いたしました。

    6.もしかしたら、SJISからUTF-8に正常に変換できないのは私が使用しているエディタに問題があるのかもしれません。そちらで再現しないようでしたら、是非そちらで使用しているエディタをご紹介いただけませんでしょうか。

    お手数をお掛けいたしました。今後ともよろしくお願い申し上げます。

    • この返信は9年、 8ヶ月前にnanbuが編集しました。
    #73846
    nanbu
    キーマスター

    usceshop.class.php を含め、WordPressプラグインのファイルはUTF-8であるべきで、当然WelcartのファイルもUTF-8となっています。

    #73873
    Teratch
    参加者

    お世話になっております。

    ご回答いただき、ありがとうございます。
    私も南部様の書かれた通りUTF-8であるべきと思い、エディタでUTF-8を指定して保存しました。
    しかしなぜ私の使用しているエディタで見るとusceshop.class.phpの文字コードがSJISと表示されたのでしょうか。ちなみに私は「サクラエディタVer. 2.1.1.1」を使用しています。

    ダウンロードしたusc-e-shop.1.4.13.zipを解凍してusceshop.class.phpをサクラエディタの「ファイル」メニューの「ファイルのプロパティ」で見ると、文字コードがSJISと表示されます。
    同じようにしてusc-e-shop.1.4.13のclassesフォルダの中の各ソースを見ると、次のように表示されます。

    calendar.class.php UTF-8
    cart.class.php SJIS
    dataList.class.php UTF-8
    httpRequest.class.php SJIS
    itemList.class.php UTF-8
    orderData.class.php SJIS
    orderList.class.php UTF-8
    paymentPaypal.class.php SJIS
    usceshop.class.php SJIS
    utilities.class.php UTF-8

    サクラエディタの特性なのでしょうか。いずれにしても今後はプラグインのソースデータの文字コードは変更しないように注意したいと思います。

    お手数をお掛けいたしました。ありがとうございました。今後ともよろしくお願いいたします。

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • このトピックに返信するにはログインが必要です。