2011-12-28 32 views
8

Tôi có một vấn đề tương tự bài nàyPayPal tự động trả lại không gửi lại bất kỳ dữ liệu POST

Setting PayPal return URL and making it auto return?

Tuy nhiên, các giải pháp có không hoạt động. Chúng tôi có các thiết lập IPN và POST được chuyển trở lại (khách truy cập nhấp vào và có thể tải xuống các tệp PDF đã mua) nhưng sau đó tôi đã cố gắng thoát khỏi trang xác nhận đơn đặt hàng qua Paypal có nội dung là

bạn vừa hoàn tất thanh toán của mình . ID giao dịch của bạn cho thanh toán này là: XXXXXXXXXXXXX.

và kích hoạt "Auto Return" trong Preferences website thanh toán, xác định URL http://www.educted.ca/payment_complete.php, các biến POST bây giờ không có được thông qua trở lại payment_complete.php - nó cho thấy trống. Ngay sau khi tôi tắt "Tự động trả lại", các biến POST hiển thị chính xác và các sản phẩm đã mua có thể được tải xuống. Tôi đang sử dụng tài khoản Paypal Sandbox, tất nhiên.

<input type="hidden" name="return" value="<?php echo LIVE_SITE;>payment_complete.php"> 
<input type="hidden" name="cancel_return" value="<?php echo LIVE_SITE; ?>catalog.php"> 
<input type="hidden" name="notify_url" value="<?php echo LIVE_SITE; ?>ipn.php"> 
<input type="hidden" name="rm" value="2"> 

Bất kỳ ý tưởng nào?

+0

Pehaps bạn có thể sử dụng Tự động trả lại HOẶC IPN, nhưng không phải cả hai? – Natalia

Trả lời

13

Nếu bạn bật Tự động trả lại, các giá trị sẽ luôn được trả về qua GET bất kể những gì rm được đặt thành.

Nếu bạn muốn thực hiện phân phối tệp ngay sau khi người mua đã hoàn tất giao dịch, hãy xem PayPal Payment Data Transfer. Khi được bật, PDT thêm một biến số tx GET vào URL trả về của bạn; bằng cách gọi PayPal theo số https://www.paypal.com/cgi-bin/webscr?cmd=_notify-synch&tx=value-for-tx-here&at=value-for-your-paypal-account-authentication-token bạn sẽ có thể lấy thêm dữ liệu về giao dịch và ngay lập tức kiểm tra xem liệu đó có hợp lệ hay không.
Xem thêm https://www.paypal.com/pdt/

IPN phải được dành riêng để xử lý phụ trợ vì có thể bị chậm trễ đáng kể.
PDT, mặt khác, bạn có kéo thông tin từ PayPal và ngay lập tức không.

+0

Cảm ơn bạn! Điều này có nghĩa là "IPN nên được dành riêng cho xử lý phụ trợ"? Điều gì sẽ là một sử dụng thích hợp cho IPN sau đó? Chúng ta có cần sử dụng nó trong trường hợp của chúng ta không? – Natalia

+0

Có, bằng cách sử dụng IPN, bạn sẽ tự động được cập nhật trong trường hợp có điều gì xảy ra với giao dịch sau khi hoàn thành giao dịch (ví dụ: nếu PayPal quyết định xem lại giao dịch hoặc nếu người mua đột nhiên gửi trường hợp PayPal). – Robert

+0

Tôi đang làm điều này nhưng chúng tôi không nhận được một biến tx = trong url? Cũng không có gì trở lại trong các biến bài viết? Có điều gì đó đã thay đổi? – leen3o

4

Bạn vẫn có thể giữ Tự động trả về thành Bật, nhưng đảm bảo bạn DISABLE PDT và bạn sẽ nhận tất cả các biến giao dịch được gửi tới URL trả về của bạn qua POST (nếu bạn có thông số rm được đặt thành 2 theo yêu cầu của mình Tất nhiên, như bạn nói bạn có).

Vì lý do nào đó, cho phép PDT sẽ bỏ qua tham số rm và buộc phương thức GET được sử dụng.

1

Trong trường hợp cụ thể của bạn, nó được hiển thị trống vì một lỗi trong mã của bạn:

<?php echo LIVE_SITE;> 

Điều đó không có phân tích cú pháp PHP là hợp lệ - nó sẽ gây ra một lỗi nghiêm trọng. Nếu không có thông tin nào được xuất ra và báo cáo lỗi bị tắt, nó sẽ là một trang trống.

1

Bạn vẫn có thể giữ Tự động trả về thành Bật, nhưng đảm bảo bạn DISABLE PDT và bạn sẽ nhận tất cả các biến giao dịch được gửi tới URL trả về của bạn qua POST (nếu bạn có thông số rm được đặt thành 2 trong yêu cầu tất nhiên, như bạn nói bạn có).

Đây là câu trả lời đúng! Bạn không được phép gửi dữ liệu thanh toán với phản hồi tự động, nếu bạn muốn nhận dữ liệu POST.

NHƯNG, trong trường hợp này bạn phải sử dụng trang web https, nếu không, khách hàng sẽ nhận được cảnh báo trước khi chuyển hướng!

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