From 784d28b763ed1b9ef4cf87404129fc13f019e906 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 14:20:48 -0300 Subject: [PATCH 01/28] feat: create error page --- resources/views/error-page.blade.php | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 resources/views/error-page.blade.php diff --git a/resources/views/error-page.blade.php b/resources/views/error-page.blade.php new file mode 100644 index 0000000..dc3f7f3 --- /dev/null +++ b/resources/views/error-page.blade.php @@ -0,0 +1,44 @@ + + + + + + + Transbank Developers + @vite(['resources/css/app.css', 'resources/js/app.js']) + + + +
+ @include('partials.header') + +
+ + +

¡Ha ocurrido un error!

+ +

Lo sentimos, pero se ha producido un error durante la integración con el SDK. El SDK + devuelve errores + de + tipo + "TransbankError". Si estás viendo otro tipo de error, es posible que el proyecto de ejemplo tenga + algún + problema. + +

+

Si este error persiste y crees que es necesario reportarlo, por favor, hazlo en nuestro + repositorio + de + GitHub. +

+ + + + Volver +
+ @include('partials.footer') +
+ @stack('scripts') + + + From 7d048031e222f13cbb2fbe67bfd58342290e6772 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 14:21:18 -0300 Subject: [PATCH 02/28] feat: create delete page for oneclick --- .../views/oneclick-mall/delete.blade.php | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 resources/views/oneclick-mall/delete.blade.php diff --git a/resources/views/oneclick-mall/delete.blade.php b/resources/views/oneclick-mall/delete.blade.php new file mode 100644 index 0000000..0a1cb25 --- /dev/null +++ b/resources/views/oneclick-mall/delete.blade.php @@ -0,0 +1,39 @@ +@php + $navigation = ['delete' => 'Borrar usuario']; +@endphp + + +

Oneclick Mall - Borrar usuario

+

+ En este paso fundamental, procederemos a eliminar la inscripción del usuario y su medio de pago. +

+ +

Paso 1: Petición

+

+ Para llevar a cabo la eliminación, necesitas el "userName" (Nombre de Usuario) y el "tbkUser". Realiza la + llamada a Oneclick.MallInscription utilizando el siguiente código: +

+ + $resp = $mallInscription->delete($tbkUser, $userName); + + +

Paso 2: Respuesta

+

+ En caso de éxito, Transbank responderá con un status code 204 (No Content), y el SDK no retornará ninguna + respuesta adicional. La eliminación de la inscripción se ha realizado de manera exitosa. +

+ +

+ En el caso de que no se encuentre el "userName" o el "tbkUser", Transbank responderá con un status code 404 (Not + Found), y el SDK retornará una excepción para informar sobre la situación. +

+ +

+ Este proceso garantiza una eliminación segura y eficiente de la inscripción del usuario y su medio de pago + asociado. ¡Gracias por confiar en Transbank para tus operaciones seguras! Si tienes alguna pregunta, estamos + aquí para ayudarte +

