Paypal Embedded Flow不使用returnUrl或cancelUrl

时间:2012-10-12 13:29:42

标签: javascript ruby-on-rails-3 iframe paypal paypal-adaptive-payments

我使用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" });

这一切似乎很直接,不确定我错过了什么。

2 个答案:

答案 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体验变得更糟。现在,您在调用迷你或灯箱后会收到一条错误消息,说明"付款无法完成。此功能目前无法使用。"