blenderdeluxe / khipu
为 Tifon 的 Khipu 库 (https://github.com/khipu/lib-php) 定制的 Composer 包,修改后用于个人使用,所有权利归他们所有
1.0.1
2016-08-06 21:00 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 4.0.*
This package is auto-updated.
Last update: 2024-09-19 05:58:45 UTC
README
我修改了这个库以供个人使用,增加了使用默认 Phipu 按钮或自定义 URL 或提交类型输入自定义值的选项,并在创建页面时在渲染表单上增加了类选项
库版本:1.3
Khipu API 版本:1.3
用于使用 Khipu.com 服务的 PHP 库
Khipu.com 的文档可以在这里查看:https://khipu.com/page/api
安装:composer
composer require blenderdeluxe/khipu
简介
Khipu API 提供了多项服务,包括
- 查看 Khipu 账户状态
- 创建支付按钮
- 通过邮件创建收费
- 创建支付 URL
- 过期收费
- 查询支付状态
- 标记支付为已支付
- 标记支付为拒绝
- 更新通知版本
- 获取银行列表
要使用这些服务,必须加载 Khipu.php 文件
一些示例
1) 创建收费并通过邮件发送
创建收费需要识别收费者和收件人。以下是一个示例
<?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) 创建支付页面
创建支付页面也需要进行识别,以下是一个示例
<?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) 接收和验证支付通知
此服务应在接收 Khipu POST 的页面中使用,无需识别收费者。以下是一个示例
<?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) 检查 Khipu 账户状态
此服务允许查询 Khipu 账户的状态,返回一个 json,说明其所在环境以及是否可以接收支付。以下是一个示例
<?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();
在 examples 文件夹中还有其他示例。
附加
Khipu 类有两个静态函数,分别是
getUrlService()
<?php // ... require_once __DIR__ . '/../vendor/autoload.php'; // Imprime https://khipu.com/api/1.3/verifyPaymentNotification echo Khipu::getUrlService('VerifyPaymentNotification'); ?>
此函数接收服务名称,并返回对应的 Khipu URL。
getButtonsKhipu()
<?php // ... require_once __DIR__ . '/../vendor/autoload.php'; $buttons = Khipu::getButtonsKhipu(); ?>
此函数返回 Khipu.com 按钮的链接列表,您可以在以下位置查看:https://khipu.com/page/botones-de-pago
测试
phpunit src/KhipuTest.php