+ + + +
From 17aa158ed67eddbc17969f45845b4768dc8e7b8e Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 16:58:28 -0300 Subject: [PATCH 03/28] feat: create oneclikmallcontroller --- .../Controllers/OneclickMallController.php | 132 ++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 app/Http/Controllers/OneclickMallController.php diff --git a/app/Http/Controllers/OneclickMallController.php b/app/Http/Controllers/OneclickMallController.php new file mode 100644 index 0000000..0511271 --- /dev/null +++ b/app/Http/Controllers/OneclickMallController.php @@ -0,0 +1,132 @@ +mallInscription = new MallInscription($option); + $this->mallTransaction = new MallTransaction($option); + } + + public function startInscription() + { + $startTx = [ + "username" => "User-" . random_int(1, 10000), + "email" => "user." . random_int(1, 10000) . "@example.cl", + "response_url" => url("/") . "/oneclick-mall/finish" + ]; + + session(['username' => $startTx["username"]]); + $resp = $this->mallInscription->start($startTx["username"], $startTx["email"], $startTx["response_url"]); + return view('oneclick-mall.start', ["request" => $startTx, "resp" => $resp]); + } + + public function finishInscription(Request $request) + { + try { + //flujo error + if ($request->exists("TBK_ORDEN_COMPRA")) { + return view('error-page'); + } + + $token = $request["TBK_TOKEN"]; + $userName = session('username', ''); + $resp = $this->mallInscription->finish($token); + + + if ($resp->responseCode == -1) { + return view('oneclick-mall.rejected', ["resp" => $resp, "token" => $token]); + } + + if ($resp->responseCode == -96) { + return view('oneclick-mall.timeout', ["resp" => $resp]); + } + + $table = [ + "username" => $userName, + "tbk_user" => $resp->tbkUser, + ]; + return view('oneclick-mall.finish', ["resp" => $resp, "token" => $token, "table" => $table]); + } catch (\Exception $e) { + $error = ["msg" => $e->getMessage(), "code" => $e->getCode()]; + return view('error-page', ["error" => $error]); + } + } + public function deleteInscription(Request $request) + { + try { + $tbkUser = $request["tbkUser"]; + $userName = $request["userName"]; + $resp = $this->mallInscription->delete($tbkUser, $userName); + return view('oneclick-mall.delete', ["resp" => $resp]); + } catch (\Exception $e) { + $error = ["msg" => $e->getMessage(), "code" => $e->getCode()]; + return view('error-page', ["error" => $error]); + } + } + + public function authorizeMall(Request $request) + { + try { + $tbkUser = $request["tbkUser"]; + $userName = $request["userName"]; + $buyOrder = "O-" . random_int(1000, 9999); + $details = [ + [ + "commerce_code" => "597055555542", + "buy_order" => "O1-" . random_int(1000, 9999), + "amount" => 1693, + "installments_number" => 1 + ], + [ + "commerce_code" => "597055555543", + "buy_order" => "O2-" . random_int(1000, 9999), + "amount" => 1960, + "installments_number" => 1 + ] + ]; + + $resp = $this->mallTransaction->authorize($userName, $tbkUser, $buyOrder, $details); + return view('oneclick-mall.authorize', ["resp" => $resp]); + } catch (\Exception $e) { + $error = ["msg" => $e->getMessage(), "code" => $e->getCode()]; + return view('error-page', ["error" => $error]); + } + } + + public function status(Request $request) + { + $buyOrder = $request["buyOrder"]; + + $resp = $this->mallTransaction->status($buyOrder); + + return view('oneclick-mall.status', ["resp" => $resp]); + } + + public function refund(Request $request) + { + $req = $request->except('_token'); + $buyOrder = $req["buyOrder"]; + $childCommerceCode = $req["childCommerceCode"]; + $childBuyOrder = $req["childBuyOrder"]; + $amount = $req["amount"]; + + $resp = $this->mallTransaction->refund($buyOrder, $childCommerceCode, $childBuyOrder, $amount); + + return view('oneclick-mall.refund', ["resp" => $resp]); + } +} From 3d72d41bd73bfe6c57384efc5fa8d8f07860d8c9 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 16:59:03 -0300 Subject: [PATCH 04/28] feat: add css for multile line fields in card --- resources/css/app.css | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/resources/css/app.css b/resources/css/app.css index 6f0b0fb..7779d99 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -203,6 +203,9 @@ code { .mb-32 { margin-bottom: 32px; } +.mb-16 { + margin-bottom: 16px; +} .tbk-link { color: var(--tbk-red); @@ -658,12 +661,17 @@ code { line-height: 24px; letter-spacing: 0.25px; } +/* Error page */ +.layout-error { + margin: 80px 156px; +} /* homepage */ .layout-home { display: grid; grid-template-rows: auto 1fr auto; + height: 100vh; } .tbk-home-container { @@ -757,6 +765,24 @@ code { background-color: var(--tbk-grey-4); } } +.card-multi-field { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 32px; +} + +.divided-card { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 24px; +} + +.card-right-container { + display: flex; + flex-direction: column; + align-items: end; + gap: 16px; +} @media (max-width: 1439.98px) { .body-container { @@ -767,6 +793,12 @@ code { } } +@media (max-width: 1023.98px) { + .card-multi-field { + grid-template-columns: 1fr; + } +} + @media (max-width: 576px) { .tbk-table { display: none; From f6b550a44e7261d30af7f525ed34a90d5d2e1890 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 16:59:31 -0300 Subject: [PATCH 05/28] refactor: use correct url dor oneclick mall --- resources/views/home.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index 2d9e624..46d80ff 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -52,7 +52,7 @@ class="card-info-image" /> para el tarjetahabiente, una vez que este haya registrado su tarjeta en el comercio.

- + Ver ejemplos y modalidades From 4c56233e7d044eb67d07bbe7e984ff2fbd05af22 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 17:00:40 -0300 Subject: [PATCH 06/28] refactor: use correct url for oneclick in menu --- resources/views/components/menu.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/components/menu.blade.php b/resources/views/components/menu.blade.php index 23cd535..0f6256f 100644 --- a/resources/views/components/menu.blade.php +++ b/resources/views/components/menu.blade.php @@ -16,7 +16,7 @@
Webpay Oneclick @foreach ([ - 'Oneclick Mall' => route('webpay.create'), + 'Oneclick Mall' => route('oneclick-mall.start'), 'Oneclick Mall Diferido' => route('webpay.create'), ] as $menuItemName => $url) From caea63fbe45bf972ec985f3631b86b2510137b1a Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 17:00:55 -0300 Subject: [PATCH 07/28] feat: create authorize page for oneclick mall --- .../views/oneclick-mall/authorize.blade.php | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 resources/views/oneclick-mall/authorize.blade.php diff --git a/resources/views/oneclick-mall/authorize.blade.php b/resources/views/oneclick-mall/authorize.blade.php new file mode 100644 index 0000000..149b37d --- /dev/null +++ b/resources/views/oneclick-mall/authorize.blade.php @@ -0,0 +1,98 @@ +@php + $navigation = ['auth' => 'Autorizar pago', 'other' => 'Consultas']; +@endphp + + +

Oneclick Mall - Autorizar pago

+

+ En este primer paso, procederemos a autorizar una transacción en la tarjeta que ha sido previamente inscrita. +

+ +

Paso 1: Peticion

+

+ Ahora que contamos con el "username" y el "tbk_user" obtenidos durante la inscripción, estamos listos para + autorizar transacciones en la tarjeta inscrita. +

+ + $details = [ + -[ + ---"child_commerce_code", + ---"child_buy_order", + ---"amount", + ---"installments_number" + -], + -[ + ---"child_commerce_code2", + ---"child_buy_order2", + ---"amount", + ---"installments_number", + -] + ]; + + $resp = $mallTransaction->authorize($userName, $tbkUser, $buyOrder, $details); + + +

Paso 2: Respuesta

+

+ Una vez que la transacción ha sido autorizada, recibirás los siguientes datos de respuesta: +

+ + + +

¡Listo!

+

+ Con la autorización exitosa, puedes mostrar al usuario una página de éxito de la transacción, proporcionándole + la confirmación de que el proceso se ha completado con éxito. +

+ +

Otras utilidades

+

Con la inscripción exitosa se pueden autorizar transacciones.

+ +

Autorizar una transacción

+

+ Después de autorizar la transacción, considera las siguientes utilidades adicionales: +

+
    +
  • + Reembolsar: Puedes reversar o anular el pago según ciertas condiciones + comerciales. +
  • +
  • + Consultar Estado: Hasta 7 días después de la transacción, podrás consultar el + estado de la transacción. +
  • +
+ + @foreach ($resp->details as $detail) +
+ @csrf +
+
+
+ + buyOrder }}> +
+
+ + commerceCode }}> +
+
+ + buyOrder }}> +
+
+ + amount }}> +
+
+ +
+
+ @endforeach +
$resp->buyOrder]) }} + class="tbk-button primary mb-32">CONSULTAR ESTADO + + From 49a3c464eaf6e10c04ccc1728a1e87681495d7ba Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 17:01:02 -0300 Subject: [PATCH 08/28] feat: create finish page for oneclick mall --- .../views/oneclick-mall/finish.blade.php | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 resources/views/oneclick-mall/finish.blade.php diff --git a/resources/views/oneclick-mall/finish.blade.php b/resources/views/oneclick-mall/finish.blade.php new file mode 100644 index 0000000..c0ae6e8 --- /dev/null +++ b/resources/views/oneclick-mall/finish.blade.php @@ -0,0 +1,62 @@ +@php + $navigation = ['finish' => 'Finalizar inscripción', 'authorize' => 'Autorizar una transacción']; +@endphp + + +

Oneclick Mall - Finalizar inscripción

+

+ En esta fase, completaremos el proceso de inscripción, permitiéndonos posteriormente realizar cargos a la + tarjeta que el tarjetahabiente haya inscrito. +

+ +

Paso 1: Datos recibidos

+

+ Después de finalizar el flujo en el formulario de inscripción, recibirás un GET con la siguiente información: +

+ + +

Paso 2: Petición de autorización

+

+ Utiliza el token recibido para finalizar la Inscripción mediante una nueva llamada a Oneclick. +

+ + + $resp = $mallInscription->finish($token); + + +

Paso 3: Respuesta

+

+ Transbank responderá con información crucial. Guarda estos detalles, ya que serán necesarios para autorizar + transacciones futuras. +

+ + + +

¡La tarjeta ya está inscrita!

+

Con la inscripción exitosa se pueden autorizar transacciones.

+ +

Autorizar una transacción

+

+ Asegúrate de guardar los datos de la respuesta obtenidos durante la inscripción. Estos serán esenciales para + llevar a cabo transacciones de manera efectiva. +

