qpaypro-checkout
v0.1.3
Published
QPayPro Checkout SDK
Readme
qpaypro-checkout-sdk
SDK para consultar endpoints de QPayPro Checkout.
Uso
import { QpayProClient } from "qpaypro-checkout";
const client = new QpayProClient();
const response = await client.consultarCui({
public_key: "tu_public_key",
documento: "1234567890101",
});URL base
Por defecto, el SDK decide que URL usar segun el runtime:
- En backend / Node usa
https://api-payments.qpaypro.com. - En navegador usa una URL relativa (
"") para llamar al mismo dominio del proyecto.
Eso significa que en navegador esta llamada:
await client.consultarCui({
public_key: "tu_public_key",
documento: "1234567890101",
});apunta a:
/checkout/qpayfel/consultar/cuiEl SDK no puede crear el proxy automaticamente. El proyecto que lo use en navegador debe exponer esa ruta en su backend y reenviarla a QPayPro.
Ejemplo en Laravel:
Route::post('/checkout/qpayfel/consultar/cui', function (Request $request) {
$response = Http::post(
'https://api-payments.qpaypro.com/checkout/qpayfel/consultar/cui',
$request->only(['public_key', 'documento'])
);
return response($response->body(), $response->status())
->header('Content-Type', 'application/json');
});El flujo queda asi:
React -> /checkout/qpayfel/consultar/cui -> Laravel -> QPayPro APISi necesitas apuntar a otra URL, puedes seguir enviando baseUrl:
const client = new QpayProClient({
baseUrl: "https://mi-backend.com",
});Laravel y CSRF
Si usas el SDK desde navegador contra un proxy Laravel en web.php, Laravel puede responder 419 si el POST no incluye CSRF.
En ese caso puedes enviar headers personalizados y credentials:
const client = new QpayProClient({
baseUrl: window.location.origin,
headers: {
"X-CSRF-TOKEN":
document
.querySelector('meta[name="csrf-token"]')
?.getAttribute("content") ?? "",
"X-Requested-With": "XMLHttpRequest",
},
credentials: "same-origin",
});Otra opcion es definir el proxy en api.php o excluir esa ruta de CSRF en Laravel, segun la arquitectura del proyecto.
