2012-11-21 8 views
8

私はPaypalからの通知を受け取ったときにPaypalに送り返し、Paypalからのものであることを確認します。 コードがうまく機能し、私は何の問題もない:rails paypal notify validate日本語

# payment_notifications_controller.rb # notification_validation, line 90 
response = RestClient.post(PAYPAL_CONFIG["url_validate"], params.merge({"cmd" => "_notify-validate"}), :content_type => "application/x-www-form-urlencoded") 

ユーザーが日本名を持っているときに問題があります。 (ペイパル)から通知が受信ようです:

Parameters: {"last_name"=>"\x8F\xBC\x8C\xB4", "payment_cycle"=>"Daily", "next_payment_date".... 

私は(それがペイパルから来たことを確認する)ペイパルに戻ってそれを送信しようとしているとき、私はこのエラーを持っている:

ArgumentError (invalid byte sequence in UTF-8): 
app/controllers/payment_notifications_controller.rb:90::in `notification_validation' 

にですRestClientが "\ x8F \ xBC \ x8C \ xB4"を好まない場合のように。 私はcontent_type => "shift_jis"と "utf-8"を追加しようとしましたが、私はいつもこのエラーがあります。

私はのような何かを行う場合は、次の

params[:last_name] = params[:last_name].encode("UTF-8", "Shift_JIS") 
# now params[:last_name] is 松原 

をそれから私のRestClient.postはペイパルに送信されますが、ペイパルは、「\ x8F \ XBC \ x8Cを取得するために待っていたので、ペイパルは、おそらくエラー(INVALID)を返します\ xB4 "であり、"松原 "ではない。

どうすれば解決できるかご存知ですか?

編集: 私もpaypal forum

答えて

9

に投稿だから、私は解決策を持っていると思います。売り手のPayPalアカウントで

に行く: プロフィール>マイ販売ツールを> PayPalのボタンの言語エンコーディング>その他のオプション

Use the following drop-down menu to select the encoding used on your website.

Encoding: Shift_JIS

Do you want to use the same encoding for data sent from PayPal to you (e.g., IPN, downloadable logs, emails)?

NO, use: UTF-8

は今、私は「VERIFIED」を取得することができますよ。