Duda sobre iframe

  • 7 Respuestas
  • 1730 Vistas

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

Desconectado side000

  • *
  • Underc0der
  • Mensajes: 5
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Duda sobre iframe

  • en: Julio 02, 2019, 02:17:17 pm
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: [Seleccionar]
(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".
« Última modificación: Julio 03, 2019, 05:39:33 am por HATI »

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5708
  • Actividad:
    20%
  • Actividad:
    20%
  • Country: ar
  • Reputación 37
  • ANTRAX
  • Skype: underc0de.org
  • Twitter: @Underc0de
    • Ver Perfil
    • Underc0de
    • Email

Re:Duda sobre iframe

  • en: Julio 02, 2019, 03:23:19 pm
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


Desconectado side000

  • *
  • Underc0der
  • Mensajes: 5
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Duda sobre iframe

  • en: Julio 02, 2019, 04:52:50 pm
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: [Seleccionar]
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: [Seleccionar]
$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: [Seleccionar]
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:


Desconectado hielasangre

  • *
  • Underc0der
  • Mensajes: 258
  • Actividad:
    0%
  • Actividad:
    0%
  • Country: 00
  • Reputación 7
    • Ver Perfil

Re:Duda sobre iframe

  • en: Julio 02, 2019, 11:30:21 pm
para que quisieras quedarte con los datos? en teoria vos no lo deberias tener.

Desconectado side000

  • *
  • Underc0der
  • Mensajes: 5
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Duda sobre iframe

  • en: Julio 03, 2019, 05:18:45 am
para que quisieras quedarte con los datos? en teoria vos no lo deberias tener.



Y ahí esta el chiste.
« Última modificación: Julio 03, 2019, 01:15:53 pm por side000 »

Desconectado hielasangre

  • *
  • Underc0der
  • Mensajes: 258
  • Actividad:
    0%
  • Actividad:
    0%
  • Country: 00
  • Reputación 7
    • Ver Perfil

Re:Duda sobre iframe

  • en: Julio 03, 2019, 10:35:03 am
wow que gracioso, bien de lammer.

Desconectado side000

  • *
  • Underc0der
  • Mensajes: 5
  • Actividad:
    0%
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Duda sobre iframe

  • en: Julio 03, 2019, 01:09:04 pm
wow que gracioso, bien de lammer.

Ya te helaste?

Desconectado AXCESS

  • *
  • Moderator
  • Mensajes: 999
  • Actividad:
    100%
  • Actividad:
    100%
  • Country: 00
  • Reputación 18
    • Ver Perfil
    • Email

Re:Duda sobre iframe

  • en: Julio 03, 2019, 01:55:13 pm
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.

« Última modificación: Julio 03, 2019, 02:11:57 pm por AXCESS »