Paypal自适应付款无法在移动版

时间:2017-03-28 06:41:45

标签: paypal paypal-sandbox paypal-adaptive-payments

我正在尝试设置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;如果交易完成,我必须将用户重定向到我网站上的特定页面,如果交易未完成,我必须将用户重定向到另一页。

1 个答案:

答案 0 :(得分:0)

假设您使用的是Safari for iOS,您可以尝试使用Safari https://developer.apple.com/safari/tools/的调试器。 您应该考虑的另一件事是在HTTP请求中发送User-Agent标头,将浏览器标识为移动浏览器。 (paypal mobile express redirects to web instead of mobile