2016-08-12 7 views
1

Я интегрирую среду PayPal Plus на нашем сайте. Мы используем текущую версию PayPal PHP SDK (1.7.4), доступную на Github https://github.com/paypal/PayPal-PHP-SDK. Мы используем PHP 7.0.7 на IIS 10.Платежная плата PayPal не отображается - Ошибка «Недопустимый URL-адрес утверждения»

Сначала мы создаем платеж, как описано в руководстве по интеграции. Мы получаем действительный 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]); 
} 

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-адрес действителен и правильно задан контроллером. Но когда я захожу на страницу, я всегда получаю эту ошибку:

enter image description here

Когда я проверяю причину с помощью консоли он говорит: «Invalid утверждение URL».

enter image description here

Кто-нибудь идея, почему или то, что я могу проверить, чтобы получить вперед? Заранее благодарим за любую помощь!

ответ

4

Я нашел причину после длительного поиска.

Выходит, что &amp; в URL-адресе должно быть заменено на &. Тогда это сработало. Это можно сделать с помощью функции PHPhtmlspecialchars_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> 
+0

Спасибо за подсказку, уделил мне много времени. Если кто-то работает с 'Symfony' и' Twig', для вставки «URL» в правильном формате можно использовать следующее: '{{утверждение_url | raw}} –

+0

' raw' в Ruby ... – Railsana