+ + + +
+ + +
+ +
From d1c2c567d996c9580b88e3005a21bf39a7d2e152 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 17:01:08 -0300 Subject: [PATCH 09/28] feat: create refund page for oneclick mall --- .../views/oneclick-mall/refund.blade.php | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 resources/views/oneclick-mall/refund.blade.php diff --git a/resources/views/oneclick-mall/refund.blade.php b/resources/views/oneclick-mall/refund.blade.php new file mode 100644 index 0000000..9362801 --- /dev/null +++ b/resources/views/oneclick-mall/refund.blade.php @@ -0,0 +1,44 @@ +@php + $navigation = ['refund' => 'Reembolsar']; +@endphp + + + +

Oneclick Mall - Reembolsar

+

En esta etapa, tienes la opción de solicitar el reembolso del monto al titular de la tarjeta. + Dependiendo del monto y el tiempo transcurrido desde la transacción, este proceso podría resultar en una + Reversa, Anulación o Anulación Parcial. +

+ +

Paso 1 - Petición:

+

+ Para realizar el reembolso, necesitarás la siguiente información: +

+ +
    +
  • Orden de compra de la transacción.
  • +
  • Monto que deseas reversar.
  • +
  • Código de comercio de la tienda hijo.
  • +
  • Orden de compra del detalle de la transacción.
  • +
+ +

+ Ten en cuenta que si anulas el monto total, puede ser una Reversa o Anulación, dependiendo de ciertas + condiciones, o una Anulación parcial si el monto es menor al total. No es posible realizar Anulaciones ni + Anulaciones parciales en tarjetas que no sean de crédito. Tampoco es posible realizar reembolsos de compras en + cuotas. +

+ + + $resp = $mallTransaction->refund($buyOrder, $childCommerceCode, $childBuyOrder, $amount); + + +

Paso 2 - Respuesta:

+

+ Transbank responderá con el resultado de la reversa o anulación. Analiza esta respuesta para confirmar que el + reembolso se ha procesado correctamente. +

+ + + +
From c10737630cc6a87f2da44845ca9c25dfd8f034d7 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 17:01:36 -0300 Subject: [PATCH 10/28] feat: create error rejected page for oneclick mall --- .../views/oneclick-mall/rejected.blade.php | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 resources/views/oneclick-mall/rejected.blade.php diff --git a/resources/views/oneclick-mall/rejected.blade.php b/resources/views/oneclick-mall/rejected.blade.php new file mode 100644 index 0000000..0ab4c43 --- /dev/null +++ b/resources/views/oneclick-mall/rejected.blade.php @@ -0,0 +1,37 @@ +@php + $navigation = ['rejected' => 'Rechazo Bancario', 'example' => 'Ejemplo']; +@endphp + + +

Oneclick Mall - Rechazo Bancario

+

+ En esta fase, pueden surgir inconvenientes, ya sea con el titular de la tarjeta o a nivel bancario, lo que + resulta en el estado final de la transacción siendo marcado como "FAILED". +

+ +

Paso 1: Datos recibidos

+

+ Después de finalizar el flujo en el formulario de inscripción, recibirás un GET con la siguiente información: +

+ + +

Paso 2: Petición de autorización

+

+ Utiliza el token recibido para finalizar la Inscripción mediante una nueva llamada a Oneclick. +

+ + + $resp = $mallInscription->finish($token); + + +

Paso 3: Respuesta

+

+ Transbank responderá con la siguiente información. +

+ + + + +

En este caso la inscripción fue rechaza, tendras que repetir el proceso

+ +
From 491dc33203cb4484c66ddf8f6b07e590cc1331da Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 17:01:48 -0300 Subject: [PATCH 11/28] feat: create start inscription page for oneclick mall --- resources/views/oneclick-mall/start.blade.php | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 resources/views/oneclick-mall/start.blade.php diff --git a/resources/views/oneclick-mall/start.blade.php b/resources/views/oneclick-mall/start.blade.php new file mode 100644 index 0000000..c2a26f5 --- /dev/null +++ b/resources/views/oneclick-mall/start.blade.php @@ -0,0 +1,77 @@ +@php + $navigation = ['create' => 'Crear transacción', 'example' => 'Ejemplo']; +@endphp + + +

Oneclick Mall - Creación de transacción

+

+ En esta etapa comienza el proceso de inscripción del medio de pago. Este paso inicial es fundamental, para + dirigir al tarjetahabiente al formulario de inscripción. +

+ +

Paso 1: Petición

+
    +
  • Comienza por importar la librería Oneclick en tu proyecto.
  • +
  • Después podrás iniciar una inscripción.
  • +
+ + use Illuminate\Http\Request; + use Transbank\Webpay\Options; + use Transbank\Webpay\Oneclick\MallInscription; + use Transbank\Webpay\Oneclick\MallTransaction; + //configuración de la transacción + $option = new Options(self::API_KEY, self::COMMERCE_CODE, Options::ENVIRONMENT_INTEGRATION); + $mallInscription = new MallInscription($option); + $mallTransaction = new MallTransaction($option); + $resp = $mallInscription->start($startTx["userName"], $startTx["email"], $startTx["responseUrl"]); + + +

Paso 2: Respuesta

+

+ Una vez que hayas iniciado la inscripción, aquí encontrarás los datos de respuesta generados por el proceso. +

+ + + +

Paso 3: Creación del formulario

+

+ Utiliza estos datos de respuesta para generar y presentar un formulario de pago al Tarjetahabiente. + Este formulario será la interfaz a través de la cual el usuario realizará su transacción. +

+ + + form action="https://webpay3gint.transbank.cl/webpayserver/initTransaction" method="POST"> + input type="hidden" name="token_ws" value="{{ $resp->token }}" /> + input type="submit" value="Pagar" /> + form> + + +

Ejemplo

+

+ Para llevar a cabo una transacción de compra en nuestro sistema, primero debemos crear la + transacción. Utilizaremos los siguientes datos para configurar la transacción: +

+ +
+ +
+ +

+ Por último, con la respuesta del servicio que confirma la creación de la transacción, procedemos + a crear el formulario de pago. Para fines de este ejemplo, haremos visible el campo "token_ws", el cual es + esencial para completar el proceso de pago de manera exitosa. +

+ +
urlWebpay }} method="POST"> +
+ Formulario de redirección +
+ + token }} required> +
+ +
+
+
From 9965507c04d057c3a1b981001bfe0365c09aef51 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 17:01:54 -0300 Subject: [PATCH 12/28] feat: create status page for oneclick mall --- .../views/oneclick-mall/status.blade.php | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 resources/views/oneclick-mall/status.blade.php diff --git a/resources/views/oneclick-mall/status.blade.php b/resources/views/oneclick-mall/status.blade.php new file mode 100644 index 0000000..74bc90d --- /dev/null +++ b/resources/views/oneclick-mall/status.blade.php @@ -0,0 +1,30 @@ +@php + $navigation = ['state' => 'Consultar estado']; +@endphp + + + +

