2009-09-28 36 views
5

Tôi đang thử gọi lại IPN, sử dụng servlet. Mã tôi đang sử dụng được cung cấp bởi paypal để xác minh dữ liệu ipn. Nhưng mỗi lần tôi nhận được phản hồi INVALID.Hộp cát Paypal IPN return INVALID

Đây là mã:

Enumeration en = req.getParameterNames(); 
String str = "cmd=_notify-validate"; 

    while (en.hasMoreElements()) {   
     String paramName = (String) en.nextElement(); 
     String paramValue = req.getParameter(paramName); 

//str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue,"UTF-8"); // for UTF-8 i set the encode format in my account as UTF-8 
//str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue,"ISO-8859-1");// for ISO-8859-1 i set the encode format in my account as ISO-8859-1 
str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue); //default as provided by paypal 

    } 
    URL u = new URL("http://www.sandbox.paypal.com/cgi-bin/webscr"); 
    URLConnection uc = u.openConnection(); 
    uc.setDoOutput(true); 
    uc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
    PrintWriter pw = new PrintWriter(uc.getOutputStream()); 
    pw.println(str); 
    pw.close(); 

    BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream())); 
    String res = in.readLine(); 
    in.close(); 

    if (res.equals("VERIFIED") || !res.equals("VERIFIED")) { 
     //Update database... 
    } else if (res.equals("INVALID")) {  
     //INVALID 
    } 

Tôi đã kiểm tra tất cả ba khả năng được cung cấp bởi paypal trong trường hợp paypal trở INVALID như sau:

1) Các thông số Thiếu - Như tôi gửi tất cả các thông số không vấn đề thiếu thông số

2) URL không hợp lệ. - Tôi đang sử dụng hộp cát để URL là: http://www.sandbox.paypal.com/cgi-bin/webscr

3) Mã hóa ký tự. - Đã thử với mã hóa ký tự giống như mã hóa tham số cài đặt tài khoản paypal.

yêu cầu tôi gửi lại cho paypal sử dụng thông số sau:

cmd = _notify-xác nhận & last_name = Người dùng & test_ipn = 1 & ADDRESS_NAME = Kiểm tra + tài & txn_type = web_accept & receiver_email = sellr1_1252495907_biz% 40gmail.com & residence_country = US & address_city = San + Jose & payment_gross = & payment_date = 01% 3A55% 3A04 + Sep + 26% 2C + 2009 + PDT & address_zip = 95131 & payment_ status = Hoàn & address_street = 1 + Main + St & first_name = Kiểm tra & payer_email = buyer1_1252495751_per% 40gmail.com & protection_eligibility = đủ điều kiện & payer_id = BXBKS22JQCUWL & verify_sign = AOMkeg7ofCL7FJfioyWA19uCxD4XAgZirsjiGh8cUy1fd2YAqBwOkkst & payment_type = tan & kinh doanh = sellr1_1252495907_biz% 40gmail.com & address_country_code = Mỹ & mc_fee = 0,64 & address_status = khẳng định & transaction_subject = True + Up & lượng = 1 & notify_version = 2,8 & mc_currency = EUR & tùy chỉnh = & addr ess_state = CA & payment_fee = & handling_amount = 0.00 & payer_status = xác & vận chuyển = 0.00 & ITEM_NAME = True + Up & thuế = 0.00 & username = hannonj & charset = windows-1252 & ITEM_NUMBER = 567 & mc_gross = 10.00 & txn_id = 7F456350BS7942738 & receiver_id = MASSU6BSR9SC2 & address_country = Hoa + Hoa

Xin vui lòng, có thể bất kỳ một đạo tôi để hướng đúng đắn? Tôi không nhận được những gì là sai mã hoặc URL hoặc bất cứ điều gì khác. Tôi đã thử tất cả các khả năng. Làm ơn giúp tôi.

Trả lời

3

Cảm ơn ohhh Tôi đã giải quyết nó cuối cùng

