Preparar la transacción
API Button/Prepare
Este método te permite preparar los montos que se va a cobrar en una transacción, así como información adicional que se necesite.
Para utilizar el método Prepare, debes realizar una llamada POST a la siguiente URL:
https://pay.payphonetodoesposible.com/api/button/Prepare
Es fundamental incluir las siguientes cabeceras en la solicitud:
Authorization: bearer TU_TOKEN
(Esta cabecera debe contener el token de autenticación de tu aplicación, precedido por la palabra “Bearer”).Content-type: application/json
(Indica que el formato de los datos enviados en el cuerpo de la solicitud es JSON).
El cuerpo de la solicitud debe ser un objeto JSON con la siguiente estructura:
{
"amount": 315,
"amountWithoutTax": 200,
"amountWithTax": 100,
"tax": 15,
"service": 0,
"tip": 0,
"clientTransactionId": "ID_UNICO_X_TRANSACCION-001",
"responseUrl": "https://tu-dominio.com/ConfirmacionPago",
"cancellationUrl": "https://tu-dominio.com/",
"currency": "USD",
"storeId": "Your_StoreId",
"reference": "Motivo de Pago",
"order": {
"billTo": {
"address1": "Horizon",
"address2": "Zero Down",
"country": "EC",
"state": "Azuay",
"locality": "Cuenca",
"firstName": "Elisabeth",
"lastName": "Sobeck",
"phoneNumber": "+593999999999",
"email": "aloy@mail.com",
"postalCode": "EC090108",
"customerId": "3",
"ipAddress": "127.0.0.1"
},
"lineItems": [
{
"productName": "Producto Vendido",
"unitPrice": 100,
"quantity": 1,
"totalAmount": 115,
"taxAmount": 15,
"productSKU": "3342.0004",
"productDescription": "Descripción Producto"
},
{
"productName": "Servicio Entregado",
"unitPrice": 100,
"quantity": 2,
"totalAmount": 200,
"taxAmount": 0,
"productSKU": "5342.0054",
"productDescription": "Descripción Servicio"
}
]
},
"documentId": null,
"phoneNumber": null,
"email": null,
"optionalParameter": "Descripción Extra"
}
El objeto JSON mostrado define el cobro de $3.15, divididos en $1 con un impuesto del 15% y $2 sin impuesto.
Importante:
Recuerda que el amount (valor a cobrar) debe ser la suma de los campos amountWithTax, amountWithoutTax, tax, service y tip.
amount = amountWithoutTax + amountWithTax + tax + service + tip
Aunque los montos individuales son opcionales, al menos uno debe estar presente para respaldar el amount
Los valores monetarios deben expresarse en enteros. Es decir, se multiplica el valor en dólares por 100. Por ejemplo:
$1 dólar = 100
$1.50 dólares = 150
$10 dólares = 1000
$12.68 dólares = 1268
A continuación, se presentan una configuración de objetos JSON con los campos mínimos que puedes utilizar para preparar un cobro:
- Cobro de $1 dólar sin impuestos:
{
"responseUrl":"https://tu-dominio.com/ConfirmacionPago",
"amount": 100,
"amountWithoutTax": 100,
"currency": "USD",
"clientTransactionId": "ID_UNICO_X_TRANSACCION-002"
}
- Cobro de $1 dólar con impuestos del 15%:
{
"responseUrl":"https://tu-dominio.com/ConfirmacionPago",
"amount": 115,
"amountWithTax": 100,
"tax": 15,
"currency": "USD",
"clientTransactionId": "ID_UNICO_X_TRANSACCION-003"
}
Descripción de parámetros en la petición
A continuación se detallan todos los parámetros que se pueden usar para una transacción como montos a cobra, moneda, datos del cliente y otros campos que puedes enviar.
Valor total a cobrar.
Debe ser igual a la suma de todos los montos individuales ( amountWithoutTax, amountWithTax, Tax, service y tip ).
Monto que no está sujeto a impuestos.
Monto que incluye el valor sujeto a impuestos, excluyendo el propio impuesto.
Monto del impuesto aplicado a la transacción.
Monto asociado al servicio proporcionado.
Monto de la propina otorgada por el cliente.
Código de moneda ISO 4217. (ej:USD)
Identificador único asignado a la transacción para su seguimiento.
Identificador de la sucursal que efectúa el cobro (se obtiene en PayPhone Developer).
Motivo o referencia específica del pago.
Número de teléfono del titular; se solicitará si no se proporciona.Formato: Símbolo(+) + Código País + numero telefónico.Ej. +593984111222
Correo electrónico del cliente; se solicitará si no se proporciona.
Número de identificación del cliente; se solicitará si no se proporciona.
Url de respuesta a donde se redirecciona luego del pago.
Url a donde se redirecciona si se cancela la transacción desde el icono X en el formulario.
Información adicional para la transacción.
Arreglos con datos de facturación y detalle de artículos o servicios.
Idioma de Formulario:
inglés (en),
español (es).
Por defecto en español.
latitud en formato decimal: -1.831239
longitud en formato decimal: -78.183406
Advertencia:
Al utilizar los campos phoneNumber
, email
y documentId
en las solicitudes a los servicios de payphone, es crucial que se ingresen los datos del titular de la tarjeta para cada transacción individual. No se permite el uso de datos "quemados" o estáticos, ya que esto puede resultar en el rechazo de sus transacciones y el bloqueo de sus usuarios. El uso de datos falsos o repetitivos puede generar sospechas de fraude.
Payphone se compromete a proteger la seguridad y privacidad de los datos, por lo que es fundamental cumplir con esta política para garantizar un proceso de pago seguro y confiable.
Campo ORDER
El campo order se divide en dos arreglos: BillTo, LineItems
BillTo:
El campo billTo es un arreglo que contiene información de facturación
Dirección de facturación 1
Dirección de facturación 2
El código de país según la norma ISO 3166-1 alfa-2.
(EJ: EC)
Número de teléfono del titular; se solicitará si no se proporciona.
Formato: Símbolo(+) + Código País + numero telefónico.
Ej. +593984111222
Correo electrónico del cliente.
Código Postal: dirección numérica de un lugar específico.
Identificador del cliente otorgada por el comercio
Dirección IP del dispositivo
LineItems:
El campo lineItems es un conjunto de arreglos que contiene la información de los servicios o productos entregados
Nombre del producto o servicio
Total a pagar por este servicio
Identificador del producto o servicio
Descripcion corta del producto
Ejemplo de solicitud POST a Buttom/Prepare en JavaScript
Para realizar una llamada POST utilizando AJAX en JavaScript, primero necesitas incluir la biblioteca jQuery en la cabecera de tu documento HTML.
A continuación, se presenta un script de ejemplo de cómo realizar una llamada POST:
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de Solicitud POST con jQuery</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<h1>Ejemplo de Solicitud POST</h1>
<div id="resultado"></div>
<script>
const clientTraxID =Date.now(); //genera un identificador unico para cada transacción
$(document).ready(function() {
$.ajax({
url: "https://pay.payphonetodoesposible.com/api/button/Prepare",
type: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer TU_TOKEN"
},
data: JSON.stringify({
"amount": 180,
"amountWithoutTax": 180,
"amountWithTax": 0,
"tax": 0,
"reference": "Pago mediante Boton payphone",
"currency": "USD",
"clientTransactionId": clientTraxID,
"storeId": "TU_STOREID",
"ResponseUrl": "https://tu-dominio.com/BotonConfirmacion"
}),
success: function(response) {
$("#resultado").html(
"<a href='" + response.payWithPayPhone + "' target='_blank'>Pagar con PayPhone</a><br>" +
"<a href='" + response.payWithCard + "' target='_blank'>Pagar con Tarjeta</a>"
);
},
error: function(error) {
console.error("Error en la solicitud:", error);
}
});
});
</script>
</body>
</html>
Respuesta a la solicitud POST
Al realizar la solicitud POST, recibirás un objeto JSON que incluye los siguientes parámetros:
- paymentId: Identificador del pago.
- payWithPayPhone: URL para redirigir al usuario a realizar el pago mediante la app de payphone.
- payWithCard: URL para que el usuario realice el pago directamente con su tarjeta de crédito o débito.
Consideraciones: Es importante tener en cuenta que los enlaces generados por el servicio tienen una ventana de tiempo de 10 minutos para ser utilizados. Pasado este lapso, el enlace expirará y será necesario generar uno nuevo.
Nota: Asegúrate de redirigir al usuario a la URL de pago desde tu dominio web configurado; de lo contrario, no se otorgará autorización.
Los clientes pueden pagar con tarjetas de crédito y débito Visa y Mastercard, así como con saldo Payphone. Independientemente del método de pago, recibirás la misma respuesta de transacción, ya sea aprobada o rechazada.