rails paypal通知validation日语

当我收到Paypal的通知时,我会将其发回Paypal,以确保它来自Paypal。 代码运作良好,我没有问题:

# 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") 

问题是当用户有日文名称时。 收到的通知(来自Paypal)如下:

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

当我尝试将其发送回Paypal(以确保它来自Paypal)时,我有这样的错误:

 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发送到Paypal,但Paypal返回错误(INVALID)可能是因为Paypal等待获得“\ x8F \ xBC \ x8C \ xB4”而不是“松原”。

你知道我怎么解决这个问题吗?

编辑:我也发布在paypal论坛上

所以我认为我有解决方案。

在卖家paypal帐户中转到:个人资料>我的销售工具>贝宝按钮语言编码>更多选项

使用以下下拉菜单选择您网站上使用的编码。

编码:Shift_JIS

您是否希望对从PayPal发送给您的数据使用相同的编码(例如,IPN,可下载的日志,电子邮件)?

不,使用:UTF-8

现在我可以获得“validation”。