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