Cả hai câu trả lời ở trên đều chính xác. Tuy nhiên, hỗ trợ kỹ thuật của PayPal đã cung cấp một bộ hướng dẫn toàn diện hơn mà tôi đã cung cấp bên dưới. Hy vọng rằng họ sẽ giúp đỡ người khác.
Sửa đổi cuộc gọi SetExpressCheckout của bạn để thông số RETURNURL và CANCELURL trỏ đến trang trả lại đặc biệt sẽ xử lý việc đóng cửa sổ bật lên cho bạn và tiếp tục quá trình thanh toán thông thường (xem thêm về sau).
Tiếp theo, sửa đổi tập lệnh chuyển hướng người mua sang trang web PayPal. Thông thường, tập lệnh này sẽ trả lại phản hồi “302 Found” (hoặc tương tự) cho trình duyệt, cho trình duyệt biết rằng nó sẽ theo một chuyển hướng đến một trang khác. (Trong PHP, điều này thường được thực hiện với chức năng "tiêu đề" - ví dụ: header(“Location: https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=$token”);
.) Thay vào đó, tập lệnh này sẽ phát ra mã HTML/JavaScript sau (thay thế "TOKEN" bằng mã thông báo bạn nhận được từ PayPal). Điều này sẽ mở ra một cửa sổ bật lên nơi người mua có thể tiếp tục quá trình thanh toán trên PayPal. Bạn có thể chèn thêm văn bản, theo ý muốn, để cho người mua biết rằng họ nên sử dụng cửa sổ bật lên để hoàn thành việc thanh toán của họ. Để tránh các vấn đề với trình chặn cửa sổ bật lên, bạn có thể tạo liên kết hoặc nút trên trang của mình, cho người mua biết họ nên nhấp vào liên kết/nút để tiếp tục và sử dụng mã này cho trình xử lý “onClick” của đối tượng.
<script type="text/javascript"> window.open("https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=TOKEN","_blank","width=1024,height=768,location=1,resizable=1,scrollbars=1,status=1",true); </script>
Bây giờ, tạo ra một trang mới mà thực thi đoạn mã sau (hoặc tương tự - mã này được dựa trên PHP, điều chỉnh khi cần thiết cho bất cứ ngôn ngữ bạn đang sử dụng). Mã này sẽ đóng cửa sổ bật lên và tiếp tục quy trình thanh toán trong iframe hiện tại của bạn. Thông số RETURNURL của cuộc gọi SetExpressCheckout của bạn sẽ trỏ đến trang này. Thay thế "paypalreturn.php" bằng tập lệnh bạn hiện đang sử dụng để xử lý người mua quay lại giỏ hàng của bạn từ PayPal.
<html>
<body>
<script type="text/javascript">
window.opener.location="http://www.regattacentral.com/paypalreturn.php?token=<? echo $_REQUEST["token"]; ?>&PayerID=<? echo $_REQUEST["PayerID"]; ?>";
window.close();
</script>
</body>
</html>
Cuối cùng, lặp lại bước này cho trình xử lý CANCELURL của bạn.
• Giao dịch mua hoàn tất bên trong iframe và ID giao dịch cho giao dịch mua được hiển thị.
Bởi vì: Khung bên ngoài có thể có một Textfield hoặc Textarea vô hình ngay trên IFrame người nắm bắt các phím bạn nhấn. –