Acepta un pago en efectivo
Permite que los usuarios no bancarizados adquieran tus productos o servicios
Esta opción de pago es la ideal para aquellos clientes que quieren adquirir los productos o servicios disponibles en tu app iOS, pero que no poseen una tarjeta o cuenta bancaria. Para ello, es necesario que captures los datos básicos de tu cliente, con el fin de generar una referencia o “voucher”, con el que tu usuario podrá realizar el pago en un punto físico de la entidad de recaudo que seleccione.
1. Configura tu App
La responsabilidad de la APP es recolectar los datos básicos pago del usuario, tokenizar esa información a través de los servidores de Kushki y enviar esa información a tu back-end para iniciar el proceso de pago.
Instala el SDK de Kushki
Vamos a utilizar CocoaPods para instalarlo. Sí no lo tienes ya instalado, puedes obtener la última versión acá.
Incluye la librería en tu proyecto, añadiendo la siguiente línea a tu Podfile
:
pod 'Kushki', '~> 2.4.2'
Luego, ejecuta el siguiente comando:
pod install
Para actualizar a la última versión ejecuta:
pod update Kushki
Configúralo
let publicMerchantId = "public-merchant-id"let kushki =Kushki(publicMerchantId: publicMerchantId,currency: "PEN",environment: KushkiEnvironment.testing)
Solicita el token y envíalo a tu back-end
Una vez que el usuario ingresa su información de pago en el formulario, usa el siguiente ejemplo para obtener el token y enviarlo:
private func requestKushkiToken(name : String, lastName: String, identification: String, documentType: String, totalAmount: String, email: String) {let publicMerchantId = "publicMerchantId"let kushki = Kushki(publicMerchantId: publicMerchantId,currency: "PEN",environment: KushkiEnvironment.testing)kushki.requestCashToken(name: name, lastName: lastName, identification: identification, documentType: documentType, totalAmount: Double(totalAmount) ?? 0.0, email: email) { transaction inlet message = transaction.isSuccessful() ?transaction.token : transaction.code + ": " + transaction.message// transaction.code + ": " + transaction.messageDispatchQueue.main.async(execute: {let alert = UIAlertController(title: "Kushki Token request",message: message,preferredStyle: UIAlertController.Style.alert)alert.addAction(UIAlertAction(title: "Ok", style: .default))self.present(alert, animated: true)})self.ResponseView.text = "Token response: \n\n" + message}}
2. Configura tu back-end
La responsabilidad del back-end es recibir el token obtenido desde tu front-end e iniciar el proceso de pago con Kushki.
Cuando el usuario envía el formulario, tu front-end transfiere un token al endpoint que hayas especificado. Con este token, deberás realizar una llamada a nuestro endpoint de cobros para iniciar el cobro.
- Javascript
- Python
- PHP
var data = JSON.stringify({"token": "e518ce73fdc2b0a72903ee232ff3437c","expirationDate": "2021-11-20 21:00:00","amount": {"subtotalIva": 0,"subtotalIva0": 49.99,"iva": 0,"extraTaxes": {"propina": 10}}});var xhr = new XMLHttpRequest();xhr.withCredentials = true;xhr.addEventListener("readystatechange", function () {if (this.readyState === this.DONE) {console.log(this.responseText);}});xhr.open("POST", "https://api-uat.kushkipagos.com/cash/v1/charges/init");xhr.setRequestHeader("content-type", "application/json");xhr.send(data);
import requestsurl = "https://api-uat.kushkipagos.com/cash/v1/charges/init"payload = "{\"token\":\"e518ce73fdc2b0a72903ee232ff3437c\",\"expirationDate\":\"2021-11-20 21:00:00\",\"amount\":{\"subtotalIva\":0,\"subtotalIva0\":49.99,\"iva\":0,\"extraTaxes\":{\"propina\":10}}}"headers = {'content-type': 'application/json'}response = requests.request("POST", url, data=payload, headers=headers)print(response.text)
<?php$client = new http\Client;$request = new http\Client\Request;$body = new http\Message\Body;$body->append('{"token":"e518ce73fdc2b0a72903ee232ff3437c","expirationDate":"2020-11-20 21:00:00","amount":{"subtotalIva":0,"subtotalIva0":49.99,"iva":0,"extraTaxes":{"propina":10}}}');$request->setRequestUrl('https://api-uat.kushkipagos.com/cash/v1/charges/init');$request->setRequestMethod('POST');$request->setBody($body);$request->setHeaders(array('content-type' => 'application/json'));$client->enqueue($request)->send();$response = $client->getResponse();echo $response->getBody();
De acuerdo a la respuesta del consumo del método para iniciar la transacción, redirecciona al usuario a la URL del PDF del voucher para que tu cliente pueda descargarlo/imprimirlo y así realice el pago en el punto físico de la entidad de recaudo que seleccione.
3. Prueba tu integración
Existen números de identificación de prueba que puedes utilizar en el ambiente UAT para asegurarte de que tu integración está lista.Úsalos en la solicitud del token (front-end) para simular cualquier estado:
- Transacción aprobada: Cualquier número de identificación
- Transacción inicializada:
9999999999
- Transacción declinada:
1000000000
4. Prepara tu certificación
Toma en consideración las siguientes pautas para aprobar la certificación técnica (requerida para obtener credenciales productivas):
- El cálculo de los impuestos y el monto total debe ser el correcto.
- Muestras mensajes en pantalla de acuerdo a las respuestas de Kushki.
- Guardas y registras todas las respuestas de Kushki (requeridas en caso de necesitar soporte).
- Asegúrate de enviar todos los datos requeridos que se especifican en la Referencia de la API
- El logo de Kushki debe ser visible para el cliente. Puedes encontrar nuestro logo en varios formatos aquí.
Si diseñas tu propio comprobante, valida también lo siguiente:
- Se muestra el número de PIN.
- Se muestra el numero de convenio. (solamente si la respuesta del init lo contiene).
- Se muestra la fecha máxima de expiración del comprobante.
- Se muestran los puntos de pago donde el PIN puede ser utilizado para realizar el pago.
- Se muestra el monto total.
- Se muestre el código de barras (en caso de que se incluya en la respuesta del endpoint de cobros.
Acepta webhooks
Maneja eventos post-pago de la manera correcta.
Consulta el estado de tus transacciones
Junto con el recibo y el pin de pago, también recibirás un TicketNumber que es el identificador de tu transacción en kushki y corresponde también al parámetro que puedes utilizar para consultar el estado de las transacciones por medio de nuestra API.