2015-01-23 4 views
1

Я пытаюсь использовать адаптивный платеж Paypal с использованием опции мини-браузера с использованием Codeigniter framework в PHP для моих продуктов. Когда я нажимаю кнопку оплаты, мини-браузер открывается хорошо, но когда я нажимаю кнопку «Вход», открывается новая вкладка, но я хочу открыть этот вход в существующем мини-браузере.Paypal Adaptive payment minibrowser

Файл вид:

 <html> 
     <head> 
     <script src="https://www.paypalobjects.com/js/external/apdg.js" type="text/javascript"></script> 
    </head> 
    <body> 
     <?php echo form_open_multipart('pay/splitPay','target="PPDGFrame"', 'class="standard"', 'id="mini-form"'); ?> 
    <label for="buy">Buy Now:</label> 
    <input type="image" id="submitBtn" value="Pay with PayPal" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif"> 
    <input id="type" type="hidden" name="expType" value="mini"> 
    <input id="paykey" type="hidden" name="paykey" value="10"> 
    </form> 
    <script type="text/javascript" charset="utf-8"> 
     var returnFromPayPal = function(){ 

     alert("Returned from PayPal"); 
    // Here you would need to pass on the payKey to your server side handle to call the PaymentDetails API to make sure Payment has been successful or not 
    // based on the payment status- redirect to your success or cancel/failed urls 
     } 
    var dgFlowMini = new PAYPAL.apps.DGFlowMini({trigger: 'submitBtn', expType: 'mini', callbackFunction: 'returnFromPayPal'}); 
    </script> 

контроллер:

 function splitPay() { 
     $createPacket = array (
     "actionType" => "PAY", 
     "currencyCode" => 'USD', 
     "receiverList" => array(
       "receiver" => array(
        array("amount"=>'2.00', "email"=>'[email protected]'), 
        array("amount"=>'4.00', "email"=>'[email protected]'), 
       ) 
      ), 
     "returnUrl" => 'http://localhost/paypal/index.php/pay/notify_payment', 
     "cancelUrl" => 'http://localhost/paypal/index.php/pay/tempo', 
     "requestEnvelope" => $this->envelope 
    ); 

    $response = $this->_paypalSend($createPacket,"Pay"); 
    $payKey = $response['payKey']; 
    $detailsPacket = array(
     "requestEnvelope" => $this->envelope, 
     "payKey" => $payKey, 
     "receiverOptions" => array(
      array(
       "receiver"=>array(
        'email'=>'[email protected]'), 
        'invoiceData'=>array(
        'item'=>array(
         array(
          "name"=>'product1', 
          "price"=>'1.00', 
          "identifier"=>'P1' 
         ), 
         array(
          "name"=>'product2', 
          "price"=>'1.00', 
          "identifier"=>'P2' 
         ) 
        ) 
      )), 
      array(
       "receiver"=>array(
        'email'=>'[email protected]'), 
        'invoiceData'=>array(
        'item'=>array(
         array(
          "name"=>'product3', 
          "price"=>'2.00', 
          "identifier"=>'P1' 
         ), 
         array(
          "name"=>'product4', 
          "price"=>'2.00', 
          "identifier"=>'P2' 
         ) 
        ) 
      )) 
     ) 
    ); 

    $response = $this->_paypalSend($detailsPacket,"SetPaymentOptions"); 

    $dets = $this->getPaymentOptions($payKey); 

    header("Location: ".$this->paypalUrl.$payKey); 
} 

ответ

1

PayPal имеет требования к безопасности, которые заставляют новое окно при некоторых обстоятельствах (и JavaScript для обеспечения соблюдения это). Как правило, они требуют этого, когда пользователь вводит учетные данные для входа, и это может быть то, о чем вы говорите, с кнопкой «login» vs «payment» в вашем вопросе?

Это делается для того, чтобы свести к минимуму риск кражи учетных данных с помощью межсайтовых скриптовых атак и убедиться, что пользователь видит «хром» (например, защищенные символы соединения и URL-адрес PayPal) и может проверить, что окно надежно подключено к PayPal при вводе их полномочия (по причинам, связанным с фишингом).

Некоторые из новых продуктов PayPal ослабляют эти требования, но я уверен, что Adaptive прочно обоснован в этой парадигме.

+0

Не существует способа заставить логин открываться в существующем мини-браузере вместо открытия новой вкладки? –

+0

Не то, чтобы я знал. Это было не предполагаемое использование, когда поток был разработан. Но вам нужно будет проверить документы; Я не знаю всех адаптивных параметров. – geewiz

+0

спасибо за ответ –

Смежные вопросы