Thực ra trong URL thông báo, tôi cũng đã thêm thông số tên người dùng. Paypal muốn các giá trị tham số cho IPN giống như nó quay trở lại servlet. req.getParameterNames()) Khi tôi có thêm thông số tên người dùng, không được biết đến paypal Paypal đã trả về INVALID

0

Hãy nhớ rằng sandbox của paypal có thông tin đăng nhập hoàn toàn khác. Bạn phải có tài khoản phát triển và được đăng nhập vào bảng điều khiển phát triển để sử dụng sandbox.

9

Tôi chắc chắn rằng URL cần gửi đến chỉ là "www.sandbox.paypal.com ", xem chương 4 của Hướng dẫn sử dụng Sandbox, và tốt, đây là những gì tôi đặt cho mã của riêng tôi (ngẫu nhiên, để sống, nó cũng chỉ là" www.paypal.com ", cho sample code)

+1

đó là chính xác những vấn đề của tôi –

2

Nếu bạn đang kiểm tra IPN qua SSL, bạn sẽ phải sử dụng ssl: //www.sandbox.paypal.com trên cổng

+3

Với paypal.com tôi nhận được không hợp lệ, với sandbox.paypal.com tôi thậm chí không nhận được một phản ứng. – Exegesis

+1

hallelujah! Cám ơn rất nhiều! –

13

An “INVALID” nhắn là do các nguyên nhân sau:

  • Kiểm tra xem bạn đang đăng trả lời của bạn đến đúng URL, là https://www.sandbox.paypal.com/cgi-bin/webscr hoặc https://www.paypal.com/cgi-bin/webscr, tùy thuộc vào việc bạn đang thử nghiệm trong Sandbox hay bạn đang sống, tương ứng.
  • Xác minh rằng phản hồi của bạn đối với thông báo IPN thử nghiệm chứa chính xác cùng các biến và giá trị làm thông báo kiểm tra và chúng theo cùng thứ tự như trong thông báo kiểm tra. Cuối cùng, xác minh rằng các biến ban đầu được bắt đầu bằng biến cmd = _notify-validate.
  • Đảm bảo rằng bạn đang mã hóa chuỗi phản hồi của bạn và đang sử dụng cùng một mã hóa ký tự như được sử dụng bởi thông báo IPN thử nghiệm. (ví dụ, tôi có thể thấy rằng anh ta đang sử dụng các chữ cái với âm sắc và các ký hiệu khác như “/”, v.v.). liên quan đến điểm cuối cùng Với, các thương gia có thể cố gắng để thay đổi ngôn ngữ mã hóa được sử dụng trong tài khoản PayPal của mình, làm theo các bước dưới đây:

    1. Đăng nhập vào bạn tài khoản PayPal
    2. Bấm vào hồ sơ
    3. Bấm vào “Preferences My bán” tab
    4. Bấm vào “PayPal nút Ngôn ngữ Encoding” (ở phần cuối của trang)
    5. Bấm vào "Tùy chọn khác"
    6. Chọn từ trình đơn thả xuống: UTF-8
    7. Chọn charset tương tự cũng cho tùy chọn thứ hai, trong đó có liên quan đến IPN
    8. Bấm “Save”

Nếu vấn đề vẫn còn, chúng tôi khuyên bạn nên xem lại kịch bản trong sử dụng, PayPal có một số mẫu mã IPN có sẵn tại địa chỉ: https://github.com/paypal/ipn-code-samples

Để biết thêm thông tin tôi bao gồm liên kết: https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNTesting/#id091GFE00WY4

+0

Đạn và danh sách vì vậy tôi không quá lười để đọc nó. Cảm ơn! –

+1

@PayPal_Federica thay đổi mã hóa thành utf8 khắc phục sự cố của tôi ,,, cảm ơn –

+0

Điều này thực sự hữu ích Tôi đã gặp sự cố tương tự đã được giải quyết bằng cách sử dụng https://github.com/paypal/ipn-code-samples tệp mẫu ... Cảm ơn .. !! –

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