Oneclick Mall - Consultar estado de transacción

+

Puedes solicitar el estado de una transacción hasta 7 días después de su realización. No hay límite + de solicitudes de este tipo durante ese período. Sin embargo, una vez pasados los 7 días, ya no podrás revisar + su estado. +

+ +

Paso 1 - Petición:

+

+ Para realizar la consulta, necesitarás el "buyOrder" de la transacción de interés. Utiliza este identificador + para efectuar una llamada a Oneclick.MallTransaction. +

+ + $resp = $mallTransaction->status($buyOrder); + + +

Paso 2: Respuesta

+

+ Transbank responderá con la siguiente información. Asegúrate de guardar esta respuesta, y la única validación + necesaria es que el campo "response_code" sea igual a cero. +

+ + + +
From 9979f99829c6b6995c92e7410f9ebfc2afc4588a Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 17:02:03 -0300 Subject: [PATCH 13/28] feat: create timeout page for oneclick mall --- .../views/oneclick-mall/timeout.blade.php | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 resources/views/oneclick-mall/timeout.blade.php diff --git a/resources/views/oneclick-mall/timeout.blade.php b/resources/views/oneclick-mall/timeout.blade.php new file mode 100644 index 0000000..fcdc02f --- /dev/null +++ b/resources/views/oneclick-mall/timeout.blade.php @@ -0,0 +1,21 @@ +@php + $navigation = ['timeout' => 'Time Out']; +@endphp + + +

Oneclick Mall - Time out

+

+ Paso 1: Petición + Cuando una transacción expira debido a un timeout, es crucial gestionar este escenario de manera adecuada para + garantizar la transparencia y la experiencia del usuario, para la prueba en producción es de 10 minutos. +

+ +

Datos Recibidos:

+

+ Después de 10 minutos en el que no se haya recibido ninguna acción o interacción del usuario, recibirás un POST + con la siguiente información:

+ + + + +
From 08910ab995b97a6d3deaf0057f25aaf5ae2a7ef3 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 17:03:04 -0300 Subject: [PATCH 14/28] feat: add protection for window.opener --- resources/views/partials/channels.blade.php | 4 ++-- resources/views/partials/header.blade.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/views/partials/channels.blade.php b/resources/views/partials/channels.blade.php index 3561131..91f8b35 100644 --- a/resources/views/partials/channels.blade.php +++ b/resources/views/partials/channels.blade.php @@ -5,7 +5,7 @@
Escríbenos por slack
- + slack Únete a nuestra comunidad de integradores. Nuestro equipo está ahí para @@ -16,7 +16,7 @@
Envíanos un mensaje
- + outlook Necesitas resolver algún tipo de incidencia, contáctanos a través de correo diff --git a/resources/views/partials/header.blade.php b/resources/views/partials/header.blade.php index df06925..3eeb8d2 100644 --- a/resources/views/partials/header.blade.php +++ b/resources/views/partials/header.blade.php @@ -3,8 +3,8 @@
From 22ee5d4d9ee520de266ed81f807b2f8fb413fab9 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 17:03:26 -0300 Subject: [PATCH 15/28] fix: use correct tag --- resources/views/webpay-deferred/create.blade.php | 2 +- resources/views/webpay-mall-deferred/create.blade.php | 2 +- resources/views/webpay-mall/create.blade.php | 2 +- resources/views/webpay/create.blade.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/views/webpay-deferred/create.blade.php b/resources/views/webpay-deferred/create.blade.php index f38f8c4..5a48640 100644 --- a/resources/views/webpay-deferred/create.blade.php +++ b/resources/views/webpay-deferred/create.blade.php @@ -57,7 +57,7 @@ esencial para completar el proceso de pago de manera exitosa.

-
url }} action="POST"> + url }} method="POST">
Formulario de redirección
diff --git a/resources/views/webpay-mall-deferred/create.blade.php b/resources/views/webpay-mall-deferred/create.blade.php index 82be633..5a59a24 100644 --- a/resources/views/webpay-mall-deferred/create.blade.php +++ b/resources/views/webpay-mall-deferred/create.blade.php @@ -77,7 +77,7 @@ esencial para completar el proceso de pago de manera exitosa.

- url }} action="POST"> + url }} method="POST">
Formulario de redirección
diff --git a/resources/views/webpay-mall/create.blade.php b/resources/views/webpay-mall/create.blade.php index ea7e511..f77c5a7 100644 --- a/resources/views/webpay-mall/create.blade.php +++ b/resources/views/webpay-mall/create.blade.php @@ -72,7 +72,7 @@ esencial para completar el proceso de pago de manera exitosa.

- url }} action="POST"> + url }} method="POST">
Formulario de redirección
diff --git a/resources/views/webpay/create.blade.php b/resources/views/webpay/create.blade.php index a0b00ac..7883cd9 100644 --- a/resources/views/webpay/create.blade.php +++ b/resources/views/webpay/create.blade.php @@ -56,7 +56,7 @@ esencial para completar el proceso de pago de manera exitosa.

- url }} action="POST"> + url }} method="POST">
Formulario de redirección
From 15b372b08b9e3d5abdecbd1de58c2378652a1a40 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Thu, 22 Aug 2024 17:03:40 -0300 Subject: [PATCH 16/28] feat: create routes for oneclick mall --- routes/web.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/routes/web.php b/routes/web.php index 54bfa44..b05a553 100644 --- a/routes/web.php +++ b/routes/web.php @@ -4,6 +4,7 @@ use App\Http\Controllers\WebpayPlusMallController; use App\Http\Controllers\WebpayPlusDeferredController; use App\Http\Controllers\WebpayPlusMallDeferredController; +use App\Http\Controllers\OneclickMallController; use Illuminate\Support\Facades\Route; @@ -33,6 +34,7 @@ Route::post('/refund', [WebpayPlusDeferredController::class, 'refund'])->name("refund"); Route::get('/status', [WebpayPlusDeferredController::class, 'status'])->name("status"); }); + Route::prefix('webpay-mall-diferido')->name("webpay-mall-deferred.")->group(function () { Route::get('/create', [WebpayPlusMallDeferredController::class, 'create'])->name("create"); Route::get('/commit', [WebpayPlusMallDeferredController::class, 'commit'])->name("commit"); @@ -40,3 +42,12 @@ Route::post('/refund', [WebpayPlusMallDeferredController::class, 'refund'])->name("refund"); Route::get('/status', [WebpayPlusMallDeferredController::class, 'status'])->name("status"); }); + +Route::prefix('oneclick-mall')->name("oneclick-mall.")->group(function () { + Route::get('/start', [OneclickMallController::class, 'startInscription'])->name("start"); + Route::get('/finish', [OneclickMallController::class, 'finishInscription'])->name("finish"); + Route::get('/authorize', [OneclickMallController::class, 'authorizeMall'])->name("authorize"); + Route::get('/delete', [OneclickMallController::class, 'deleteInscription'])->name("delete"); + Route::post('/refund', [OneclickMallController::class, 'refund'])->name("refund"); + Route::get('/status', [OneclickMallController::class, 'status'])->name("status"); +}); From 8b573ce6c21738bea22ffbe2ed0c77571cd3bc30 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Mon, 26 Aug 2024 11:51:33 -0300 Subject: [PATCH 17/28] fix: typo --- resources/views/oneclick-mall/rejected.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/oneclick-mall/rejected.blade.php b/resources/views/oneclick-mall/rejected.blade.php index 0ab4c43..060fd34 100644 --- a/resources/views/oneclick-mall/rejected.blade.php +++ b/resources/views/oneclick-mall/rejected.blade.php @@ -32,6 +32,6 @@ -

