Duda sobre iframe

Iniciado por side000, Julio 02, 2019, 02:17:17 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Julio 02, 2019, 02:17:17 PM Ultima modificación: Julio 03, 2019, 05:39:33 AM por HATI
Hola gente, tengo un sistema de pago de Paypal, mi web carga un iframe, donde al suministrar los datos del pago, y darle continuar (ajax request), la peticion envia los datos por post desde el iframe a paypal, por otro lado el backend, carga el iframe de acuerdo a la info proporcionada como direccion de facturacion, email etc, mi pregunta es .. hay alguna manera de interceptar los datos que se envian desde el iframe, algo así como un "hook"?, he visto cosas como esta:

Código: php
(function(send) {
    XMLHttpRequest.prototype.send = function(body) {
        var info="send data\r\n"+body;
        alert(info);
        send.call(this, body);
    };
})(XMLHttpRequest.prototype.send);


Pero solo detecta las peticiones de la web y no del iframe.

Hay algúna forma de interceptar las peticiones POST de la pestaña, incluido los iframe en ellas? O alguna manera de manipular el SDK php de PAYPAL?

Lo que quiero hacer es lo que se llama "steal".

Pero porque no usas la API de Paypal? O los botones de pago de paypal y que redireccionen a la verdadera pagina de paypal.
Usar un iframe es casi como un pecado. Es una muy mala práctica, además de super inseguro.

Saludos,
ANTRAX


Exactamente eso es lo que hago, pero no puedo enviar los datos de las tarjetas directamente, el proceso es utilizando la API

este es el código:

Código: php
 global $order, $apiContext, $approvalUrl, $paypal_payment_id, $currency;

      // $reset paypal payment id
      $paypal_payment_id = null;

      // set the payer
      $payer = new Payer();
      $payer->setPaymentMethod("paypal");

      // add order items
      $products = $order->products;
      $items = array();
      // save only one product
      $item = new Item();
     
     
      $item->setName(utf8_encode(STORE_NAME))
           ->setDescription(utf8_encode(STORE_NAME))
           ->setCurrency($currency)
           ->setQuantity(1)
           ->setTax(0)
           ->setPrice(tep_round($order->info['subtotal'] * $order->info['currency_value'],2));
      $items[] = $item;

      $itemList = new ItemList();
      $itemList->setItems($items);

      $details = new Details();
      $details->setShipping(0)
              //->setInsurance(0)
              ->setTax(0)
              ->setSubtotal(tep_round($order->info['subtotal'] * $order->info['currency_value'],2));

      // set total
      $amount = new Amount();
      $amount->setCurrency($currency)
             ->setTotal(tep_round($order->info['subtotal'] * $order->info['currency_value'],2))
             ->setDetails($details);

      $transaction = new Transaction();
      $transaction->setAmount($amount)
                  ->setItemList($itemList)
                  ->setDescription(utf8_encode($this->title))
                  ->setInvoiceNumber(uniqid());

      // Set redirect urls
      $redirectUrls = new RedirectUrls();
      $redirectUrls->setReturnUrl(HTTPS_SERVER . '/' . FILENAME_CHECKOUT_PROCESS)
                   ->setCancelUrl(HTTPS_SERVER . '/' . FILENAME_SHOPPING_CART);

      // Expirience web profile
      $flowConfig = new FlowConfig();
      $flowConfig->setLandingPageType("Billing");
      $flowConfig->setUserAction("commit");

      $presentation = new Presentation();
      $presentation->setLogoImage(HTTPS_SERVER . "/img/splash_screen_black.png")
                   ->setBrandName(STORE_NAME . " Paypal")
                   ->setLocaleCode("MX")
                   ->setReturnUrlLabel("Return")
                   ->setNoteToSellerLabel("Thanks!");

      $inputFields = new InputFields();
      $inputFields->setAllowNote(true)
                  ->setNoShipping(1)
                  ->setAddressOverride(0);

      $webProfile = new WebProfile();
      $webProfile->setName(STORE_NAME . " Shop " . uniqid())
                 ->setFlowConfig($flowConfig)
                 ->setPresentation($presentation)
                 ->setInputFields($inputFields)
                 ->setTemporary(false);

      $ppayment = new Payment();
      $ppayment->setIntent("sale")
              ->setPayer($payer)
              ->setRedirectUrls($redirectUrls)
              ->setTransactions(array($transaction));

      try {
        if (!tep_not_null(MODULE_PAYMENT_PAYPALPLUS_WEB_PROFILE)) {
          $createProfileResponse = $webProfile->create($apiContext);
          $experienceProfileId = $createProfileResponse->getId();

          tep_db_query("update " . TABLE_CONFIGURATION . " set configuration_value = '$experienceProfileId' where configuration_key =
'MODULE_PAYMENT_PAYPALPLUS_WEB_PROFILE'");
        } else { $experienceProfileId = MODULE_PAYMENT_PAYPALPLUS_WEB_PROFILE; }

        $ppayment->setExperienceProfileId($experienceProfileId);
        $response = $ppayment->create($apiContext);
        $approvalUrl = $ppayment->getApprovalLink();
      } catch (Exception $e) {
        return false;
      }

      $paypal_payment_id = $ppayment->getId();

      return array('id' => $this->code, 'module' => $this->title, 'info' => $this->info, 'extra' => $this->extra, 'script' => $this->script);
    }


