यह कोड उस समस्या को हल करता है जिसके बारे में आप बात कर रहे हैं (विशेष रूप से क्रोम आईओएस के साथ मुद्दों के लिए "पॉप अप" पसंद नहीं है), लेकिन पेपैल एडैप्टिव पेमेंट्स के संदर्भ में जहां यह "पॉप अप" खोलता है और भुगतान के लिए पेपैल पेज पर रीडायरेक्ट करता है ।
कुंजी है करने के लिए है कि आप:
- आरंभ
- आप विंडो "नाम" के रूप में _blank का उपयोग करना होगा एक बटन/लिंक क्लिक से सीधे विंडो.ओपन (और अपने खुद के चयन नहीं)
मुख्य बात आप चाहते हैं/जरूरत है:
var win;
//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');
//Initiate returnFromPayPal function if the pop up window is closed
if (win && win.closed) {
returnFromPayPal();
}
यहाँ पूर्ण कोड कि y है कहां अनुसरण कर सकते हैं (कुछ भी अनदेखा करें जो आप जो कर रहे हैं उस पर लागू नहीं होता है)।
<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>
स्रोत
2015-05-13 22:06:16
यहाँ देख - https://code.google.com/p/chromium/मुद्दों/विवरण? आईडी = 136610 – vsync