DBPagopar.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Archivo de configuración de la base de datos de los pedidos
  4. * @author "Pagopar" <desarrollo@pagopar.com>
  5. * @version 1 8/5/2017
  6. */
  7. class DBPagopar extends PDO{
  8. /**
  9. * Setea el atributo PDO con la instancia enviada por parámetro
  10. * @param string $name Nombre de la base de Datos
  11. * @param string $user Nombre del usuario de la BD.
  12. * @param string $pass Contraseña de la BD.
  13. */
  14. public function __construct($name=null,$user=null,$pass=null) {
  15. //Nueva conexión a la base de datos
  16. parent::__construct('mysql:host=localhost;dbname='.$name,$user,$pass,
  17. [PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
  18. //Cración de la tabla si no existe
  19. $this->exec("CREATE TABLE IF NOT EXISTS transactions(
  20. id integer primary key,
  21. typeOrder varchar(120),
  22. totalAmount decimal(15,2),
  23. hash varchar(255),
  24. maxDateForPayment varchar(120),
  25. buyerId integer,
  26. orderItems integer,
  27. description varchar(255),
  28. created datetime default current_timestamp
  29. )");
  30. }
  31. /**
  32. * Registra una nueva transacción en la tabla de transacciones y devuelve el ID del registro.
  33. * @param int $id Id de la transacción
  34. * @param string $typeOrder Tipo de orden,
  35. * @param float $totalAmount Monto total de la compra
  36. * @param string $hash Hash del pedido retornado por el webservice
  37. * @param string $maxDateForPayment Fecha máxima para el pago del pedido (Formato dd:mm:yyyy hh:mm:ss)
  38. * @param string $desc Descripción del pedido
  39. * @return int el número de transacción
  40. */
  41. public function insertTransaction($id,$typeOrder,$totalAmount,$hash,$maxDateForPayment,$desc) {
  42. $this->prepare("INSERT INTO transactions (id,typeOrder,totalAmount,hash,maxDateForPayment,description) VALUES(?,?,?,?,?,?)")
  43. ->execute([$id,$typeOrder,$totalAmount,$hash,$maxDateForPayment,$desc]);
  44. return $this->lastInsertId();
  45. }
  46. /**
  47. * Retorna la transacción que cumpla con los requisitos del where
  48. * @param string $where where statement
  49. * @return array
  50. */
  51. public function selectTransaction($where = '') {
  52. $sth = $this->prepare("SELECT * FROM transactions WHERE {$where} LIMIT 1");
  53. $sth->execute();
  54. $result = $sth->fetchAll();
  55. if (empty($result)) {
  56. return false;
  57. }
  58. return $result[0];
  59. }
  60. /**
  61. * Actualiza una transacción, según los campos enviados por el parámetro.
  62. * @param array key=>value de los campos retornados desde el gateway
  63. * @param array key=>value para el where
  64. */
  65. public function updateTransaction(Array $data, Array $w) {
  66. $set = array();
  67. foreach (array_keys($data) as $key) {
  68. $set[] = "$key = :$key";
  69. }
  70. $where = array();
  71. foreach (array_keys($w) as $key) {
  72. $where[] = "$key = :$key";
  73. }
  74. $this->prepare("UPDATE transactions SET " . implode(",", $set)
  75. . " where " . implode(" and ", $where) )
  76. ->execute(array_merge($data, $w));
  77. }
  78. }