Y esto:

Código: php
$createdPayment = Payment::get($paypal_payment_id, $apiContext);
          $payer = $createdPayment->getPayer();
          $payerInfo = $payer->getPayerInfo();
          $execution = new PaymentExecution();
          $execution->setPayerId($payerInfo->getPayerId());
          $ppayment = $createdPayment->execute($execution, $apiContext);

          // debug result update
     

          // get transactions and payment execution state
          $transactions = $ppayment->getTransactions();
          $transaction = $transactions[0];
          $relatedResources = $transaction->getRelatedResources();
          $resource = $relatedResources[0];
          $state = $resource->getSale()->getState();


Con esto obtengo lo siguiente:

Código: php
update:PayPal\Api\Payment Object
(
    [_propMap:PayPal\Common\PayPalModel:private] => Array
        (
            [id] => PAY-JKKJHB5445FD
            [intent] => sale
            [state] => approved
            [cart] => 45FDFDCCFF
            [payer] => PayPal\Api\Payer Object
                (
                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                        (
                            [payment_method] => paypal
                            [status] => UNVERIFIED
                            [payer_info] => PayPal\Api\PayerInfo Object
                                (
                                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                                        (
                                            [email] => [email protected]
                                            [first_name] => EDUARDO
                                            [last_name] => DFFDFH F
                                            [payer_id] => FDG45GG
                                            [shipping_address] => PayPal\Api\ShippingAddress Object
                                                (
                                                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                                                        (
                                                            [recipient_name] => EDUARDO LS AX
                                                            [line1] => DSDD 554
                                                            [line2] => DSSSD 434
                                                            [city] => FXXXF
                                                            [state] => ER
                                                            [postal_code] => 1111
                                                            [country_code] => DE
                                                        )

                                                )

                                            [country_code] => DE
                                        )

                                )

                        )

                )


Pero no puedo obtener los datos de las tarjetas, por que el mismo API crea un iframe, y como ven esa información obtenida es la devolucion de la compra realizada por el iframe, no por el banckend, en ningun momento la api ve los numeros de las tarjetas.

Mi pregunta es .. hay algún método para conseguir los números de las tarjetas? ya sea modificando el código o lo que sea? este es el aspecto del iframe:


para que quisieras quedarte con los datos? en teoria vos no lo deberias tener.

Julio 03, 2019, 05:18:45 AM #4 Ultima modificación: Julio 03, 2019, 01:15:53 PM por side000
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
para que quisieras quedarte con los datos? en teoria vos no lo deberias tener.



Y ahí esta el chiste.

wow que gracioso, bien de lammer.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
wow que gracioso, bien de lammer.

Ya te helaste?

Julio 03, 2019, 01:55:13 PM #7 Ultima modificación: Julio 03, 2019, 02:11:57 PM por AXCESS
Veo que el post ha generado discrepancias y se han subido los tonos.

Por otro lado, se ha argumentado la poca ética de los fines del actual post.

Por lo que decido cerrarlo para evitar males mayores.

No obstante, si no se estuviere de acuerdo con tal medida; por favor, contactar a uno de los Co Admin, o al propietario del Foro.

A ambos caballeros les recuerdo que, se pueden tener discrepancias, o divergencias sobre el actuar, pero el Foro no es sitio para intercambiar vilezas; u argumentos que denigren maliciosamente la postura intelectual del opuesto.

Les deseo paz.

Buenos deseos.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta