我使用Paypals自适应付款和嵌入式流量功能通过迷你浏览器提供结帐。除了当付款成功完成时,用户永远不会被重定向到在PAY API请求中设置的returnUrl,所以一切似乎都在沙箱环境中正常工作。我的cancelUrl也是如此。
付款完成后,用户会在小型浏览器中显示订单概览,并显示标有“关闭”的按钮。如果用户单击此按钮,则关闭迷你浏览器。
如果用户随时点击取消,则关闭迷你浏览器。
似乎没有办法让我的页面知道更改,除了设置一些轮询或一些没有意义的东西,我的returnUrl和cancelUrl应该在某个地方使用,对吗?
这是我获取重定向网址的代码(使用自适应支付宝石):
pay_request = PaypalAdaptive::Request.new
data = {
'requestEnvelope' => {'errorLanguage' => 'en_US'},
'currencyCode' => 'USD',
'receiverList' =>
{ 'receiver' => [
{'email' => '...', 'amount'=> 10.00}
]},
'actionType' => 'PAY',
'returnUrl' => 'http://www.example.com/paid',
'cancelUrl' => 'http://www.example.com/cancelled',
'ipnNotificationUrl' => 'http://www.example.com/ipn'
}
pay_response = pay_request.pay(data)
redirect_to pay_response.approve_paypal_payment_url "mini"
以下是我如何设置paypal js:
var dg = new PAYPAL.apps.DGFlowMini({ trigger: "buyit", expType: "mini" });
这一切似乎很直接,不确定我错过了什么。
答案 0 :(得分:9)
嗯 - 似乎是我们这边的一个错误 - 只是自己尝试并与我们的集成团队确认。 :-(
不幸的是,除了你提到的(检查弹出窗口是否存在)之外,我能想到的另一个短期修复是从服务器端调用PaymentDetails API来检查付款的状态。我已经打开了我们这边的错误但没有ETA。
编辑10/18 :抱歉,我错了。这是有效的 - 只是我们的开发者指南没有提供所有必需的信息。如果是迷你浏览器流,您需要提供'callbackFunction'并将dgFlow变量命名为'dgFlowMini'。 (后者很重要 - 因为apdg.js期望定义'dgFlowMini'变量)以下是有效的代码:
var returnFromPayPal = function(){
alert("Returned from PayPal");
// Here you would need to pass on the payKey to your server side handle to call the PaymentDetails API to make sure Payment has been successful or not
// based on the payment status- redirect to your success or cancel/failed urls
}
var dgFlowMini = new PAYPAL.apps.DGFlowMini({trigger: 'em_authz_button', expType: 'mini', callbackFunction: 'returnFromPayPal'});
我在这里有一个工作示例:https://pp-ap-sample.appspot.com/adaptivesample?action=pay(确保选择mini作为体验类型)
我们将更新我们的文档并清理apdg.js以删除对JS变量名的依赖。
答案 1 :(得分:2)
看起来嵌入式流量的PayPal体验变得更糟。现在,您在调用迷你或灯箱后会收到一条错误消息,说明"付款无法完成。此功能目前无法使用。"