Quando ricevo una notifica da Paypal, lo rimando a Paypal per essere sicuro che sia da Paypal. il codice funziona bene e non ho alcun problema:rails paypal notifica valido giapponese
# 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")
Il problema è quando l'utente ha un nome giapponese. La notifica (da Paypal) ha ricevuto è come:
Parameters: {"last_name"=>"\x8F\xBC\x8C\xB4", "payment_cycle"=>"Daily", "next_payment_date"....
Quando sto provando rispedirlo a Paypal (per essere sicuro che è venuto da Paypal), ho questo errore:
ArgumentError (invalid byte sequence in UTF-8):
app/controllers/payment_notifications_controller.rb:90::in `notification_validation'
E ' come se a RestClient non piacesse "\ x8F \ xBC \ x8C \ xB4". Ho provato ad aggiungere: content_type => "shift_jis" e anche "utf-8", ma ho sempre questo errore.
Se faccio qualcosa di simile:
params[:last_name] = params[:last_name].encode("UTF-8", "Shift_JIS")
# now params[:last_name] is 松原
Poi il mio RestClient.post è inviare a Paypal, ma Paypal restituisce un errore (non valido) probabilmente perché Paypal era in attesa di ottenere "\ x8F \ XBC \ x8C \ xB4 "e non" 松原 ".
Avete qualche idea di come posso risolvere quello?
edit: Ho anche postare su paypal forum