blenderdeluxe/khipu
Composer 安装命令:
composer require blenderdeluxe/khipu
包简介
Composer package for Tifon's Khipu Library (https://github.com/khipu/lib-php) modified for personal use all rights for them
README 文档
README
I modified this library for personal use added option for use input ype image with default Phipu button or custom url or input type submit with custom value, added class option on render form for Page create
Versión Biblioteca: 1.3
Versión API Khipu: 1.3
Biblioteca PHP para utilizar los servicios de Khipu.com
La documentación de Khipu.com se puede ver desde aquí: https://khipu.com/page/api
Instalación: composer
composer require blenderdeluxe/khipu
Introducción
La API de Khipu cuenta con varios servicios, los cuales son:
- Ver estado de la cuenta Khipu
- Crear un botón de pago
- Crear un cobro por Mail
- Crear URL para un pago
- Expirar un cobro
- Consultar estado de un pago
- Marcar un pago como pagado
- Marcar un pago como rechazado
- Actualizar versión de la notificación
- Obtener listado de bancos
Para utilizar estos servicios se debe cargar el archivo Khipu.php
Algunos Ejemplos
1) Crear Cobros y enviarlos por Mail
Para crear cobros, necesitamos identificar al cobrador y a los destinatarios. A continuación un ejemplo
<?php // ... require_once __DIR__ . '/../vendor/autoload.php'; $khipu = new Khipu(); // Para usar el servicio para crear cobros y enviarlos por Mail necesitamos // identificar al cobrador ya que es requerido para el servicio. $khipu->authenticate($receiver_id, $llave); // Luego cargamos el servicio. $khipu_service = $khipu->loadService('CreateEmail'); // Preparamos los datos que queremos enviar $data = array( 'subject' => 'Título del pago', 'body' => 'Descripción del producto', 'transaction_id' => '1', 'pay_directly' => 'false', // Decimos que envie los correos. 'send_emails' => 'true', // Si contamos con algun sitio, podemos redireccionar al usuario // a esta URL una vez que pague. 'return_url' => '', // Le damos un tiempo de expiración. 'expires_date' => time() + 30 * 10, // Opcionalmente podemos asignar una URL de una imagen. 'picture_url' => '', ); // Recorremos los datos y se lo asignamos al servicio foreach($data as $name => $value) { $khipu_service->setParameter($name, $value); } /** * En reemplazo de setParameter se podría usar * $this->setParameters($data); */ // Agregamos un destinatario con un monto $khipu_service->addRecipient('Cliente', 'cliente@gmai.com', 25000); // Lo enviamos $json = $khipu_service->send();
2) Crear Página de Pago
Crear una página de pago también se requiere identificarse, a continuación un ejemplo:
<?php // ... require_once __DIR__ . '/../vendor/autoload.php'; $Khipu = new Khipu(); $Khipu->authenticate($receiver_id, $llave); $khipu_service = $Khipu->loadService('CreatePaymentPage'); $data = array( 'subject' => 'Título del pago', 'body' => 'Descripción del producto', 'amount' => 10000, // Página de exito 'return_url' => $return_url, // Página de fracaso 'cancel_url' => $cancel_url, 'transaction_id' => 1, // Dejar por defecto un correo para recibir el comprobante 'payer_email' => 'cliente@gmail.com', // url de la imagen del producto o servicio 'picture_url' => $picture_url, // Opcional 'custom' => 'Custom Variable', // definimos una url en donde se notificará del pago 'notify_url' => $notify_url, ); // Recorremos los datos y se lo asignamos al servicio. foreach ($data as $name => $value) { $khipu_service->setParameter($name, $value); } // Luego imprimimos el formulario html echo $khipu_service->renderForm();
3) Recibiendo y validando la notificación de un pago
Este servicio debe ser utilizado en la página que recibirá el POST desde Khipu y no require identificar al cobrador. A continuación un ejemplo:
<?php // ... require_once __DIR__ . '/../vendor/autoload.php'; $Khipu = new Khipu(); // No necesitamos identificar al cobrador para usar este servicio. $api_version = $_POST['api_version']; if($api_version == '1.2') { $khipu_service = $Khipu->loadService('VerifyPaymentNotification'); $khipu_service->setDataFromPost(); $response = $khipu_service->verify(); if($response['response'] == 'VERIFIED'){ //el pago esta verificado, hacemos algo al respecto } } else if ($api_version == '1.3') { $Khipu->authenticate($receiver_id, $llave); $khipu_service = $Khipu->loadService('GetPaymentNotification'); $khipu_service->setDataFromPost(); $response = json_decode($khipu_service->consult()); // validamos que la notificacion de pago corresponda con una solicitud de pago esperada if($response->transaction_id == $mi_transaction_id && $response->receiver_id == $receiver_id, $response->amount == $mi_amount) { // la notificacion esta ok, la estaba esperando y debo procesar el pedido } else { // la notificacion no es para mi o no la estaba esperando, la ignoro } } else { // api de notificacion no soportada }
4) Verificar Estado de una cuenta Khipu
Este servicio permite consultar el estado de una cuenta khipu, la cual retorna un json mencionando el ambiente en que se encuentra y si puede recibir pagos. A continuación un ejemplo:
<?php // ... require_once __DIR__ . '/../vendor/autoload.php'; $Khipu = new Khipu(); $Khipu->authenticate($receiver_id, $llave); $khipu_service = $Khipu->loadService('ReceiverStatus'); // Aquí se hace la consulta a khipu sobre la cuenta. $json = $khipu_service->consult();
En la carpeta examples existen otros ejemplos.
Extra
La clase Khipu cuenta con dos funciones estáticas, las cuales son:
getUrlService()
<?php // ... require_once __DIR__ . '/../vendor/autoload.php'; // Imprime https://khipu.com/api/1.3/verifyPaymentNotification echo Khipu::getUrlService('VerifyPaymentNotification'); ?>
Esta función recibe el nombre del servicio y retorna la URL de Khipu que corresponde.
getButtonsKhipu()
<?php // ... require_once __DIR__ . '/../vendor/autoload.php'; $buttons = Khipu::getButtonsKhipu(); ?>
Esta función retorna la lista de links de los botones de Khipu.com, la pueden ver aquí: https://khipu.com/page/botones-de-pago
Testing
phpunit src/KhipuTest.php
blenderdeluxe/khipu 适用场景与选型建议
blenderdeluxe/khipu 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 308 次下载、GitHub Stars 达 0, 最近一次更新时间为 2016 年 08 月 06 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 blenderdeluxe/khipu 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 blenderdeluxe/khipu 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 308
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 12
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2016-08-06