2017-02-08 71 views
1

据下的高级服务器集成了documentation on PayPal's Developer site,重定向URL必须在支付电话提供,但:RedirectUrls被称为,onAuthorize函数会忽略

(...)的PayPal不会自动调用这些URL。当买方授权付款时,PayPal调用您的onAuthorize函数。提供的 将不会被使用。

因此,我开发了我的代码假设这是真实的,并在我的本地设置这工作正常。但是当我将它推送到我的登台服务器时,正在调用在SDK中传递的重定向URL,并忽略了我的onAuthorize函数。它甚至打开一个新的弹出窗口,然后在那里打开我的payment-execute.php脚本,附加GET查询,忽略我的POST ed值。

下面是我使用的JS的样本:

paypal.Button.render({ 

    env: 'sandbox', 

    payment: function(resolve, reject) { 

     paypal.request.post(
      '/path-to-inc/payment.php', 
      { 
       action: 'create_paypal_payment', 
       orderId: order_id, 
       postId: post_id, 
      } 
     ) 
     .then(function(data) { 
      resolve(data.paymentID); 
     }) 
     .catch(function(err) { 
      reject(err); 
     }); 
    }, 

    onAuthorize: function(data) { 

     paypal.request.post('/path-to-inc/payment-execute.php', 
      { 
       paymentID: data.paymentID, 
       payerID: data.payerID, 
       postId: post_id 
      }) 

      .then(function(data) { 
       window.location.reload(); 
      }) 

      .catch(function(err) { 
       console.log('Error'); 
     }); 
    } 

}, '#paypal-button'); 

而且从PHP文件中的一个片段:

$redirectUrls = new RedirectUrls(); 
$redirectUrls->setReturnUrl('http://website.com/payment-execute.php') 
    ->setCancelUrl('http://website.com/checkout'); 

$payment = new Payment(); 
$payment->setIntent('sale') 
    ->setPayer($payer) 
    ->setRedirectUrls($redirectUrls) 
    ->setTransactions(array($transaction)); 

try { 

    $payment->create($apiContext); 

    echo json_encode(['paymentID' => $payment->id]); 

} catch (Exception $e) { 

    error_log('Payment error: ' . $e->getMessage()); 
} 
+0

不确定它是否相关,但仅在暂存服务器上显示* 404 *错误,该错误服务器显示以下内容:'https:// www.paypalobjects.com/api/checkout.4.0.40.js',尽管我可以请参阅'/ checkout.4.0.39.js'已成功加载到开发工具的网络面板中。 – Benji

+0

您正在使用哪种浏览器?你有一个演示页面,我可以尝试哪些显示版本错误? – bluepnume

+0

这是在Chrome 55,Safari 10和Firefox 49中,所有相同的问题。我会看看我是否可以很快设置演示。 – Benji

回答

1

因为我有1天前同样的问题,我正在工作在旧测试中的onAuthorize调用

编辑1:使用旧脚本版本进行测试,并使用此测试版获得预期结果https://www.paypalobjects.com/api/checkout.4.0.38.js

+0

v4.0.40也有修复。 – bluepnume

+0

现在,如果我从https://www.paypalobjects.com/api/checkout.js获取该文件,我将获得4.0.39版本(这是忽略onAuthorize调用)_,并且当我尝试使用https ://www.paypalobjects.com/api/checkout.4.0.38.js或https://www.paypalobjects.com/api/checkout.4.0.40.js我收到服务器错误 –