私は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