dshovchko / php_uapay
UAPAY 服务集成库
1.1.0
2020-11-22 11:41 UTC
Requires
- php: >=5.5.27
- dshovchko/debulog: ^1.1
- firebase/php-jwt: ^5.0
- guzzlehttp/guzzle: ~6.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.2.0
- phpunit/phpunit: ^5.6
This package is auto-updated.
Last update: 2024-09-22 19:48:39 UTC
README
php_UAPAY
PHP 库,提供与 UAPAY 网络支付 API 交互的接口。
安装
composer require dshovchko/php_uapay
注意
目前该库仅实现了类型为“支付”的扣款操作。使用该库无法执行与“保留”类型相关的操作。
使用
“支付”类型允许执行创建会话、创建订单、取消订单、查看已完成的订单信息以及获取支付通知的操作。
账户充值过程包括以下步骤
- 首先,在 UAPAY 系统中创建会话;
- 创建会话后,创建订单;
- 如果订单创建成功,则会在响应中收到用于跳转到支付页面的 URL;
- 然后,跳转到获得的 URL(现在,您的系统不再控制此过程);
- 在支付页面上进行支付;
- 然后,通过支付通知将控制权交回给您。
创建配置文件
<?php
// Для визначення шляхів до файлів ключів
return array(
'clientId' => '1234',
'api_uri' => 'https://api.demo.uapay.ua',
'jwt' => array(
'using' => true,
'UAPAY_pubkey' => 'uapay.pub',
'our_privkey' => 'private.pem',
'key_type' => Key::KEYS_IN_FILES,
'algorithm' => 'RS512'
)
);
// Для завдання значень ключів
return array(
'clientId' => '1234',
'api_uri' => 'https://api.demo.uapay.ua',
'jwt' => array(
'using' => true,
'UAPAY_pubkey' => 'AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTBWD ...',
'our_privkey' => 'BlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSl ...',
'key_type' => Key::KEYS_IN_VALUES,
'algorithm' => 'HS256',
)
);
创建日志初始化文件
<?php
namespace UAPAY;
Log::set(new Logger(
realpath('каталог з логами'.DIRECTORY_SEPARATOR, // log path
'uapay', // prefix for log files (default 'my')
true // enable/disable debug (default false)
));
现在创建创建会话、订单和获取支付页面 URL 的文件
<?php
require 'vendor/autoload.php';
require 'щлях до файла ініціалізації журналювання';
$options = include('шлях до конфігураційного файлу');
try
{
/**
* session create BEGIN
*/
$request = new \UAPAY\Sessions\Create\Request($options);
$response = $request->send();
$sesid = $response->id();
/**
* session create END
*/
/**
* create session in your system
*/
//
// тут записуємо сесію в нашій системі
// та створюємо масив $data
// зміст масива, це структура payLoad object
// дивись в описі API UAPAY
/**
* order create BEGIN
*/
$request = new \UAPAY\Orders\Create\Request($options);
$request->sessionId($sesid);
$request->data($data);
$response = $request->send();
$orderid = $response->id();
/**
* order create END
*/
/**
* update session data with order id
*/
// тут поновлюємо дані в нашій системі
// додаємо дані замовлення
/**
* generate return data
*/
$ret = array(
'status' => 1,
'paymentPageUrl' => $response->paymentPageUrl()
);
}
catch (\Exception $e)
{
/**
* Attention! Got an error!
*/
UAPAY\Log::instance()->add('an error occured during a request');
$ret = array(
'status' => 0,
'error' => 'an error occured during a request'
);
}
/**
* Return json
*/
ob_clean();
header("Content-Type: application/json; charset=utf-8");
echo json_encode($ret);
exit;
最后,创建在支付通知时调用的文件。
require 'vendor/autoload.php';
require 'щлях до файла ініціалізації журналювання';
$options = include('шлях до конфігураційного файлу');
try
{
/**
* get callback data
*/
$request = new \UAPAY\Callback($options);
/**
* update session data with callback data
*/
// обвлюємо дані у нашій системі
// та зараховуємо платіж на баланс
}
catch (\Exception $e)
{
/**
* Attention! Got an error!
*/
UAPAY\Log::instance()->add('an error occured during a callback request');
}