dshovchko/php_uapay

UAPAY 服务集成库

1.1.0 2020-11-22 11:41 UTC

This package is auto-updated.

Last update: 2024-09-22 19:48:39 UTC


README

Build Status Scrutinizer Code Quality Coverage Status

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