simplepay/php-sdk

dev-master 2018-02-10 18:55 UTC

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']);
}

``