2016-08-16 33 views
1

我正在使用PayPal上下文快速结账。以下是我目前所面对的:PayPal上下文签出单击活动

paypal.checkout.setup("my_app.domain.co.uk", { 
    locale: 'en_GB', 
    environment: 'production', 
    button: 'PayPalSubmit' 
}); 

和HTML:

<form id="PayPalForm" action="/lib/paypal/paypal_ec_redirect.php" method="POST"> 
    <input type="hidden" name="currencyCodeType" value="GBP" /> 
    <input type="hidden" name="paymentType" value="Sale" /> 
    <input type="hidden" name="PAYMENTREQUEST_0_PAYMENTACTION" value="Sale" /> 
    <input type="hidden" name="L_PAYMENTREQUEST_0_NAME0" value="Test" /> 
    <input type="hidden" name="PAYMENTREQUEST_0_DESC" value="Test" /> 
    <input type="hidden" name="L_PAYMENTREQUEST_0_QTY0" value="1" /> 
    <input type="hidden" name="PAYMENTREQUEST_0_ITEMAMT" value="1" /> 
    <input type="hidden" name="PAYMENTREQUEST_0_AMT" value="1"> 
    <input type="hidden" name="NOSHIPPING" value="1"> 
    <button type="submit" id="PayPalSubmit" class="jfk-button-action"> 
     Pay with PayPal 
    </button> 
</form> 
<script src="//www.paypalobjects.com/api/checkout.js" async></script> 

这工作的那一刻,但我想添加一个回调改变一些东西,当用户点击付费按钮,即PayPal弹出窗口打开。我曾经尝试这样做:

paypal.checkout.setup("my_app.domain.co.uk", { 
    locale: 'en_GB', 
    environment: 'production', 
    button: 'PayPalSubmit', 
    click: function() { 
     paypal.checkout.initXO(); 
     $('#popup').html('Processing your booking...'); 
    } 
}); 

能正常工作的谷歌浏览器,但在Firefox和IE浏览器弹出窗口打开,贝宝加载GIF只是对窗口的标题挂在那儿:空白。有谁知道发生了什么事?

回答

0

我不认为你真的使用贝宝在上下文中的工作流。 通过这个脚本,表单被提交并且你到达“/lib/paypal/paypal_ec_redirect.php”。 对于In-Context-Workflow,您首先设置您的付款并获得令牌。 然后在JS中必须用“paypal.checkout.startFlow(token)”开始流程。 这是我使用的一个代码示例。 “event.preventDefault();”不执行表单url,并且ajax获取令牌。

 window.paypalCheckoutReady = function() { 
     //alert('paypalCheckoutReady'); 
     paypal.checkout.setup('@Model.PayPalMerchantId', { 
      environment: '@Model.PayPalEnvironment', 
      click: function (event) { 
       //alert('paypalCheckoutClick'); 
       $('#checkout').attr("disabled", "disabled"); 
       event.preventDefault(); 
       paypal.checkout.initXO(); 
       $.support.cor = true; 
       $.ajax({ 
        url: '@Url.Action("Checkout","shop")', 
        data: $('#payment-form').serialize(), 
        type: 'POST', 
        async: false, 
        crossDomain: true, 
        success: function (token) { 
         //alert('checkout success: ' + token); 
         //var url = paypal.checkout.urlPrefix + token; 
         paypal.checkout.startFlow(token); 
        }, 
        error: function (responseData, textStatus, errorThrown) { 
         //alert('checkout error: ' + textStatus); 
         paypal.checkout.closeFlow(); 
        } 
       }); 
      }, 
      condition: function() { 
       var ispaypal = $('input[name=paymentmethod]:checked', '#payment-form').val() == 'paypal'; 
       //alert(ispaypal); 
       return ispaypal; 
      }, 
      button: ['checkout'], 
     }); 
    } 

对我来说