2015-02-26 2 views
0

У меня возникли серьезные проблемы, пытаясь заставить Paypal прекратить обратные вызовы IPN. После того, как я проверил транзакцию и обработал ее на своем конце с помощью моего прослушивателя IPN, я отправляю сообщение напрямую через HTTP Post обратно в Paypal. Я регистрирую возвращаемое сообщение, которое всегда возвращается как VERIFIED.Paypal Цепной платеж IPN не остановит обратные вызовы

Это содержание моего сообщения обратно в Paypal, каждый val разделяется знаком | для удобства чтения

Form Vals: transaction[0].is_primary_receiver:true | transaction[0].id_for_sender_txn:4YY80224KU744182S | log_default_shipping_address_in_transaction:false | transaction[0].receiver:[email protected] | action_type:PAY | ipn_notification_url:http://www.example.com/Paypal/IPNListener | transaction[1].paymentType:SERVICE | transaction[0].amount:USD 1.55 | charset:windows-1252 | transaction_type:Adaptive Payment PAY | transaction[1].id_for_sender_txn:0FS22745TN9966034 | transaction[1].is_primary_receiver:false | transaction[0].status:Completed | notify_version:UNVERSIONED | transaction[0].id:5B218293JN593094R | cancel_url:http://www.example.com/Paypal/PaymentCanceledConfirmation | transaction[1].status_for_sender_txn:Completed | transaction[1].receiver:[email protected] | verify_sign:AiPC9BjkCyDFQXbSkoZcgqH3hpacAEFoy0ipZhsKn7zJVWqtp2H1UZjq | sender_email:[email protected] | fees_payer:EACHRECEIVER | transaction[0].status_for_sender_txn:Completed | return_url:http://www.example.com/Paypal/PaymentConfirmation | transaction[0].paymentType:SERVICE | transaction[1].amount:USD 0.07 | reverse_all_parallel_payments_on_error:false | tracking_id:10 | transaction[1].pending_reason:NONE | pay_key:AP-7DV229946G566022G | transaction[1].id:490095471X083615J | transaction[0].pending_reason:NONE | status:COMPLETED | transaction[1].status:Completed | payment_request_date:Thu Feb 26 15:01:35 PST 2015 |

Это код, который я использую, чтобы отправить ЗАЯВКУ обратно Paypal:

private string GetPayPalResponse(Dictionary<string, string> formVals) 
    { 
     string url = ConfigurationManager.AppSettings["PaypalUrl"]; 

     HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 

     // Set values for the request back 
     req.Method = "POST"; 
     req.ContentType = "application/x-www-form-urlencoded"; 

     byte[] param = Request.BinaryRead(Request.ContentLength); 
     string strRequest = Encoding.ASCII.GetString(param); 

     StringBuilder sb = new StringBuilder(); 
     sb.Append(strRequest); 

     foreach (string key in formVals.Keys) 
     { 
      sb.AppendFormat("&{0}={1}", key, formVals[key]); 
     } 
     strRequest += sb.ToString(); 
     req.ContentLength = strRequest.Length; 

     //Send the request to PayPal and get the response 
     string response = ""; 
     using (StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII)) 
     { 
      streamOut.Write(strRequest); 
      streamOut.Close(); 
      using (StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream())) 
      { 
       response = streamIn.ReadToEnd(); 
      } 
     } 

     return response; 
    } 

Любая помощь очень ценится!

ответ

0

У вашего скрипта IPN должна быть какая-то ошибка в нем, чтобы он не возвращал ответ 200 OK обратно в PayPal. Вам нужно будет запустить некоторые тесты, чтобы найти проблему, или вы можете просто проверить свои веб-журналы, чтобы увидеть проблему.

Вот статья о how to test PayPal IPN, которую вы можете заинтересовать. Последующие шаги вы сможете уловить проблему.

+0

Итак, когда я делаю сообщение назад REQUEST в Paypal, хотя я получаю VERIFIED-ответ, фактический HTTP-ответ не должен быть 200 правильным? –

+0

Вы всегда возвращаетесь обратно в PayPal, чтобы проверить данные IPN, но после этого ваш скрипт должен завершиться успешно. У вас должна быть какая-то ошибка в вашем коде, в результате чего скрипт IPN будет терпеть неудачу в какой-то момент. –

+0

Я проверю, но я регистрирую все ошибки и вижу, что ни один не зарегистрирован. Мой прослушиватель IPN сначала получает ответ от отправленного Paypal. Если он был «ПРОВЕРЕН», я перейду к получению запроса vals, суммы, идентификатора отслеживания и т. Д. Затем я завершу заказ и отправлю тот же запрос обратно в Paypal. Это не правильный порядок? Я посмотрел историю своего IPN, а код ответа HTTP - 405. Этот код должен быть 200 правильным? –

Смежные вопросы