/** * 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); } }
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()); } }
/** * @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; }