【问题标题】:RedirectUrls Being Called, onAuthorize Function Ignored调用 RedirectUrls,忽略 onAuthorize 函数
【发布时间】:2017-06-26 12:50:57
【问题描述】:

根据高级服务器集成下的documentation on PayPal's Developer site,必须在支付调用中提供重定向 URL,但是:

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

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

这是我正在使用的 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 文件的 sn-p:

$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() );
}

【问题讨论】:

  • 不确定它是否相关,但仅在登台服务器上显示以下错误 404 错误:https://www.paypalobjects.com/api/checkout.4.0.40.js,虽然我可以看到 /checkout.4.0.39.js 已成功加载在开发工具的网络面板中。
  • 您使用的是哪个浏览器?你有我可以尝试显示版本错误的演示页面吗?
  • 这在 Chrome 55、Safari 10 和 Firefox 49 中都是相同的问题。我会看看我是否可以尽快设置一个演示。
  • 谢谢,我很乐意看看
  • 发现问题。请升级到 v4.0.40。感谢您找到这个!

标签: php paypal-sandbox paypal-rest-sdk paypal


【解决方案1】:

我从 1 天前开始遇到同样的问题,我在旧测试中使用 onAuthorize 调用

编辑1:使用旧脚本版本进行良好测试,我使用这个https://www.paypalobjects.com/api/checkout.4.0.38.js得到了预期的结果@

【讨论】:

猜你喜欢
  • 2017-11-06
  • 2015-01-02
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
相关资源
最近更新 更多