En este caso la inscripción fue rechaza, tendras que repetir el proceso

+

En este caso la inscripción fue rechazada, tendrás que repetir el proceso

From 83cf6d1ddfd078d9365e18a2fd291c1e8e3d31e8 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Mon, 26 Aug 2024 11:52:42 -0300 Subject: [PATCH 18/28] feat: add more info about refund --- .../views/oneclick-mall/refund.blade.php | 31 +++++++++++++--- .../views/webpay-deferred/refund.blade.php | 34 +++++++++++++---- .../webpay-mall-deferred/refund.blade.php | 37 +++++++++++++------ resources/views/webpay-mall/refund.blade.php | 36 ++++++++++++------ resources/views/webpay/refund.blade.php | 35 ++++++++++++++---- 5 files changed, 129 insertions(+), 44 deletions(-) diff --git a/resources/views/oneclick-mall/refund.blade.php b/resources/views/oneclick-mall/refund.blade.php index 9362801..3441fcd 100644 --- a/resources/views/oneclick-mall/refund.blade.php +++ b/resources/views/oneclick-mall/refund.blade.php @@ -5,7 +5,8 @@

Oneclick Mall - Reembolsar

-

En esta etapa, tienes la opción de solicitar el reembolso del monto al titular de la tarjeta. +

+ En esta etapa, tienes la opción de solicitar el reembolso del monto al titular de la tarjeta. Dependiendo del monto y el tiempo transcurrido desde la transacción, este proceso podría resultar en una Reversa, Anulación o Anulación Parcial.

@@ -23,10 +24,30 @@

- Ten en cuenta que si anulas el monto total, puede ser una Reversa o Anulación, dependiendo de ciertas - condiciones, o una Anulación parcial si el monto es menor al total. No es posible realizar Anulaciones ni - Anulaciones parciales en tarjetas que no sean de crédito. Tampoco es posible realizar reembolsos de compras en - cuotas. + Las transacciones de Webpay se pueden anular o reversar dadas algunas condiciones. Para cualquiera de éstas + operaciones se utiliza el mismo servicio web que discernirá si se realizará una reversa o una anulación. + + Para poder ejecutar una reversa ésta debe ser realizada antes de las 3 horas de efectuada la confirmación por el + monto total y en compras con tarjeta de crédito, débito o prepago. + + Una vez pasadas las tres horas, siempre se ejecutará una anulación. +

+
    +
  • + En transacciones con tarjeta de débito o prepago solo es posible anular por el monto total. +
  • +
  • + En transacciones con tarjeta de crédito puedes anular por cualquier monto igual o menor al total de la + compra. +
  • +
  • + No se pueden hacer Anulaciones parciales de compras con cuotas. +
  • +
+ +

+ En este link + podrás ver mayor información sobre las condiciones y casos para anular o reversar transacciones.

diff --git a/resources/views/webpay-deferred/refund.blade.php b/resources/views/webpay-deferred/refund.blade.php index 4ca88c2..668ac47 100644 --- a/resources/views/webpay-deferred/refund.blade.php +++ b/resources/views/webpay-deferred/refund.blade.php @@ -11,20 +11,40 @@

Paso 1 - Petición:

-

Para llevar a cabo el reembolso, necesitas proporcionar el token de la transacción y el monto que +

+ Para llevar a cabo el reembolso, necesitas proporcionar el token de la transacción y el monto que deseas - reversar. Si anulas el monto total, podría ser una Reversa o Anulación, dependiendo de ciertas condiciones, o - una Anulación Parcial si el monto es menor al total.

-

Condiciones Importantes:

