simplepay / php-sdk
Simplepay集成SDK
dev-master
2018-02-10 18:55 UTC
Requires
- guzzlehttp/guzzle: ~6.0
This package is not auto-updated.
Last update: 2024-09-20 02:22:18 UTC
README
SimplePay集成库。目前仅支持使用Chauchas进行支付。该库由freshworkstudio.com的Gonzalo De Spirito和simplepay.cl维护。
安装
composer require simplepay/php-sdk
或
composer require simplepay/php-sdk:dev-master
入门指南
示例
include 'vendor/autoload.php'; use SimplePay\SimplePay; $simplePay = new SimplePay('API_KEY'); $amount = 100; $currency = 'CLP'; //ó CHA $order_id = 123; //Id de transacción de tu sistema $description = ''; //opcional: descripción de la compra $response_url = 'https://misitio.cl/simplepay/response'; $final_url = 'https://misitio.cl/simplepay/final'; $ipn_url = 'https://misitio.cl/simplepay/ipn'; //Necesario solo para el pago de Chauchas $transaction = $simplePay->initTransaction(SimplePay::PAYMENT_METHOD_CHAUCHAS, $amount, $currency, $order_id, $response_url, $final_url, $description, $ipn_url); header('Location: ' . $transaction['redirect_url']); exit;
流程
此代码在系统中启动交易并返回一个用户应重定向的URL。当用户成功付款后,用户将被重定向到$response_url
,并通过POST发送交易令牌。
/response
<?php include '../vendor/autoload.php'; use SimplePay\SimplePay; $simplePay = new SimplePay('88LCjCRBwOZQQsgcQFYpNL6CoSdv5gOXVDBr2mYm0CgCHO6HDIMT15cD3b83'); $result = $simplePay->getTransactionResult($_POST['token']); if (is_null($result['transaction']['accepted_at'])) { //El pago no fue aceptado. Cancelar la orden, etc. } else { //Si estoy acá es porque accepted_at no es nulo y la compra fue aceptada. Marcar la orden de compra como en espera. //En este punto, si el usuario pagó con chauchas, se recibieron las transacciones, pero no se han confirmado todavía. LLegará una notificación a la URL IPN (paso anterior) indicando cuando esté confirmada. //Marcar orden como pagada y en espera. No despachar productos todavía. Esperar IPN. } $simplePay->acknowledgeTransaction($_POST['token']); header('Location: ' . $result['redirect_url']); exit;
感谢或拒绝页面。
之后,用户将被重定向到SimplePay的感谢页面,然后被发送到$final_url
(同样通过POST包含交易令牌)。到达该URL后,系统必须获取交易数据并读取订单ID。通过这些信息,您可以知道用户到达的订单是被接受还是被拒绝。
/ipn - IPN通知
当交易被网络确认或100%确认后,将通过此URL通知。与其它URL不同,其他URL是用户浏览器进入,而在此情况下,是SimplePay服务器直接连接到该URL。这意味着如果您正在使用本地URL(例如:https://)进行测试,则此通知不会到达您。
此页面必须打印交易UUID,以便SimplePay知道消息已正确接收。
if (!isset($_POST['token'])) { die('SimplePay: No se ha podido procesar esta solicitud. '); } $token = $_POST['token']; try { $response = $this->simplepay_sdk->getTransactionResult($token); } catch (Exception $e) { die('Error obteniendo información de la transacción: ' . $e->getMessage()); } if ($response['transaction']['completed_at'] !== null) { $order = new WC_Order($response['transaction']['commerce_order_id']); $order->add_meta_data('simplepay_completed', true); $order->payment_complete($response['transaction']['uuid']); $order->add_order_note('Transacción completa y confirmada por la red'); die($response['transaction']['uuid']); } ``