コード例 #1
0
 /**
  * Evalua que el cliente pueda autentificarse correctamente
  *
  * @param Client $client
  * @return \ComproPago\MgPayment\Model\Api\CompropagoSdk\Models\EvalAuthInfo
  * @throws \Exception
  */
 public static function evalAuth(Client $client)
 {
     $response = Rest::get($client->getUri() . "users/auth/", $client->getFullAuth());
     $info = Factory::evalAuthInfo($response);
     switch ($info->code) {
         case '200':
             return $info;
         default:
             throw new \Exception("CODE {$info->code}: " . $info->message, $info->code);
     }
 }
コード例 #2
0
 public function procesWebhook($json = null)
 {
     /**
      * Se valida el request y se transforma con la cadena a un objeto de tipo CpOrderInfo con el Factory
      */
     if (empty($json) || !($resp_webhook = Factory::cpOrderInfo($json))) {
         die('Tipo de Request no Valido');
     }
     /**
      * Gurdamos la informacion necesaria para el Cliente
      * las llaves de compropago y el modo de ejecucion de la tienda
      */
     $publickey = $this->model->getPublicKey();
     $privatekey = $this->model->getPrivateKey();
     $live = $this->model->getLiveMode();
     // si es modo pruebas cambiar por 'false'
     /**
      * Se valida que las llaves no esten vacias (No es obligatorio pero si recomendado)
      */
     //keys set?
     if (empty($publickey) || empty($privatekey)) {
         die("Se requieren las llaves de compropago");
     }
     try {
         /**
          * Se incializa el cliente
          */
         $client = new Client($publickey, $privatekey, $live);
         /**
          * Validamos que nuestro cliente pueda procesar informacion
          */
         Validations::validateGateway($client);
     } catch (\Throwable $e) {
         //something went wrong at sdk lvl
         die($e->getMessage());
     }
     /**
      * Verificamos si recivimos una peticion de prueba
      */
     if ($resp_webhook->getId() == "ch_00000-000-0000-000000") {
         die("Probando el WebHook?, <b>Ruta correcta.</b>");
     }
     try {
         /**
          * Verificamos la informacion del Webhook recivido
          */
         $response = $client->api->verifyOrder($resp_webhook->getId());
         /**
          * Comprovamos que la verificacion fue exitosa
          */
         if ($response->getType() == 'error') {
             die('Error procesando el número de orden');
         }
         $this->orderManager->loadByIncrementId($response->getOrderInfo()->getOrderId());
         /**
          * Generamos las rutinas correspondientes para cada uno de los casos posible del webhook
          */
         switch ($response->getType()) {
             case 'charge.success':
                 $this->orderManager->setState('processing');
                 break;
             case 'charge.pending':
                 $this->orderManager->setState('pending_payment');
                 break;
             case 'charge.declined':
                 $this->orderManager->setState('canceled');
                 break;
             case 'charge.expired':
                 $this->orderManager->setState('canceled');
                 break;
             case 'charge.deleted':
                 $this->orderManager->setState('canceled');
                 break;
             case 'charge.canceled':
                 $this->orderManager->setState('canceled');
                 break;
             default:
                 die('Invalid Response type');
         }
     } catch (\Exception $e) {
         //something went wrong at sdk lvl
         die($e->getMessage());
     }
 }
コード例 #3
0
 /**
  * @param $webhookId
  * @return Models\Webhook
  * @throws \Exception
  */
 public function deleteWebhook($webhookId)
 {
     Validations::validateGateway($this->client);
     $response = Rest::delete($this->client->getUri() . "webhooks/stores/{$webhookId}/", $this->client->getFullAuth(), null, $this->headers);
     $obj = Factory::webhook($response);
     return $obj;
 }