-
    +

    + Las transacciones de Webpay se pueden anular o reversar dadas algunas condiciones. Para cualquiera + de éstas operaciones se utiliza el mismo servicio web que discernirá si se realizará una reversa o una + anulación. + + Para poder ejecutar una reversa ésta debe ser realizada antes de las 3 horas de efectuada la confirmación por el + monto total y en compras con tarjeta de crédito, débito o prepago. + + Una vez pasadas las tres horas, siempre se ejecutará una anulación. +

    + +
      +
    • + En transacciones con tarjeta de débito o prepago solo es posible anular por el monto total. +
    • +
    • + En transacciones con tarjeta de crédito puedes anular por cualquier monto igual o menor al total de la + compra. +
    • - No es posible realizar Anulaciones ni Anulaciones Parciales en tarjetas que no sean de crédito. + No se pueden hacer Anulaciones parciales de compras con cuotas.
    • -
    • No se admiten reembolsos de compras en cuotas.
    +

    + En este link + podrás ver mayor información sobre las condiciones y casos para anular o reversar transacciones. +

    + $resp = $transaction->refund($token, $amount);

    Paso 2: Respuesta

    diff --git a/resources/views/webpay-mall-deferred/refund.blade.php b/resources/views/webpay-mall-deferred/refund.blade.php index 748aa2c..0f07a1d 100644 --- a/resources/views/webpay-mall-deferred/refund.blade.php +++ b/resources/views/webpay-mall-deferred/refund.blade.php @@ -4,34 +4,47 @@

    Webpay Mall Diferido - Reembolsar

    -

    En esta etapa, tienes la opción de solicitar el reembolso del monto al titular de la tarjeta. +

    + En esta etapa, tienes la opción de solicitar el reembolso del monto al titular de la tarjeta. Dependiendo del monto y el tiempo transcurrido desde la transacción, este proceso podría resultar en una Reversa, Anulación o Anulación Parcial. -

    Paso 1 - Petición:

    Para llevar a cabo el reembolso, necesitas proporcionar el token de la transacción, el monto que - quieres reversar, el código de comercio de la tienda hijo y el orden de compra del detalle de la transacción. Si - anulas el monto total, podría ser una Reversa o Anulación, dependiendo de ciertas condiciones, o una Anulación - Parcial si el monto es menor al total. + quieres reversar, el código de comercio de la tienda hijo y el orden de compra del detalle de la transacción. +

    + +

    + Las transacciones de Webpay se pueden anular o reversar dadas algunas condiciones. Para cualquiera + de éstas operaciones se utiliza el mismo servicio web que discernirá si se realizará una reversa o una + anulación. + + Para poder ejecutar una reversa ésta debe ser realizada antes de las 3 horas de efectuada la confirmación por el + monto total y en compras con tarjeta de crédito, débito o prepago. + + Una vez pasadas las tres horas, siempre se ejecutará una anulación.

    -

    Algunas consideraciones a tener en cuenta

    • - No es posible realizar Anulaciones ni Anulaciones Parciales en tarjetas que no sean de crédito. + En transacciones con tarjeta de débito o prepago solo es posible anular por el monto total. +
    • +
    • + En transacciones con tarjeta de crédito puedes anular por cualquier monto igual o menor al total de la + compra.
    • - No es posible realizar Anulaciones Parciales en pagos con cuotas. + No se pueden hacer Anulaciones parciales de compras con cuotas.
    • -
    • No se admiten reembolsos de compras en cuotas.
    -

    En este link - podrás ver - mayor información sobre las condiciones y casos para anular o reversar transacciones.

    +

    + En este link + podrás ver mayor información sobre las condiciones y casos para anular o reversar transacciones. +

    + $resp = $mallTransaction->refund($token, $buyOrder, $childCommerceCode, $amount); diff --git a/resources/views/webpay-mall/refund.blade.php b/resources/views/webpay-mall/refund.blade.php index beb0e33..502dd9d 100644 --- a/resources/views/webpay-mall/refund.blade.php +++ b/resources/views/webpay-mall/refund.blade.php @@ -4,34 +4,46 @@

    Webpay Mall - Reembolsar

    -

    En esta etapa, tienes la opción de solicitar el reembolso del monto al titular de la tarjeta. +

    + En esta etapa, tienes la opción de solicitar el reembolso del monto al titular de la tarjeta. Dependiendo del monto y el tiempo transcurrido desde la transacción, este proceso podría resultar en una Reversa, Anulación o Anulación Parcial. -

    Paso 1 - Petición:

    Para llevar a cabo el reembolso, necesitas proporcionar el token de la transacción, el monto que - quieres reversar, el código de comercio de la tienda hijo y el orden de compra del detalle de la transacción. Si - anulas el monto total, podría ser una Reversa o Anulación, dependiendo de ciertas condiciones, o una Anulación - Parcial si el monto es menor al total. + quieres reversar, el código de comercio de la tienda hijo y el orden de compra del detalle de la transacción. +

    + +

    + Las transacciones de Webpay se pueden anular o reversar dadas algunas condiciones. Para cualquiera de éstas + operaciones se utiliza el mismo servicio web que discernirá si se realizará una reversa o una anulación. + + Para poder ejecutar una reversa ésta debe ser realizada antes de las 3 horas de efectuada la confirmación por el + monto total y en compras con tarjeta de crédito, débito o prepago. + + Una vez pasadas las tres horas, siempre se ejecutará una anulación.

    -

    Algunas consideraciones a tener en cuenta

    • - No es posible realizar Anulaciones ni Anulaciones Parciales en tarjetas que no sean de crédito. + En transacciones con tarjeta de débito o prepago solo es posible anular por el monto total. +
    • +
    • + En transacciones con tarjeta de crédito puedes anular por cualquier monto igual o menor al total de la + compra.
    • - No es posible realizar Anulaciones Parciales en pagos con cuotas. + No se pueden hacer Anulaciones parciales de compras con cuotas.
    • -
    • No se admiten reembolsos de compras en cuotas.
    -

    En este link - podrás ver - mayor información sobre las condiciones y casos para anular o reversar transacciones.

    +

    + En este link + podrás ver mayor información sobre las condiciones y casos para anular o reversar transacciones. +

    + $resp = $mallTransaction->refund($token, $buyOrder, $childCommerceCode, $amount); diff --git a/resources/views/webpay/refund.blade.php b/resources/views/webpay/refund.blade.php index 8f1ab07..f966d87 100644 --- a/resources/views/webpay/refund.blade.php +++ b/resources/views/webpay/refund.blade.php @@ -11,20 +11,39 @@

    Paso 1 - Petición:

    -

    Para llevar a cabo el reembolso, necesitas proporcionar el token de la transacción y el monto que - deseas - reversar. Si anulas el monto total, podría ser una Reversa o Anulación, dependiendo de ciertas condiciones, o - una Anulación Parcial si el monto es menor al total. +

    + Para llevar a cabo el reembolso, necesitas proporcionar el token de la transacción y el monto que + deseas reversar.

    +

    + Las transacciones de Webpay se pueden anular o reversar dadas algunas condiciones. Para cualquiera + de éstas operaciones se utiliza el mismo servicio web que discernirá si se realizará una reversa o una + anulación. -

    Condiciones Importantes:

    -
      + Para poder ejecutar una reversa ésta debe ser realizada antes de las 3 horas de efectuada la confirmación por el + monto total y en compras con tarjeta de crédito, débito o prepago. + + Una vez pasadas las tres horas, siempre se ejecutará una anulación. +

      +
      • - No es posible realizar Anulaciones ni Anulaciones Parciales en tarjetas que no sean de crédito. + En transacciones con tarjeta de débito o prepago solo es posible anular por el monto total. +
      • +
      • + En transacciones con tarjeta de crédito puedes anular por cualquier monto igual o menor al total de la + compra. +
      • +
      • + No se pueden hacer Anulaciones parciales de compras con cuotas.
      • -
      • No se admiten reembolsos de compras en cuotas.
      + +

      + En este link + podrás ver mayor información sobre las condiciones y casos para anular o reversar transacciones. +

      + $resp = $transaction->refund($token, $amount);

      Paso 2: Respuesta

      From 76adb126df4ae6bdd2a5a8d164991a1fa24acff4 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Mon, 26 Aug 2024 14:02:27 -0300 Subject: [PATCH 19/28] refactor: resume content --- resources/views/error-page.blade.php | 16 ++++------------ resources/views/oneclick-mall/delete.blade.php | 7 ++++--- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/resources/views/error-page.blade.php b/resources/views/error-page.blade.php index dc3f7f3..4887873 100644 --- a/resources/views/error-page.blade.php +++ b/resources/views/error-page.blade.php @@ -14,22 +14,14 @@
      -

      ¡Ha ocurrido un error!

      -

      Lo sentimos, pero se ha producido un error durante la integración con el SDK. El SDK - devuelve errores - de - tipo - "TransbankError". Si estás viendo otro tipo de error, es posible que el proyecto de ejemplo tenga - algún - problema. - +

      + Lo sentimos, pero se ha producido un error durante la integración con el SDK. El SDK + devuelve una Exception.

      Si este error persiste y crees que es necesario reportarlo, por favor, hazlo en nuestro - repositorio - de - GitHub. + repositorio de GitHub.

      diff --git a/resources/views/oneclick-mall/delete.blade.php b/resources/views/oneclick-mall/delete.blade.php index 0a1cb25..3f84179 100644 --- a/resources/views/oneclick-mall/delete.blade.php +++ b/resources/views/oneclick-mall/delete.blade.php @@ -19,13 +19,14 @@

      Paso 2: Respuesta

      - En caso de éxito, Transbank responderá con un status code 204 (No Content), y el SDK no retornará ninguna - respuesta adicional. La eliminación de la inscripción se ha realizado de manera exitosa. + En caso de éxito, Transbank responderá con un status code 204 (No Content), y el SDK retornará un + InsciptionDeleteResponse con success: true y code: (statuscode). La eliminación de la inscripción se ha + realizado de manera exitosa.

      En el caso de que no se encuentre el "userName" o el "tbkUser", Transbank responderá con un status code 404 (Not - Found), y el SDK retornará una excepción para informar sobre la situación. + Found), y el SDK retornará un InscriptionDeleteResponse con success: false y code: (statuscode).

      From 89601e80b83331448593d43e494fa60bcf483de7 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Mon, 26 Aug 2024 14:03:26 -0300 Subject: [PATCH 20/28] fix: magic numbers --- .../Controllers/OneclickMallController.php | 62 ++++++++++++------- 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/app/Http/Controllers/OneclickMallController.php b/app/Http/Controllers/OneclickMallController.php index 0511271..6dedc7e 100644 --- a/app/Http/Controllers/OneclickMallController.php +++ b/app/Http/Controllers/OneclickMallController.php @@ -10,6 +10,8 @@ class OneclickMallController extends Controller { + const TIMEOUT = -96; + const REJECTED = -1; const COMMERCE_CODE = "597055555541"; const API_KEY = "579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C"; private MallInscription $mallInscription; @@ -24,15 +26,21 @@ public function __construct() public function startInscription() { - $startTx = [ - "username" => "User-" . random_int(1, 10000), - "email" => "user." . random_int(1, 10000) . "@example.cl", - "response_url" => url("/") . "/oneclick-mall/finish" - ]; - - session(['username' => $startTx["username"]]); - $resp = $this->mallInscription->start($startTx["username"], $startTx["email"], $startTx["response_url"]); - return view('oneclick-mall.start', ["request" => $startTx, "resp" => $resp]); + try { + + $startTx = [ + "username" => "User-" . random_int(1, 10000), + "email" => "user." . random_int(1, 10000) . "@example.cl", + "response_url" => url("/") . "/oneclick-mall/finish" + ]; + + session(['username' => $startTx["username"]]); + $resp = $this->mallInscription->start($startTx["username"], $startTx["email"], $startTx["response_url"]); + return view('oneclick-mall.start', ["request" => $startTx, "resp" => $resp]); + } catch (\Exception $e) { + $error = ["msg" => $e->getMessage(), "code" => $e->getCode()]; + return view('error-page', ["error" => $error]); + } } public function finishInscription(Request $request) @@ -48,11 +56,11 @@ public function finishInscription(Request $request) $resp = $this->mallInscription->finish($token); - if ($resp->responseCode == -1) { + if ($resp->responseCode == self::REJECTED) { return view('oneclick-mall.rejected', ["resp" => $resp, "token" => $token]); } - if ($resp->responseCode == -96) { + if ($resp->responseCode == self::TIMEOUT) { return view('oneclick-mall.timeout', ["resp" => $resp]); } @@ -110,23 +118,31 @@ public function authorizeMall(Request $request) public function status(Request $request) { - $buyOrder = $request["buyOrder"]; - - $resp = $this->mallTransaction->status($buyOrder); - - return view('oneclick-mall.status', ["resp" => $resp]); + try { + $buyOrder = $request["buyOrder"]; + $resp = $this->mallTransaction->status($buyOrder); + return view('oneclick-mall.status', ["resp" => $resp]); + } catch (\Exception $e) { + $error = ["msg" => $e->getMessage(), "code" => $e->getCode()]; + return view('error-page', ["error" => $error]); + } } public function refund(Request $request) { - $req = $request->except('_token'); - $buyOrder = $req["buyOrder"]; - $childCommerceCode = $req["childCommerceCode"]; - $childBuyOrder = $req["childBuyOrder"]; - $amount = $req["amount"]; + try { + $req = $request->except('_token'); + $buyOrder = $req["buyOrder"]; + $childCommerceCode = $req["childCommerceCode"]; + $childBuyOrder = $req["childBuyOrder"]; + $amount = $req["amount"]; - $resp = $this->mallTransaction->refund($buyOrder, $childCommerceCode, $childBuyOrder, $amount); + $resp = $this->mallTransaction->refund($buyOrder, $childCommerceCode, $childBuyOrder, $amount); - return view('oneclick-mall.refund', ["resp" => $resp]); + return view('oneclick-mall.refund', ["resp" => $resp]); + } catch (\Exception $e) { + $error = ["msg" => $e->getMessage(), "code" => $e->getCode()]; + return view('error-page', ["error" => $error]); + } } } From 758f0769f3de9f9f0aff914eba0de274c3a43469 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Mon, 26 Aug 2024 14:15:54 -0300 Subject: [PATCH 21/28] fix : typo --- resources/views/oneclick-mall/authorize.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/oneclick-mall/authorize.blade.php b/resources/views/oneclick-mall/authorize.blade.php index 149b37d..58db70c 100644 --- a/resources/views/oneclick-mall/authorize.blade.php +++ b/resources/views/oneclick-mall/authorize.blade.php @@ -69,7 +69,7 @@

      - + buyOrder }}>
      From 4df6b80fb1eb03edef42ac06e7161be5a5136162 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Mon, 26 Aug 2024 15:41:31 -0300 Subject: [PATCH 22/28] fix: multiple return --- .../Controllers/OneclickMallController.php | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/OneclickMallController.php b/app/Http/Controllers/OneclickMallController.php index 6dedc7e..5eed399 100644 --- a/app/Http/Controllers/OneclickMallController.php +++ b/app/Http/Controllers/OneclickMallController.php @@ -46,29 +46,36 @@ public function startInscription() public function finishInscription(Request $request) { try { - //flujo error + $view = 'error-page'; + $data = ["error" => $request]; + $params = $request->only(['TBK_ORDEN_COMPRA', 'TBK_TOKEN', 'TBK_ID_SESION']); + $token = $request["TBK_TOKEN"]; + $userName = session('username', ''); + if ($request->exists("TBK_ORDEN_COMPRA")) { - return view('error-page'); + return view('oneclick-mall.recoverTransaction', ["req" => $params]); } - $token = $request["TBK_TOKEN"]; - $userName = session('username', ''); $resp = $this->mallInscription->finish($token); - if ($resp->responseCode == self::REJECTED) { + $view = 'oneclick-mall.rejected'; + $data = ["resp" => $resp, "token" => $token]; return view('oneclick-mall.rejected', ["resp" => $resp, "token" => $token]); - } - - if ($resp->responseCode == self::TIMEOUT) { + } else if ($resp->responseCode == self::TIMEOUT) { + $view = 'oneclick-mall.timeout'; + $data = ["resp" => $resp]; return view('oneclick-mall.timeout', ["resp" => $resp]); + } else { + $table = [ + "username" => $userName, + "tbk_user" => $resp->tbkUser, + ]; + $data = ["resp" => $resp, "token" => $token, "table" => $table]; + $view = 'oneclick-mall.finish'; } - $table = [ - "username" => $userName, - "tbk_user" => $resp->tbkUser, - ]; - return view('oneclick-mall.finish', ["resp" => $resp, "token" => $token, "table" => $table]); + return view($view, $data); } catch (\Exception $e) { $error = ["msg" => $e->getMessage(), "code" => $e->getCode()]; return view('error-page', ["error" => $error]); From f63d75266c7d3346d01e2366e8d13978e6e6909f Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Mon, 26 Aug 2024 15:41:44 -0300 Subject: [PATCH 23/28] fix: typo --- resources/views/oneclick-mall/delete.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/oneclick-mall/delete.blade.php b/resources/views/oneclick-mall/delete.blade.php index 3f84179..d105168 100644 --- a/resources/views/oneclick-mall/delete.blade.php +++ b/resources/views/oneclick-mall/delete.blade.php @@ -20,7 +20,7 @@

      Paso 2: Respuesta

      En caso de éxito, Transbank responderá con un status code 204 (No Content), y el SDK retornará un - InsciptionDeleteResponse con success: true y code: (statuscode). La eliminación de la inscripción se ha + InscriptionDeleteResponse con success: true y code: (statuscode). La eliminación de la inscripción se ha realizado de manera exitosa.

      From c7e91b4f839263853a0f6048aad8fc56f6cf5a04 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Mon, 26 Aug 2024 15:42:07 -0300 Subject: [PATCH 24/28] feat: add recorevytransaction page --- .../recoverTransaction.blade.php | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 resources/views/oneclick-mall/recoverTransaction.blade.php diff --git a/resources/views/oneclick-mall/recoverTransaction.blade.php b/resources/views/oneclick-mall/recoverTransaction.blade.php new file mode 100644 index 0000000..7a7a449 --- /dev/null +++ b/resources/views/oneclick-mall/recoverTransaction.blade.php @@ -0,0 +1,21 @@ +@php + $navigation = ['recovery' => 'Inscripción anulada']; +@endphp + + +

      Oneclick Mall - Inscripción anulada

      +

      + El pago de la inscripción ha sido anulado por el usuario. En esta etapa, después de abandonar el formulario de + pago, no es necesario realizar la confirmación. Aquí te proporcionamos información esencial sobre el estado de + la transacción anulada: +

      + +

      Datos Recibidos:

      +

      + Para evitar posibles problemas, recomendamos reiniciar la transacción y completar el proceso de pago en una + sesión activa y continua. +

      + + + +
      From 86399f8dc02bcb04e0a94da2d14ff4b39366d9d2 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Wed, 28 Aug 2024 11:19:12 -0300 Subject: [PATCH 25/28] refactor: use elseif --- app/Http/Controllers/OneclickMallController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/OneclickMallController.php b/app/Http/Controllers/OneclickMallController.php index 5eed399..7a6e011 100644 --- a/app/Http/Controllers/OneclickMallController.php +++ b/app/Http/Controllers/OneclickMallController.php @@ -62,7 +62,7 @@ public function finishInscription(Request $request) $view = 'oneclick-mall.rejected'; $data = ["resp" => $resp, "token" => $token]; return view('oneclick-mall.rejected', ["resp" => $resp, "token" => $token]); - } else if ($resp->responseCode == self::TIMEOUT) { + } elseif ($resp->responseCode == self::TIMEOUT) { $view = 'oneclick-mall.timeout'; $data = ["resp" => $resp]; return view('oneclick-mall.timeout', ["resp" => $resp]); From 0783d12fc274e9002cb6104f835081089ccf818e Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Wed, 28 Aug 2024 11:37:54 -0300 Subject: [PATCH 26/28] feat: add link to github issue --- resources/views/error-page.blade.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/resources/views/error-page.blade.php b/resources/views/error-page.blade.php index 4887873..d5eaf42 100644 --- a/resources/views/error-page.blade.php +++ b/resources/views/error-page.blade.php @@ -20,13 +20,16 @@ Lo sentimos, pero se ha producido un error durante la integración con el SDK. El SDK devuelve una Exception.

      +

      Si este error persiste y crees que es necesario reportarlo, por favor, hazlo en nuestro - repositorio de GitHub. + repositorio de GitHub. +

      - - Volver + + Volver
      @include('partials.footer')
From f04bf5738fa737525f9917d50a050b01a9a43700 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Wed, 28 Aug 2024 11:38:41 -0300 Subject: [PATCH 27/28] feat: add more info for timeout in integration --- resources/views/oneclick-mall/timeout.blade.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/resources/views/oneclick-mall/timeout.blade.php b/resources/views/oneclick-mall/timeout.blade.php index fcdc02f..cde10eb 100644 --- a/resources/views/oneclick-mall/timeout.blade.php +++ b/resources/views/oneclick-mall/timeout.blade.php @@ -12,8 +12,9 @@

Datos Recibidos:

- Después de 10 minutos en el que no se haya recibido ninguna acción o interacción del usuario, recibirás un POST - con la siguiente información:

+ Después de 10 minutos (en el ambiente de integración) en el que no se haya recibido ninguna acción o interacción + del usuario, recibirás un POST con la siguiente información: +

From 978905aeb01409add5b938b3c348a15f90b862e7 Mon Sep 17 00:00:00 2001 From: victor mendoza Date: Wed, 28 Aug 2024 12:23:21 -0300 Subject: [PATCH 28/28] fix: remove route --- app/Http/Controllers/OneclickMallController.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/Http/Controllers/OneclickMallController.php b/app/Http/Controllers/OneclickMallController.php index 7a6e011..e0e8fd3 100644 --- a/app/Http/Controllers/OneclickMallController.php +++ b/app/Http/Controllers/OneclickMallController.php @@ -61,11 +61,9 @@ public function finishInscription(Request $request) if ($resp->responseCode == self::REJECTED) { $view = 'oneclick-mall.rejected'; $data = ["resp" => $resp, "token" => $token]; - return view('oneclick-mall.rejected', ["resp" => $resp, "token" => $token]); } elseif ($resp->responseCode == self::TIMEOUT) { $view = 'oneclick-mall.timeout'; $data = ["resp" => $resp]; - return view('oneclick-mall.timeout', ["resp" => $resp]); } else { $table = [ "username" => $userName,