PHP - explicacion php

 
Vista:
sin imagen de perfil
Val: 18
Ha aumentado su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

explicacion php

Publicado por ivan (10 intervenciones) el 27/09/2019 01:41:56
tengo que hacer un proyecto el cual hace se hace un pago con tarjeta (tpv) y despues de validar que el pago esta bien registra en una base de datos y envia un correo de simulacion de compra.

mi duda es como plantearlo? usar la api de redsys y despues que me redirija a una pagina php donde hay varios includes (cada include cumple su mision como registrar en la base de datos clientes,productos y demas y otro que contenga el correo con phpmailer) y de ahi me redirija a una pagina q muestre un mensaje tipo Gracias por su compra?

lo estoy planteando bien? algun consejo? como hacer para que siempre haga el registro en las bds y envie el correo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de santi
Val: 588
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

explicacion php

Publicado por santi (204 intervenciones) el 27/09/2019 19:50:30
Hola,

no se si has hecho las pruebas con redsys pero normalmente después del pago debes facilitar una página "ok" que es la que muestra una vez el pago se ha efectuado correctamente y es aquí (en la página "ok") donde yo añadiría esa info en la base de datos y enviaría el correo al cliente.Pero ten en cuenta que también tienes que crear otra llamada "ko" donde representa que en el proceso de pago por parte de redsys ha habido un error...

No se si es lo que necesitas o me he explicado mal...

Saludos ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 18
Ha aumentado su posición en 6 puestos en PHP (en relación al último mes)
Gráfica de PHP

explicacion php

Publicado por ivan (10 intervenciones) el 28/09/2019 17:44:26
justo estaba leyendo de ello... tengo estas paginas php codigo (solo el codigo importante)

la primera es la que valida y guarda la informacion en variables de secciones (aqui todo esta ok) ahora si escogio metodo tarjeta lo envia al redsys
1
2
3
if (isset($_POST['tarjeta'])) {
       include 'redsys.php';
 }

la segunda es el redsys.php q es la q presta el servicio y me lleva a conexion si sale bien y fail si sale mal en fail solo dice fallo en la compra
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
session_start();
  $amount = $_SESSION['totalcomp'];
 
 
    include "tpv/apiRedsys.php";
    $miObj = new RedsysAPI;
 
 
    $url_tpv = 'https://sis-t.redsys.es:25443/sis/realizarPago';
    $version = "HMAC_SHA256_V1";
    $clave = 'XXXXXXXXXXXXXXXXXXXXXXXXX'; //poner la clave SHA-256 facilitada por el banco 
 
    $name = 'INFO SUPUESTO CLIENTE';
    $code = '111111';
    $terminal = '0';
    $order = date('ymdHis');
    $amount = $amount * 100;
    $currency = '874';
    $consumerlng = '455';
    $transactionType = '8';
    $urlMerchant = 'http://MIPAGINA.es/';
    $urlweb_ok = 'http://MIPAGINA.es/conexion.php';
    $urlweb_ko = 'http://MIPAGINA.es/fail.php';
 
    $miObj->setParameter("DS_MERCHANT_AMOUNT", $amount);
    $miObj->setParameter("DS_MERCHANT_CURRENCY", $currency);
    $miObj->setParameter("DS_MERCHANT_ORDER", $order);
    $miObj->setParameter("DS_MERCHANT_MERCHANTCODE", $code);
    $miObj->setParameter("DS_MERCHANT_TERMINAL", $terminal);
    $miObj->setParameter("DS_MERCHANT_TRANSACTIONTYPE", $transactionType);
    $miObj->setParameter("DS_MERCHANT_MERCHANTURL", $urlMerchant);
    $miObj->setParameter("DS_MERCHANT_URLOK", $urlweb_ok);
    $miObj->setParameter("DS_MERCHANT_URLKO", $urlweb_ko);
    $miObj->setParameter("DS_MERCHANT_MERCHANTNAME", $name);
    $miObj->setParameter("DS_MERCHANT_CONSUMERLANGUAGE", $consumerlng);
 
    $params = $miObj->createMerchantParameters();
    $signature = $miObj->createMerchantSignature($clave);
 
    ?>
 
    <form id="realizarPago" action="<?php echo $url_tpv; ?>" method="post">
        <input type='hidden' name='Ds_SignatureVersion' value='<?php echo $version; ?>'>
        <input type='hidden' name='Ds_MerchantParameters' value='<?php echo $params; ?>'>
        <input type='hidden' name='Ds_Signature' value='<?php echo $signature; ?>'>
    </form>
    <p>Un momento por favor...</p>
    <script>
    $(document).ready(function () {
        $("#realizarPago").submit();
    });
    </script>

si esta bien el pago conexion.php tiene esto y me lleva a una pagina q solo dice gracias por la compra
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
session_start();
 
if (!isset($_SESSION["carrito"])) {
 
 
header('Location: http://www.mipagina.com/index.php');
 
     }else{
 
include 'includes/cliente.php';
 
 
header('Location: http://www.mipagina.com/compra.php');
 
    }
 
 ?>

y bd la tengo asi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
session_start();
$conexion = new mysqli('datos conexion','datos conexion', 'datos conexion', 'datos de conexion');
if ($conexion->connect_errno) {
  die('lo siento hubo un problema con el servidor');
} else {
$total=0;
 if(!empty($_SESSION["carrito"])){
 
     $nombre =  $_SESSION['nombres'];
       $email =  $_SESSION['emails'];
       $telefono = $_SESSION['telefonos'];
       $fechapedido=$_SESSION['fechas'];
       $total=$_SESSION['totalcomp'];
       $fecha_hora_actual = date('Y-m-d H:i:s');
 
$prueba = array($nombres,$emails,$telefonos,$fechapedidos,$fecha_hora_actual);
 
 
$statement = $conexion-> prepare("INSERT INTO cliente(id,nombres,emails,telefonos,fechas,fechapedido) VALUES (?,?,?,?,?,?)");
 
$statement->bind_param('ississ',$id,$nombre,$email,$telefono,$fechapedido,$fecha_hora_actual);
 
$statement->execute();
 
 
 }
}
 
 ?>


lo pruebo en varias partes y va todo perfecto pero ahi algunos casos q no me escribe nada en la bd por que podria ser? tiene algo que ver los dispositivos en q lo pruebe???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar