在 Iframe Redsys 中打开网页 API

Open web page in Iframe Redsys API

我打算在我的应用程序中集成 Redsys API。所有 Api 它都是集成的,但我的问题是,在我的项目中,我需要使用 iframe 以模式打开 redsys。在我的控制器中,我有所有代码来创建对服务器的请愿书和 return 表格:

<form action="https://sis.redsys.es/sis/realizarPago" method="post" id="redsys_form" name="redsys_form" >
            <input type="hidden" name="Ds_MerchantParameters" value="eyJEU19NRVJDSEFOVF9BTU9VTlQiOjEzOTkwMCwiRFNfTUVSQ0hBTlRfT1JERVIiOiIyMjAyMDIyMDAwMzciLCJEU19NRVJDSEFOVF9NRVJDSEFOVENPREUiOiI2NjgyODc5OSIsIkRTX01FUkNIQU5UX0NVUlJFTkNZIjoiOTc4IiwiRFNfTUVSQ0hBTlRfVFJBTlNBQ1RJT05UWVBFIjoiMCIsIkRTX01FUkNIQU5UX1RFUk1JTkFMIjoiMSIsIkRTX01FUkNIQU5UX1BBWU1FVEhPRFMiOiJUIiwiRFNfTUVSQ0hBTlRfTUVSQ0hBTlRVUkwiOiJodHRwczpcL1wvaW50cmFuZXQuZ3J1cG9kZWx1eGUuY29tXC9yZWRpcmVjY2lvbmVzXC9ub3RpZmljYXRpb24/aWRlbj1kMWYyN2Q0YWVlMGFjN2E3JmRhdGU9TWpBeU1pMHdNeTB4TmlBeE5qb3lNVG8xTlElM0QlM0QiLCJEU19NRVJDSEFOVF9VUkxPSyI6Imh0dHBzOlwvXC9pbnRyYW5ldC5ncnVwb2RlbHV4ZS5jb21cL2FkbWluXC9yZWRyZWRzeXNcL3VybG9rP2lkZW49ZDFmMjdkNGFlZTBhYzdhNyZkYXRlPU1qQXlNaTB3TXkweE5pQXhOam95TVRvMU5RJTNEJTNEIiwiRFNfTUVSQ0hBTlRfVVJMS08iOiJodHRwczpcL1wvaW50cmFuZXQuZ3J1cG9kZWx1eGUuY29tXC9hZG1pblwvcmVkcmVkc3lzXC91cmxrbz9pZGVuPWQxZjI3ZDRhZWUwYWM3YTcmZGF0ZT1NakF5TWkwd015MHhOaUF4TmpveU1UbzFOUSUzRCUzRCIsIkRTX01FUkNIQU5UX01FUkNIQU5UTkFNRSI6IkVESUNJT05FUyBHUlVQTyBERUxVWEUiLCJEU19NRVJDSEFOVF9USVRVTEFSIjoiTUFSVElORVogSklNRU5FWiBNQVJJQSBMVUlTQSIsIkRTX01FUkNIQU5UX1BST0RVQ1RERVNDUklQVElPTiI6IlBhZ28gY29tcGxldG8ifQ=="/>
            <input type="hidden" name="Ds_Signature" value="jWWSm5xrRjxo0LoD4joa6mrBgw4rMg1t8/2nTWAjgjs="/>
            <input type="hidden" name="Ds_SignatureVersion" value="HMAC_SHA256_V1"/>
            <input type="submit" name="btn_submit" id="btn_submit" value="Send"  >
        </form>
    <script>document.forms["redsys_form"].submit();</script>

我需要通过 POST 方法在我的 iframe 中打开这段代码,但是 src 它无效...在我的控制器中我有这个:

public function store(Request $request)
    {
        $importe = $request->get('importe');
        $nomape = $request->get('nomape');

        $desc = 'Pago completo';
        $importe = str_replace(',', '.', $importe);


        $pago = PagoTarjeta::create([
            'iden'   => bin2hex(random_bytes(8)),
            'nomape' => $nomape,
            'importe'=> $importe,
            'desc'   => $desc,
            'id_empleado' => auth()->user()->id,
            'id_estado' => 1,
            'id_precontrato' => $request->has('_id_precontrato') ? $request->_id_precontrato : null
        ]);

        /*if(!$pago) {
            return redirect()->route('admin.pago_tarjeta.index')->withErrors('pago_tarjeta', 'No se ha podido crear la transacción correctamente..');
        }*/

        $pago->update(['norder' => config('redsys.serie.PT').str_pad($pago->id, 10, 0, STR_PAD_LEFT)]);

        try {
            $key = config('redsys.key');

            Redsys::setAmount($importe);
            Redsys::setOrder($pago->norder);
            Redsys::setMerchantcode(config('redsys.merchantcode')); //Reemplazar por el código que proporciona el banco
            Redsys::setCurrency(config('redsys.currency'));
            Redsys::setTransactiontype('0');
            Redsys::setTerminal('1');
            Redsys::setMethod('T'); //Solo pago con tarjeta, no mostramos iupay
            $esto = Redsys::setNotification(route('redirecciones.notification', [
                'iden' => $pago->iden,
                'date' => base64_encode($pago->created_at)
            ])); //Url de notificacion
            Redsys::setUrlOk(route('admin.redredsys.urlok', [
                'iden' => $pago->iden,
                'date' => base64_encode($pago->created_at)
            ])); //Url OK
            Redsys::setUrlKo(route('admin.redredsys.urlko', [
                'iden' => $pago->iden,
                'date' => base64_encode($pago->created_at)
            ])); //Url KO
            Redsys::setVersion(config('redsys.version'));
            Redsys::setTradeName(config('redsys.tradename'));
            Redsys::setTitular($nomape);
            Redsys::setProductDescription($desc);
            Redsys::setEnviroment('live'); //Entorno test

            $signature = Redsys::generateMerchantSignature($key);
            $merchantSignature = Redsys::setMerchantSignature($signature);

            $form = Redsys::executeRedirection();
        }
        catch(Exception $e){
            echo $e->getMessage();
        }

        return $form;
    }

我需要在我的模式中打开这个网站:

此 img 发送我的表格时 POST 和 PHP 而不是 javascript。

感谢阅读我,抱歉我的英语不好

我解决了我的问题。在我的应用程序中,我正在使用一个库,但我不知道。这个图书馆有一个方法来生成这个表格但不发送它:

$form = Redsys::createForm();

有了这个。我可以控制我所有的过程。

感谢阅读我