2012-11-21 12 views
8

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

risposta

9

Quindi credo di avere la soluzione.

Nel racconto venditore paypal Vai a: Profilo> I miei strumenti di vendita> PayPal lingua pulsante di codifica> Altre opzioni

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

ora sto in grado di ottenere "verificato".

Problemi correlati