Cách tiếp cận tốt nhất tôi tìm thấy là trải nghiệm trình duyệt mini. Nhưng tôi đã có nhiều vấn đề khác nhau trên thiết bị di động thực hiện nó (đó là những gì nó đã có nghĩa là cho ở nơi đầu tiên). Bạn sẽ thấy nhiều câu hỏi tương tự về thanh toán thích ứng và tất cả các loại vấn đề với việc sử dụng hộp đèn và trải nghiệm trình duyệt mini.
Nhưng cuối cùng ... tôi đã tìm ra sau hàng giờ, hàng ngày! Điều này sẽ giải quyết mọi vấn đề của mọi người đối với tất cả các giống khác nhau khi nói đến các vấn đề với PayPal Adaptive Payments và các vấn đề với:
- Trang chuyển hướng mặc định là KHÔNG phản ứng di động và trông khủng khiếp trên thiết bị di động.
- Hộp đèn bị "gác máy" và không đóng trên một số thiết bị di động.
- Trình duyệt mini không đóng sau khi hoàn tất thanh toán hoặc hủy.
- Trình duyệt mini không chuyển hướng đến cuộc gọiBackFunction từ tập lệnh paypal apdg.js.
- Không chuyển hướng đến returnUrl và hủyUrl sau khi hoàn thành thanh toán (hoặc khi hủy)
- Chrome cho ios (iphones) không khởi tạo chức năng gọi lại và do đó sau khi hoàn thành hoặc hủy thanh toán, nó chỉ giữ bạn tại trang bạn khởi chạy trang thanh toán paypal từ đó ngăn bạn xác nhận thành công hoặc thất bại thanh toán.
Cuộn trống xin vui lòng .... ở đây !! Điều này thay thế bất kỳ nhu cầu cho các tập tin javascript PayPal vv Tất cả bạn cần là những gì dưới đây cùng với phương pháp của riêng bạn có được các PayKey để thêm vào url chuyển hướng. Trang web trực tiếp của tôi, với thanh toán thích ứng hoạt động chính xác sử dụng mã bên dưới, là https://www.trackabill.com.
<div>
<?php $payUrl = 'https://www.paypal.com/webapps/adaptivepayment/flow/pay?expType=mini&paykey=' . $payKey ?>
<button onclick="loadPayPalPage('<?php echo $payUrl; ?>')" title="Pay online with PayPal">PayPal</button>
</div>
<script>
function loadPayPalPage(paypalURL)
{
var ua = navigator.userAgent;
var pollingInterval = 0;
var win;
// mobile device
if (ua.match(/iPhone|iPod|Android|Blackberry.*WebKit/i)) {
//VERY IMPORTANT - You must use '_blank' and NOT name the window if you want it to work with chrome ios on iphone
//See this bug report from google explaining the issue: https://code.google.com/p/chromium/issues/detail?id=136610
win = window.open(paypalURL,'_blank');
pollingInterval = setInterval(function() {
if (win && win.closed) {
clearInterval(pollingInterval);
returnFromPayPal();
}
} , 1000);
}
else
{
//Desktop device
var width = 400,
height = 550,
left,
top;
if (window.outerWidth) {
left = Math.round((window.outerWidth - width)/2) + window.screenX;
top = Math.round((window.outerHeight - height)/2) + window.screenY;
} else if (window.screen.width) {
left = Math.round((window.screen.width - width)/2);
top = Math.round((window.screen.height - height)/2);
}
//VERY IMPORTANT - You must use '_blank' and NOT name the window if you want it to work with chrome ios on iphone
//See this bug report from google explaining the issue: https://code.google.com/p/chromium/issues/detail?id=136610
win = window.open(paypalURL,'_blank','top=' + top + ', left=' + left + ', width=' + width + ', height=' + height + ', location=0, status=0, toolbar=0, menubar=0, resizable=0, scrollbars=1');
pollingInterval = setInterval(function() {
if (win && win.closed) {
clearInterval(pollingInterval);
returnFromPayPal();
}
} , 1000);
}
}
var returnFromPayPal = function()
{
location.replace("www.yourdomain.com/paypalStatusCheck.php");
// Here you would need to pass on the payKey to your server side handle (use session variable) to call the PaymentDetails API to make sure Payment has been successful
// based on the payment status- redirect to your success or cancel/failed page
}
</script>
Nguồn
2015-05-13 21:42:11
Bạn có thể tìm thêm thông tin về trải nghiệm trình duyệt mini (expType = mini) tại đây: [Thanh toán thích ứng không có hộp phương thức hoặc cửa sổ bật lên?] (Http://stackoverflow.com/questions/17283272/adaptive-payments-without-modal -box-or-popups/17729106) – James