2012-11-21 39 views
8

Khi tôi nhận được một thông báo từ Paypal, tôi gửi lại cho Paypal để chắc chắn rằng nó là từ Paypal. Mã hoạt động tốt và tôi không có vấn đề gì:đường ray paypal thông báo xác nhận Nhật Bản

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

Vấn đề là khi người dùng có tên tiếng Nhật. Thông báo (từ Paypal) đã nhận được như:

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

Khi tôi đang cố gắng gửi lại cho Paypal (để chắc chắn nó đến từ Paypal), tôi có lỗi này:

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

Đó là như RestClient không thích "\ x8F \ xBC \ x8C \ xB4". Tôi đã cố gắng thêm: content_type => "shift_jis" và cũng "utf-8", nhưng tôi luôn có lỗi này.

Nếu tôi làm điều gì đó như:

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

Sau đó RestClient.post tôi được gửi đến Paypal, nhưng Paypal trả về một lỗi (INVALID) có lẽ vì Paypal đã được chờ đợi để có được "\ x8F \ xBC \ x8C \ xB4 "và không" 松原 ".

Bạn có ý tưởng nào về cách tôi có thể giải quyết điều đó không?

chỉnh sửa: Tôi cũng đăng bài trên paypal forum

Trả lời

9

Vì vậy, tôi nghĩ rằng tôi có giải pháp.

Trong tài khoản người bán paypal đi: Profile> công cụ bán hàng của tôi> PayPal mã hóa nút ngôn ngữ> Thêm tùy chọn

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

Bây giờ tôi có thể nhận được "xác minh".

Các vấn đề liên quan