【问题标题】:PayPal payment wall not rendered - Error "Invalid approval URL"未呈现 PayPal 支付墙 - 错误“无效的批准 URL”
【发布时间】:2016-12-19 14:54:03
【问题描述】:

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

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

付款在控制器中创建并提供给视图。

控制器:

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

approval_url 是在方法createPayment 中设置的。

这是视图中的代码:

@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 是有效的,并且由控制器正确给出。 但是当我访问该页面时,我总是得到这个错误:

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

任何人知道为什么或我可以检查什么以继续前进吗? 提前感谢您的帮助!

【问题讨论】:

    标签: javascript php laravel paypal paypal-rest-sdk


    【解决方案1】:

    找了很久才找到原因。

    结果表明,批准 URL 中的 &amp;amp; 必须替换为 &amp;。 然后它起作用了。这可以通过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>
    

    【讨论】:

    • 感谢您的提示,为我节省了很多时间。如果有人使用SymfonyTwig,可以使用以下命令以正确格式插入URL:`{{approval_url|raw }}
    猜你喜欢
    • 2017-06-19
    • 2021-10-11
    • 2013-12-24
    • 2017-03-21
    • 2011-08-27
    • 2013-09-15
    • 2015-04-30
    • 1970-01-01
    • 2015-04-22
    相关资源
    最近更新 更多