未呈现PayPal付款墙 - 错误"无效的批准网址"

dns*_*_nx 2 javascript php paypal laravel paypal-rest-sdk

我正在整合PayPal Plus我们网站上的环境.我们正在使用PayPal PHP SDKGithub上的当前版本的(1.7.4)https://github.com/paypal/PayPal-PHP-SDK.我们PHPIIS10 上使用7.0.7 .

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

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

控制器:

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

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
Run Code Online (Sandbox Code Playgroud)

如您所见,有效的url显示在ppplus容器之前.因此很清楚,url是有效的并且由控制器正确地给出.但是当我访问该页面时,我总是收到此错误:

在此输入图像描述

当我通过控制台检查原因时,它说"无效的批准网址".

在此输入图像描述

有人知道为什么或我能检查什么来推进?在此先感谢您的帮助!

dns*_*_nx 7

经过长时间的搜索,我找到了原因.

它出来了,必须&amp;用批准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>
Run Code Online (Sandbox Code Playgroud)