未呈现 PayPal 支付墙 - 错误 "Invalid approval URL"
PayPal payment wall not rendered - Error "Invalid approval URL"
我正在将 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=...)。
我手动检查了浏览器中的url。
付款在控制器中创建并提供给视图。
控制器:
function showPaymentWall() {
$payment = $this->createPayment();
return view("payments.paypal.paymentWall",['payment'=>$payment, 'approval_url'=> $this->approvalUrl]);
}
方法createPayment
中设置了approval_url
。
这是视图中的代码:
@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 有效且由控制器正确给出。
但是当我访问该页面时,我总是得到这个错误:
当我通过控制台检查原因时,它显示 "Invalid approval url"。
任何人都知道为什么或我可以检查什么以取得进展?
在此先感谢您的帮助!
找了半天终于找到原因了
结果,审批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>
我正在将 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=...)。 我手动检查了浏览器中的url。
付款在控制器中创建并提供给视图。
控制器:
function showPaymentWall() {
$payment = $this->createPayment();
return view("payments.paypal.paymentWall",['payment'=>$payment, 'approval_url'=> $this->approvalUrl]);
}
方法createPayment
中设置了approval_url
。
这是视图中的代码:
@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 有效且由控制器正确给出。 但是当我访问该页面时,我总是得到这个错误:
当我通过控制台检查原因时,它显示 "Invalid approval url"。
任何人都知道为什么或我可以检查什么以取得进展? 在此先感谢您的帮助!
找了半天终于找到原因了
结果,审批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>