javascript - 未呈现 PayPal 支付墙 - 错误 "Invalid approval URL"

标签 javascript php laravel paypal paypal-rest-sdk

我正在我们的网站上集成 PayPal Plus 环境。我们正在使用 Github 上提供的当前版本的 PayPal PHP SDK (1.7.4) https://github.com/paypal/PayPal-PHP-SDK .我们在 IIS 10 上使用 PHP 7.0.7。

首先,我们按照集成指南中的说明创建付款。我们从付款中收到一个有效的批准 url(格式: https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=.. .). 我在浏览器中手动检查了 url。

付款在 Controller 中创建并提供给 View 。

Controller :

    function showPaymentWall() {
    $payment = $this->createPayment();
    return view("payments.paypal.paymentWall",['payment'=>$payment, 'approval_url'=> $this->approvalUrl]);
}

approval_url是在方法createPayment中设置的。

这是 View 中的代码:

@extends('layouts.master')
@section('title')
Upgrade
@endsection
@section('content')
<div class="container">
    <div class="row">
        <div class="form-group col-xs-12 col-sm-12 col-md-12 col-lg-12">
            <div>{{ $approval_url }}</div>
            <div id="ppplus"></div>
        </div>
    </div>

</div>
@endsection

@section('scriptIndividualJSCode')
<script src="https://www.paypalobjects.com/webstatic/ppplus/ppplus.min.js" type="text/javascript"></script>
<script type="application/javascript">
     var ppp = PAYPAL.apps.PPP({
        "approvalUrl": "{{ $approval_url }}",
        "placeholder": "ppplus",
        "mode": "sandbox",
        "country": "DE"
     });
</script>
@endsection

如您所见,有效的 url 显示在 ppplus 容器之前。很明显,该 url 是有效的并且由 Controller 正确给出。 但是当我访问该页面时,我总是得到这个错误:

enter image description here

当我通过控制台检查原因时,它显示“无效的批准 url”。

enter image description here

有人知道为什么或我可以检查什么以取得进展吗? 在此先感谢您的帮助!

最佳答案

找了半天找到原因了。

事实证明,批准 URL 中的 & 必须替换为 &。 然后它起作用了。这可以通过 PHP 函数 htmlspecialchars_decode() 完成(参见 http://php.net/manual/de/function.htmlspecialchars-decode.php )。这是我的 javascript 部分的代码:

<script type="application/javascript">
             var ppp = PAYPAL.apps.PPP({
                "approvalUrl": "<?php echo htmlspecialchars_decode($approval_url); ?>",
                "placeholder": "ppplus",
                "mode": "sandbox",
                "country": "DE",
                "language": "de_DE"
             });
</script>

关于javascript - 未呈现 PayPal 支付墙 - 错误 "Invalid approval URL",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38920556/

相关文章:

javascript - 如何在 OnSend 中使用需求集 1.7?

php - Laravel 9 未定义类 'MainController' 一旦取消注释 RouteServiceProvider 中的 Controller 命名空间

php - 让 Laravel/PHPUnit 记住所有完成的请求

javascript - 如何在客户端 javascript 中将 .wav 文件从 url 转换为 base64?

javascript - 将进度条与网格结合使用

php exec() 未通过 cron 作业运行

javascript - Bootstrap 表单在模式确认后提交

php - 来自外部 url 源的 Laravel 4 Response::download()

Laravel错误: Unable to prepare route [login] for serialization

javascript - 通过单击图像显示/隐藏 div