Paypal 自适应支付无法在移动设备上运行
Posted
技术标签:
【中文标题】Paypal 自适应支付无法在移动设备上运行【英文标题】:Paypal adaptive payment not working in mobile 【发布时间】:2017-08-21 02:26:23 【问题描述】:我正在尝试设置贝宝自适应支付流程来创建连锁支付。在遇到许多麻烦后,我的桌面版付款正常工作,它将付款发送给所有接收者,并正确重定向到我的网站。我现在的问题是在真正的移动浏览器中(设置我的桌面浏览器的用户代理解决了所有问题,但这自然不是真正的移动用户体验)。 这是我的代码:
<!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 个接收者(主要和次要),流程将类似于:
发件人购买商品 -> 支付主要收款人 -> 主要收款人支付一定百分比给次要收款人(网络应用所有者)。
这是我的业务类型,正如您所见,它是一个简单的链式流程,并且在桌面版本中可以正常工作。
实现我的业务类型的技术流程是什么?
发件人购买商品->我调用第一个api来创建付款并检索paykey->使用paykey我发送一个表单以实例化迷你浏览器流程->发件人在迷你浏览器中完成支付->迷你浏览器返回和启动回调js函数->在回调js函数中我调用另一个paypal api来获取付款详细信息->分析付款详细信息我知道交易是否完成->如果交易完成我必须将用户重定向到特定页面在我的网站上,如果交易未完成,我必须将用户重定向到另一个页面。
【问题讨论】:
【参考方案1】:假设您使用的是 ios 版 Safari,您可以尝试使用 Safari 的调试器 https://developer.apple.com/safari/tools/ 。 您应该考虑的另一件事是在 HTTP 请求中发送一个 User-Agent 标头,将浏览器标识为移动浏览器。 (paypal mobile express redirects to web instead of mobile)
【讨论】:
以上是关于Paypal 自适应支付无法在移动设备上运行的主要内容,如果未能解决你的问题,请参考以下文章
PayPal 支付标准从移动设备返回 GET 而不是 POST,因此无法验证记录支付
协助 PayPal 自适应支付 - IOS 和 Android 开发