rails paypal通知验证日语

dal*_*alf 8 post encoding paypal ruby-on-rails

当我收到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")
Run Code Online (Sandbox Code Playgroud)

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

Parameters: {"last_name"=>"\x8F\xBC\x8C\xB4", "payment_cycle"=>"Daily", "next_payment_date"....
Run Code Online (Sandbox Code Playgroud)

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

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

这就像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 ??
Run Code Online (Sandbox Code Playgroud)

然后我的RestClient.post发送到Paypal,但Paypal返回错误(无效)可能是因为Paypal等待获得"\ x8F\xBC\x8C\xB4"而不是"松原".

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

编辑:我也在paypal论坛发帖

dal*_*alf 9

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

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

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

编码:Shift_JIS

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

不,使用:UTF-8

现在我可以获得"验证".