首页 > 解决方案 > 在 laravel 6 中,从 JS 中获取值并将它们传递给控制器​​并将其保存到数据库?

问题描述

我的问题是关于我目前有一些从 epayco 带来的数据。数据正确到达,但在 js 中,我需要相同的数据才能在 php 中使用它,以便在加载窗口时显示这些数据时将其保存在数据库中。有谁能够帮我?

这是到目前为止的代码:

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
    <title>Respuesta de la Transacción</title>
  </head>
<body> 

  <div class="container">
    <div class="row justify-content-center">
      <div class="col-8 pt-5 pb-5">
        <h2 class="text-center">Respuesta de la Transacción </h2>
        <hr>
        <!--Table-->
        <div class="table-responsive">
          <table class="table table-bordered">
            <tbody>
              <tr>
                <td>Id usuario</td>
                <td id="id_usuario"></td>
              </tr>
               <tr>
                <td>Id promocion</td>
                <td id="id_promocion"></td>
              </tr>
              <tr>
                <td>Referencia</td>
                <td id="referencia"></td>
              </tr>
              <tr>
                <td class="bold">Fecha</td>
                <td id="fecha" class=""></td>
              </tr>
              <tr>
                <td>Respuesta</td>
                <td id="respuesta"></td>
              </tr>
              <tr>
                <td>Motivo</td>
                <td id="motivo"></td>
              </tr>
              <tr>
                <td class="bold">Banco</td>
                <td class="" id="banco">
              </tr>
              <tr>
                <td class="bold">Recibo</td>
                <td id="recibo"></td>
              </tr>
              <tr>
                <td class="bold">Total</td>
                <td class="" id="total">
                </td>
              </tr>
            </tbody>
          </table>
        </div>
        <!--/Table-->
        <a class="btn btn-success btn-block mb-5" href="/" role="button">Regresar a la pagina de inicio de Vitur</a>

        <div class="row">
          <div class="col-8">
            <img src="https://369969691f476073508a-60bf0867add971908d4f26a64519c2aa.ssl.cf5.rackcdn.com/btns/epayco/pagos_procesados_por_epayco_260px.png" class="img-fluid"> 
          </div>
          <div class="col-4">
            <img src="https://369969691f476073508a-60bf0867add971908d4f26a64519c2aa.ssl.cf5.rackcdn.com/btns/epayco/credibancologo.png"
          height="40px" class="img-fluid">
          </div>
        </div>

      </div>
    </div>
  </div>

  <!--jQuery-->
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.js"></script>
  <script>
    function getQueryParam(param) {
      location.search.substr(1)
        .split("&")
        .some(function(item) { // returns first occurence and stops
          return item.split("=")[0] == param && (param = item.split("=")[1])
        })
      return param
    }
    $(document).ready(function() {
      //llave publica del comercio
      //Referencia de payco que viene por url
      var ref_payco = getQueryParam('ref_payco');
      //Url Rest Metodo get, se pasa la llave y la ref_payco como paremetro
      var urlapp = "https://secure.epayco.co/validation/v1/reference/" + ref_payco;
      $.get(urlapp, function(response) {
        if (response.success) {
          if (response.data.x_cod_response == 1) {
            //Codigo personalizado
            alert("Transaccion Aprobada");
            console.log('transacción aceptada');
          }
          //Transaccion Rechazada
          if (response.data.x_cod_response == 2) {
            console.log('transacción rechazada');
          }
          //Transaccion Pendiente
          if (response.data.x_cod_response == 3) {
            console.log('transacción pendiente');
          }
          //Transaccion Fallida
          if (response.data.x_cod_response == 4) {
            console.log('transacción fallida');
          }
          $('#id_usuario').html(response.data.x_extra1);
          $('#id_promocion').html(response.data.x_extra2);
          $('#fecha').html(response.data.x_transaction_date);
          $('#respuesta').html(response.data.x_response);
          $('#referencia').text(response.data.x_id_invoice);
          $('#motivo').text(response.data.x_response_reason_text);
          $('#recibo').text(response.data.x_transaction_id);
          $('#banco').text(response.data.x_bank_name);
          $('#autorizacion').text(response.data.x_approval_code);
          $('#total').text(response.data.x_amount + ' ' + response.data.x_currency_code);
        } else {
          alert("Error consultando la información");
        }
      });
    });
  </script>
  <!--php-->
  @php/*
    $buy= new App\Buy;
    $buy->user_id = $_REQUEST['id_usuario'];
    $buy->promo_id = $_REQUEST['id_promocion'];
    $buy->save();
  @endphp
</body>

</html>

标签: javascriptphpdatabaselaravel-6

解决方案


您可以在 laravel 应用程序中创建一个端点,并在 epayco 中获取数据后执行 ajax 请求

$(document).ready(function() {
      //llave publica del comercio
      //Referencia de payco que viene por url
      var ref_payco = getQueryParam('ref_payco');
      //Url Rest Metodo get, se pasa la llave y la ref_payco como paremetro
      var urlapp = "https://secure.epayco.co/validation/v1/reference/" + ref_payco;
$.get(urlapp, function(response) {
    if (response.success) {
        $.post( "your/endpoint", response.data );
    }
});
/////
///
//

推荐阅读