2011-09-03 34 views
5

Chúng tôi sử dụng API Payments Pro NVP của PayPal để cung cấp thẻ tín dụng và xử lý paypal liền mạch trên trang web của chúng tôi. Chúng tôi đã tạo tiện ích giỏ hàng dựa trên khung nội tuyến mà khách hàng của chúng tôi đặt lên trang web của họ để người dùng của họ có thể mua các mặt hàng và thanh toán qua tài khoản Paypal của chúng tôi.Tích hợp PayPal với giỏ hàng dựa trên iframe

Trong khi giao dịch thẻ tín dụng hoạt động tốt, chúng tôi đang gặp sự cố khi người dùng cố gắng thanh toán bằng tài khoản PayPal của họ. API sử dụng chuyển hướng khi nhấp vào biểu tượng PayPal nhưng sau đó mã của PayPal dường như chạy một tập lệnh framebusting và giao dịch không thể tiếp tục.

Tôi đang tìm kiếm đề xuất hoặc mã mẫu để biết cách xử lý người dùng muốn PayPal thanh toán qua iframe. Một tùy chọn là bật lên một cửa sổ mới nhưng sau đó nó để thiết kế mở ra các vấn đề vì người dùng có thể chuyển đổi giữa cửa sổ đó và cửa sổ chứa iframe và có thể khiến giỏ không đồng bộ với cửa sổ PayPal đang hiển thị.

Trả lời

6

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ị.

1

PayPal Express Checkout/'Thanh toán bằng PayPal' trong Pro Được lưu trữ không hỗ trợ iframe vì lý do bảo mật. Việc mở cửa sổ bật lên (hoặc thiết lập target = _parent) là cách duy nhất để xử lý đúng cách.

+4

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. –

0

Đặt mục tiêu biểu mẫu của bạn thành - target = "_ top"

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