IPN và PDT trong Paypal


99

Tôi gặp một số khó khăn khi lựa chọn giữa Thông báo thanh toán tức thì (IPN) của PayPal và Chuyển dữ liệu thanh toán (PDT).

Về cơ bản, người dùng mua sản phẩm một lần trên trang web của tôi, thanh toán trên PayPal và quay lại trang web của tôi. Tôi hiểu cách thức hoạt động của IPN nhưng giờ tôi thấy rằng tôi có thể kích hoạt các hành động khác nhau diễn ra sau khi mua hàng thành công dễ dàng hơn với PDT, vì dữ liệu được trả về ở đó và sau đó (thay vì cần một trình lắng nghe riêng) .

Tuy nhiên, tài liệu PDT của PayPal có dòng khó hiểu này: "PDT không được sử dụng với thẻ tín dụng hoặc các giao dịch Express Checkout." ... nhưng tôi không thể tìm thấy gì thêm về chủ đề này.

  1. Có phải thẻ tín dụng THỰC SỰ không được sử dụng với PDT? Tôi muốn nhiều hơn một câu.

  2. Điều đó có nghĩa là người dùng phải có / tạo tài khoản PayPal để thanh toán?

  3. Có nghĩa là nếu tôi muốn cho phép người dùng thanh toán trực tiếp bằng tài khoản PayPal VÀ / HOẶC bằng thẻ tín dụng, tôi phải triển khai IPN?

Có ai đã trải qua điều này vui lòng làm sáng tỏ không?


Tôi đã tìm thấy một trang web thực sự giải thích điều này tốt hơn. [PayPal PDT và IPN: Nó hoạt động như thế nào?] [1] [1]: webmasters.stackexchange.com/questions/21634/…
Đồng ý với Scott

Về câu hỏi 2, có một PayPal Account Optionalcài đặt My selling preferences > Website preferencesmà bạn có thể bật để không buộc khách hàng của bạn phải tạo / có tài khoản PayPal, tức là. thanh toán bằng thẻ tín dụng / thẻ ghi nợ.
kaiyaq

Câu trả lời:


112

Các API cho PDT và IPN tương tự nhau. Sự khác biệt chính là khi bạn nhận được thông báo. Vì lý do đó, tôi khuyên bạn nên thực hiện cả hai.

  • Với PDT, bạn nhận được thông báo ngay lập tức và có thể thực hiện bất kỳ xử lý bổ sung nào được yêu cầu và hiển thị cho người dùng trang xác nhận.
  • Với IPN, bạn được đảm bảo sẽ được thông báo rằng khoản thanh toán đã được nhận ngay cả khi máy tính của người dùng phát nổ trước khi nó có thể gửi PDT cho bạn.

Thực hiện cả hai và tận dụng tối đa cả hai thế giới. Nhưng nếu bạn chỉ làm một, IPN là một trong những đáng tin cậy.

Một lưu ý: nếu bạn triển khai cả hai thì có khả năng thanh toán của bạn có thể được xử lý hai lần. Hãy cẩn thận để đảm bảo điều đó không xảy ra. Ứng dụng tôi đã viết xử lý PDT và IPN gần như giống nhau (phần phụ trợ giống nhau) và mã đó có được một khóa cho mỗi người dùng web trong cơ sở dữ liệu, vì vậy nếu cùng một người dùng cố gắng gửi cùng một khoản thanh toán nhiều lần. chỉ có thể được xử lý một lần. Sau khi xử lý, kết quả của quá trình đó sẽ được sử dụng lại cho bất kỳ nỗ lực xử lý nào tiếp theo.

Chỉnh sửa Một điều nữa: IPN mang nhiều thông tin hơn PDT. Có rất nhiều thông báo khác nhau mà bạn có thể nhận được từ IPN, chẳng hạn như thông báo bồi hoàn, v.v. và do đó bạn thực sự nên triển khai nó.


Hệ thống PDT của PayPal gửi xác nhận đơn đặt hàng đến các trang web bán hàng sử dụng PayPal Payments Standard và cho phép họ xác thực thông tin này. Các trang web như vậy có thể hiển thị cục bộ dữ liệu này trong trang "xác nhận đơn hàng".

Khi nào thì sử dụng PDT?

IPN cung cấp các khả năng tương tự được mô tả ở trên. Vì vậy, khi nào bạn nên chọn PDT thay vì IPN?

Với PDT, trang web của bạn sẽ được thông báo ngay lập tức khi khách hàng hoàn tất thanh toán. Tuy nhiên, với IPN, có độ trễ đáng kể giữa thời gian khách hàng hoàn tất thanh toán và thời gian trang web của bạn nhận được thông báo về sự kiện này.

Vì vậy, hãy sử dụng PDT nếu trang web của bạn có tính năng yêu cầu thông báo thanh toán ngay lập tức.

Ví dụ, hãy xem xét một cửa hàng nhạc kỹ thuật số. Với PDT, cửa hàng này có thể cho phép khách hàng tải xuống các giao dịch mua của họ ngay lập tức vì PDT sẽ gửi xác nhận đơn hàng ngay lập tức. Với IPN, việc thực hiện đơn hàng ngay lập tức như vậy là không thể.

Ưu điểm của IPN

PDT có một điểm yếu lớn: nó gửi xác nhận đơn hàng một lần và chỉ một lần. Do đó, khi PDT gửi xác nhận, trang web của bạn phải đang chạy; nếu không, nó sẽ không bao giờ nhận được tin nhắn.

