lapaygroup/start2pay

Start 2 Pay PHP SDK

0.5.1 2017-02-28 10:13 UTC

This package is auto-updated.

Last update: 2024-09-15 22:17:06 UTC


README

PHP SDK 用于与 https://start2pay.com 服务集成
Start 2 Pay API 说明 https://wiki.start2pay.com

安装

可以使用 Composer 包管理器进行安装

composer require lapaygroup/start2pay

配置文件

为了使 SDK 正常工作,需要放置一个配置的 yaml 文件。示例可以在此查看 这里.

参数说明

  • auth
    • host - API 地址
    • username - 登录名
    • password - 密码
    • salt - 用于创建上下文的盐
    • callback_salt - 用于签名 callbacks 的盐
  • display_options
    • language - 支付页面的语言
    • iframe - 标志,用于使用 iframe 而不是重定向到 Start 2 Pay 支付页面
    • close_additional_tabs: - 标志,用于关闭所有额外的标签页
    • device - 设备类型 (desktop, mobile)
    • theme - 支付页面的颜色方案 (layout2_white, layout2_black, layout2_dark, layout2_violet)
    • message - 对客户的消息。例如规则,限制等
    • description - 在支付页面上显示的描述。
    • disable_payment_currency - 此参数允许在传入 true 值时,在支付表单上只显示一个指定的货币 (currency),该货币是在创建支付上下文时使用的
  • available_payment_systems - 包含支付方向输入和输出别名的数组,这些别名将可在支付页面上选择。

SDK 使用

要获取支付上下文(支付页面的链接或 iframe),需要使用 getContext 方法。

获取链接的示例

$payInfo['currency'] = 'RUB';
$payInfo['amount'] = '150.00';
$payInfo['invoice'] = '100';
$payInfo['user_id'] = '123456';
$payInfo['selected_payment_system'] = 'bank_cards';

try {
    $API = new \LapayGroup\Start2Pay\API('path/to/config.yml');
    $context = $API->getContext($payInfo);
    
    if (! empty($context['payment_url']) {
        header('Location: '.$context['payment_url']);
    } else {
        // Обработка ошибки получения платежного контекста
    }
}

catch(\Exception $e) {
    // Обработка ошибки обмена с Start 2 Pay
}

在收到 Start 2 Pay 的回调请求进行验证和支付时,也需要检查 JSON 数据中的参数 signature 的签名。为了验证签名,需要使用 validCallbackSignature 方法。该方法接受请求中的 JSON 文本作为输入。

验证签名的示例

try {
    $API = new \LapayGroup\Start2Pay\API('path/to/config.yml');
    $valid = $API->validCallbackSignature($json);
    
    if ($valid) {
        // Подпись верна - обрабатываем callback
    } else {
        // Обрабатываем ошибку подписи
    }
}

catch(\Exception $e) {
    // Обработка ошибки обмена с Start 2 Pay
}