我正在尝试设置paypal自适应付款流程以创建链式付款。经过许多麻烦后,桌面版本的付款工作正常,它会向所有接收方发送付款,并将其正确地重定向到我的网站。我现在的问题是在真正的移动浏览器中(设置我的桌面浏览器的用户代理解决了所有问题,但这自然不是真正的移动用户体验)。 这是我的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Paypal test</title>
</head>
<body>
<!--MINI-->
<script src="https://www.paypalobjects.com/js/external/apdg.js" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">
//this function register the order in my system
function saveOrder() {
//call an internal api to get the paypal api key for this transaction
$.ajax({
url: "http://www.example.com/ajax/getPayKey.php",
success: function(datakey) {
arrData = datakey.split("|");
var paykey=arrData[0];
//with the obtained api key i set the value of the hidden field in the form
$("#paykey").val(paykey);
}
});
}
var returnFromPayPal = function(){
// returning from paypal flow i need to know the transaction status to redirect the user to the correct page in my site
$.ajax({
url: "<?php echo URL_SITO; ?>/ajax/PaymentDetails.php?pay_key="+ $("#paykey").val(),
success: function(data_return) {
//with the url returned i redirect user
document.location.href=data_return;
}
});
}
//init the paypal flow
var dgFlowMini = new PAYPAL.apps.DGFlowMini({trigger: 'submitBtn', expType: 'mini', callbackFunction: 'returnFromPayPal'});
</script>
<!--Start pay key process-->
<div onclick="saveOrder();">Pay Order</div>
<form action="https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay" target="PPDGFrame" class="standard" id="paypal_form_adaptive">
<!--Start payment flow-->
<input type="image" id="submitBtn" value="Pay with PayPal" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif">
<input id="type" type="hidden" name="expType" value="mini">
<input id="paykey" type="hidden" name="paykey" value="insert_pay_key">
</form>
</body>
</html>
我已经阅读了paypal文档,我可以使用三种类型的流程进行自适应支付,我发现所有这些流类型都存在问题。我选择了“迷你”选项,因为它是最接近解决方案。
无论如何,使用上面的代码我主要完成流程,“迷你”在我的Iphone中打开一个新标签,我完成付款,但重定向是错误的。 Paypal在我的付款页面中返回但是callbackFunction: 'returnFromPayPal'
永远不会被称为。没有回调,我无法重定向用户。
如何才能在移动设备上正确完成此流程? 有人如何在移动设备上完成流程?
付款流程详情
我必须创建一个链式支付流,1个发送者和2个接收者(主要和次要),流程将类似于:
发件人购买商品 - &gt;它支付主要收据 - &gt;主要支付一个百分比给二级接收者(网络应用程序所有者)。
这是我的商业类型,你可以看到它是一个简单的链接流程,它在deskotp版本中正常工作。
实现我的业务类型的流程是什么?
发件人购买商品 - &gt;我打电话给第一个api创建付款并追回付款密钥 - &gt;使用paykey我发送一个表单来实例化一个迷你浏览器流 - &gt;发件人在迷你浏览器中完成付款 - &gt;迷你浏览器返回并启动回调js功能 - &gt;在回调js函数中,我调用另一个paypal api来获取付款细节 - &gt;分析付款细节我知道交易是否完成 - &gt;如果交易完成,我必须将用户重定向到我网站上的特定页面,如果交易未完成,我必须将用户重定向到另一页。
答案 0 :(得分:0)
假设您使用的是Safari for iOS,您可以尝试使用Safari https://developer.apple.com/safari/tools/的调试器。 您应该考虑的另一件事是在HTTP请求中发送User-Agent标头,将浏览器标识为移动浏览器。 (paypal mobile express redirects to web instead of mobile)