ConsultPagopar.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. /**
  3. * Archivo SDK de las funciones de consulta de Pagopar
  4. * @author "Pagopar" <desarrollo@pagopar.com>
  5. * @version 1 27/4/2017
  6. */
  7. class ConsultPagopar{
  8. //URLs de configuración
  9. const URL_BASE = 'https://api.pagopar.com/api/';
  10. const URL_CATEGORIAS = self::URL_BASE.'categorias/1.1/traer';
  11. const URL_CIUDADES = self::URL_BASE.'ciudades/1.1/traer';
  12. //Tipos de Tokens generados
  13. const TOKEN_TIPO_CIUDAD = 'CIUDADES';
  14. const TOKEN_TIPO_CATEGORIA = 'CATEGORIAS';
  15. public $privateKey = null;
  16. public $publicKey = null;
  17. /**
  18. * Constructor de la clase
  19. */
  20. public function __construct() {
  21. }
  22. /**
  23. * Invoca a la URL de acuerdo a los parámetros
  24. * @param array $args Parámetros
  25. * @param string $url Url a invocar
  26. * @return string Respuesta en formato JSON
  27. */
  28. private function runCurl($args, $url){
  29. $args = json_encode($args);
  30. $ch = curl_init();
  31. $headers= array('Accept: application/json','Content-Type: application/json');
  32. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  33. curl_setopt($ch, CURLOPT_URL, $url);
  34. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  35. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  36. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  37. curl_setopt($ch, CURLOPT_POST, true);
  38. curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
  39. $response = curl_exec($ch);
  40. $error = curl_error($ch);
  41. $info = curl_getinfo($ch);
  42. curl_close($ch);
  43. return $response;
  44. }
  45. /**
  46. * Genera un Token para el pedido
  47. * @param string $typeOfToken Tipo de token generado
  48. * @return string Token generado
  49. */
  50. private function generateToken($typeOfToken){
  51. return sha1($this->privateKey.$typeOfToken);
  52. }
  53. /**
  54. * Obtiene las ciudades de los productos
  55. * @return array $resultado Array de objetos con los atributos de las ciudades o,
  56. * en caso de error, un Array con resultado "Sin datos"
  57. */
  58. public function getCities(){
  59. $token = $this->generateToken(self::TOKEN_TIPO_CIUDAD);
  60. $args = ['token'=>$token,'token_publico'=>$this->publicKey];
  61. $response = $this->runCurl($args, self::URL_CIUDADES);
  62. return json_decode($response);
  63. }
  64. /**
  65. * Obtiene las categorías de los productos
  66. * @return array $resultado Array de objetos con los atributos de las categorías o,
  67. * en caso de error, un Array con resultado "Sin datos"
  68. */
  69. public function getProductCategories(){
  70. $token = $this->generateToken(self::TOKEN_TIPO_CATEGORIA);
  71. $args = ['token'=>$token,'token_publico'=>$this->publicKey];
  72. $response = $this->runCurl($args, self::URL_CATEGORIAS);
  73. $arrayResponse = json_decode($response);
  74. return $arrayResponse->resultado;
  75. }
  76. }