Ngược lại, với IPN, việc gửi xác nhận đơn hàng hầu như được đảm bảo vì IPN gửi lại xác nhận cho đến khi trang web của bạn xác nhận đã nhận. Vì lý do này, PayPal khuyên bạn nên triển khai IPN thay vì PDT.

Một ưu điểm khác của IPN là nó gửi nhiều loại thông báo, trong khi PDT chỉ gửi xác nhận đơn hàng. Vì vậy, bằng cách sử dụng IPN, trang web của bạn có thể nhận được, chẳng hạn như thông báo bồi hoàn cũng như xác nhận đơn đặt hàng. Lưu ý: Nếu trang web của bạn phải được thông báo về các khoản thanh toán ngay lập tức, bạn có thể triển khai cả IPN và PDT. Tuy nhiên, nếu bạn làm vậy, trang web của bạn sẽ nhận được hai xác nhận đơn hàng cho mỗi lần bán hàng. Do đó, bạn phải cẩn thận thực hiện hành động (ví dụ: giao hàng) chỉ trên một bản sao của thông báo xác nhận nhất định.

Tài liệu tại đây


2
Cảm ơn, tôi hiểu. Vì vậy, về cơ bản, hãy liên kết các bản cập nhật cơ sở dữ liệu với IPN (vì nó sẽ luôn được xử lý) và chỉ liên kết xác nhận của người dùng với PDT (chẳng hạn như kiểm tra xem khoản thanh toán đã được IPN xử lý trên một trang đang chờ xử lý hay chưa) ....?
Tom

1
+1 để triển khai cả IPN và PDT, chúng tôi đã thực hiện điều này và nó hoạt động tốt.
Mark Redman

3
@Tom: Cách triển khai của tôi là: Khi có PDT hoặc IPN, hãy đọc các thông số và cố gắng xử lý thanh toán. Bộ xử lý A) chặn quá trình xử lý đồng thời khác (cho người dùng đó) và B) kiểm tra xem nó đã được xử lý chưa. Sau khi xử lý xong, với IPN là bạn đã hoàn tất, với PDT, bạn hiển thị cho người dùng trang xác nhận hoặc trang biên nhận hoặc bất cứ thứ gì. Cả phía PDT và phía IPN đều có thể hoạt động bình thường nếu phía bên kia gặp sự cố, nhưng bạn sẽ có được độ tin cậy tốt khi có cả hai. Một tỷ lệ khá cao người dùng không nhấp qua trước khi IPN đến.
Ông Shiny và Mới 安 宇

8
Câu trả lời này không trả lời cho câu hỏi số 1, số 2 hoặc số 3 của OP, nhưng nó được chấp nhận?
Clint Pachl

2
IPN mất tới 4 ngày để trả lời ... thật tệ
Toskan

1

Re 1. PDT được sử dụng với tính năng Trả hàng Tự động cho Thanh toán trên Trang web. Tự động trở lại chuyển hướng đến trang PDT sau khi thanh toán tiền cho người bán. Rất tiếc, không thể sử dụng tính năng đó cùng với Tài khoản PayPal Tùy chọn - được sử dụng để kích hoạt thanh toán bằng Thẻ Tín dụng. Đây là lưu ý từ PayPal: 'Nếu bạn đã bật Tự động trả lại và chọn bật Tài khoản PayPal Tùy chọn cho người dùng mới, người dùng mới sẽ không được tự động chuyển hướng trở lại trang web của bạn, nhưng sẽ được cung cấp tùy chọn để quay lại.' . Người dùng sẽ có một tùy chọn để quay lại trang web của bạn (bước PDT) hoặc ở lại trang PayPal. Tóm lại, khi thanh toán bằng Thẻ tín dụng, người dùng có thể bỏ qua bước PDT nếu người dùng không nhấp vào 'liên kết trở lại cửa hàng'.

Re 2. Bạn muốn cho phép các tùy chọn thanh toán nào tùy thuộc vào bạn. Nếu bạn muốn cho phép thanh toán mà không có Tài khoản PayPal, bạn có thể bật Tùy chọn tài khoản . Nếu bạn chỉ muốn cho phép người dùng có tài khoản PayPal, hãy tắt tính năng đó. Có thể có nhiều lựa chọn hơn.

Re 3. Trong trường hợp của bạn, bạn cần kích hoạt hành động sau khi mua thành công. Cách được đề xuất sẽ là triển khai IPN. PDT không hoạt động cho mọi trường hợp và không đảm bảo việc gửi tin nhắn. Đây là liên kết đến tài liệu bao gồm chủ đề đó PDT vs IPN .


0

Đây là một câu hỏi cũ, nhưng câu trả lời đơn giản của tôi sẽ là - Tại sao không sử dụng cả PDT và IPN? Chúng sẽ hoạt động tốt cho các giao dịch thẻ.

PDT có thể cung cấp trạng thái giao dịch ngay lập tức cho trang web của bạn, nơi bạn có thể nhanh chóng kiểm tra trạng thái thanh toán thành công hay thất bại và cung cấp cho người dùng thông báo thích hợp.

Trong khi đó, bạn có thể chờ xác minh đầy đủ từ IPN trong nền. Sau khi nhận được, bạn có thể sử dụng điều này để cập nhật thêm DB của mình và xử lý đơn đặt hàng.

Bạn có thể làm theo hướng dẫn từng bước này mà tôi thấy là rất rõ ràng và hữu ích - và nó vẫn còn hiệu lực vào năm 2018.

https://www.codexworld.com/paypal-standard-payment-gateway-integration-php/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.