assist/assist_ru_php_core

1.0.0 2024-08-02 13:23 UTC

This package is not auto-updated.

Last update: 2024-09-25 09:25:51 UTC


README

PHP库,用于与支付集成商 Assist.ru 进行交互

内容

安装

$ composer require assist/assist_ru_php_core

使用

创建请求

准备客户端配置

$config = new \Assist\Config\Config([
    //ID предприятия
    'shop_id' => 999999,
    //Логин аккаунта предприятия
    'login' => 'login',
    //Пароль аккаунта предприятия
    'password' => 'password',
]);

创建客户端类实例并传递配置

$client = new \Assist\Client($config);

创建请求类实例并传递请求参数

$createPayment = new \Assist\Request\CreatePayment\CreatePaymentRequest([
    'OrderNumber' => 'number',
    'OrderAmount' => 'amount',
    'ChequeItems' => '',
]);

调用请求方法并将请求实例传递给它

$response = $client->createPayment($createPayment);

获取响应数据

所有响应类都有 getResponseData() 方法,该方法返回包含响应数据的数组

$responseData = $response->getResponseData();

数组结构符合 Assist API 响应 JSON 结构

https://docs.assist.ru/swagger/?urls.primaryName=payments.demo.paysecure.ru#

每个参数也有相应的获取器

$response = $client->createPayment($createPaymentRequest);

$paymentUrl = $response->getUrl();
$orderState = $response->getOrderState();
$expirationTime = $response->getExpirationTime();

签名和校验值

用于生成签名 (Signature) 和校验值 (Checkvalue) 的助手类是 Assist\Helpers\SignHelper。

签名 (Signature)

在 Assist\Helpers\SignHelper 中提供了一个用于生成签名 (Signature) 的方法 getSignature(array $params, string $privateKey);

该方法接受两个参数:用于生成签名的参数数组 $params 和私钥字符串 $privateKey。

必选参数

  • Merchant_ID
  • OrderNumber
  • OrderAmount
  • OrderCurrency

可选参数

  • OrderMaxPoints
  • CustomerNumber
  • Disable3DS
  • Prepayment

$params 数组中的参数以键 => 值的格式传递。

校验值 (Checkvalue)

在 Assist\Helpers\SignHelper 中提供了一个用于生成校验值 (Checkvalue) 的方法 getCheckValue(array $params, string $salt);

该方法接受两个参数:用于生成签名的参数数组 $params 和密钥字符串 $salt。

必选参数

  • Merchant_ID
  • OrderNumber
  • OrderAmount
  • OrderCurrency

可选参数

  • OrderMaxPoints
  • CustomerNumber
  • Disable3DS
  • Prepayment

$params 数组中的参数以键 => 值的格式传递。

配置

客户端 SDK 的基本配置

Config 类的可用参数列表

请求配置

配置示例

$config = [
    'Merchant_ID' => 'string',
    'OrderNumber' => 'string',
    'OrderAmount' => 0,
    'ChequeItems' => [
        [
          "id" => "string",
          "product" => "string",
          "name" => "string",
          "price" => 0,
          "amount" => 0,
          "quantity" => 0,
          "tax" => "string",
          "еancode" => "string",
          "uncode" => "string",
          "gs1code" => "string",
          "furcode" => "string",
          "egaiscode" => "string",
          "hscode" => "string",
          "subjtype" => 0
        ]
    ]
];

$createPaymentRequest = new \Assist\Request\CreatePayment\CreatePaymentRequest($config);

普通支付 (Assist\Request\CreatePayment\CreatePaymentRequest)

配置符合请求参数 /pay/payrequest.cfm

"/pay/payrequest.cfm" 文档

确认支付 (Assist\Request\CreatePayment\ChargeRequest)

配置符合请求参数 /charge/charge.cfm

"/charge/charge.cfm" 文档

周期性支付 (Assist\Request\RecurrentPayment\RecurrentPaymentRequest)

配置符合请求参数 /recurrent/rp.cfm

"/recurrent/rp.cfm" 文档

取消支付 (Assist\Request\CreatePayment\CancelRequest)

配置符合请求参数 /cancel/wscancel.cfm

"/cancel/wscancel.cfm" 文档

获取结果 (Assist\Request\OrderResult\OrderResultRequest)

配置符合请求参数 /orderresult/orderresult.cfm

"/orderresult/orderresult.cfm" 文档

获取订单状态 (Assist\Request\OrderState\OrderStateRequest)

配置符合请求参数 /orderstate/orderstate.cfm

"/orderstate/orderstate.cfm" 文档

处理包含错误的 http 响应

除 200 代码外的 HTTP 响应代码由 handlerError() 处理,该函数抛出相应的响应代码异常。

从 Assist\Exceptions\HttpException 继承的异常类有 getResponseHeaders() 和 getResponseBody() 方法。

测试

在项目中应用 pest 库进行 SDK 测试

启动测试

$ ./vendor/bin/pest