Skip to content

lonquan/easy-umspay

Repository files navigation

EasyUmsPay - 银联商务UMS支付SDK

PHP Version License

为银联商务UMS支付接口提供简单、统一、可靠的PHP SDK。

特性

  • 自助签约模块 - 商户入网、信息变更、状态查询
  • 新购物车支付 - 微信公众号、小程序、H5、APP支付
  • 多种认证方式 - OPEN-ACCESS-TOKEN、OPEN-BODY-SIG、OPEN-FORM-PARAM
  • 加密签名支持 - 3DES、SHA-256、HMAC-SHA256
  • 开箱即用 - 默认Symfony HttpClient和Monolog,支持自定义
  • 类型安全 - PHP 8.4+,完整类型提示,PHPStan Level 8+
  • 测试完善 - 单元测试、集成测试、功能测试

系统要求

  • PHP >= 8.4
  • Composer

安装

composer require lonquan/easy-umspay

快速开始

1. 初始化客户端

use EasyUmsPay\UmsPayClient;
use EasyUmsPay\Config\Environment;

// 使用数组配置(最简单)
$client = new UmsPayClient([
    'env' => Environment::TEST,
    'log_level' => 'debug',
    
    'self_contract' => [
        'accesser_id' => 'your_accesser_id',
        'sign_key' => '123456789012345678901234',
        'iv' => '12345678',
    ],
    
    'shopping_cart' => [
        'app_id' => 'your_app_id',
        'app_key' => 'your_app_key',
        'auth_method' => 'OPEN-BODY-SIG',
        'merchant_no' => 'your_merchant_no',
        'terminal_no' => 'your_terminal_no',
    ],
]);

2. 商户入网(自助签约)

use EasyUmsPay\SelfContract\Enums\DocumentType;
use EasyUmsPay\SelfContract\Enums\MerchantType;

// 上传证照
$response = $client->selfContract()->uploadImage(
    DocumentType::BUSINESS_LICENSE,
    file_get_contents('license.jpg')
);
$picId = $response->getPicId();

// 提交资料(敏感字段自动加密)
$response = $client->selfContract()->uploadData([
    'merchantName' => '测试商户',
    'merchantType' => MerchantType::ENTERPRISE->value,
    'licenseNo' => '91110000123456789X',
    'legalPerson' => '张三',
    'legalIdCard' => '110101199001011234',  // 自动3DES加密
    'contactPhone' => '13800138000',         // 自动3DES加密
    'bankAccount' => '6222021234567890123',  // 自动3DES加密
    'licensePicId' => $picId,
]);
$tradeNo = $response->getTradeNo();

// 查询状态
$response = $client->selfContract()->queryStatus($tradeNo);
if ($response->getApplyStatus()->isSuccess()) {
    echo "入网成功!商户号: {$response->getMerchantNo()}";
}

3. 发起支付(新购物车)

// 微信公众号支付
$response = $client->shoppingCart()->webPay()->pay([
    'mchntOrderId' => 'ORDER' . time(),
    'amount' => 100,
    'subject' => '测试商品',
    'body' => '商品描述',
    'openId' => 'user_openid',
    'notifyUrl' => 'https://your-domain.com/notify',
]);

// 微信小程序支付
$response = $client->shoppingCart()->miniPay()->pay([
    'mchntOrderId' => 'ORDER' . time(),
    'amount' => 100,
    'subject' => '测试商品',
    'body' => '商品描述',
    'openId' => 'user_openid',
    'notifyUrl' => 'https://your-domain.com/notify',
]);

// H5支付(移动网页)
$response = $client->shoppingCart()->h5Pay()->pay([
    'mchntOrderId' => 'ORDER' . time(),
    'amount' => 100,
    'subject' => '测试商品',
    'body' => '商品描述',
    'notifyUrl' => 'https://your-domain.com/notify',
    'returnUrl' => 'https://your-domain.com/return',
]);

// APP支付
$response = $client->shoppingCart()->appPay()->pay([
    'mchntOrderId' => 'ORDER' . time(),
    'amount' => 100,
    'subject' => '测试商品',
    'body' => '商品描述',
    'notifyUrl' => 'https://your-domain.com/notify',
]);

文档

自助签约模块

新购物车支付模块

开发

# 安装依赖
composer install

# 运行所有测试
composer test

# 运行特定类型的测试
composer test:unit          # 单元测试
composer test:integration   # 集成测试
composer test:feature       # 功能测试
composer test:coverage      # 生成覆盖率报告

# 静态分析
composer phpstan                # 运行静态分析
composer phpstan:baseline       # 生成baseline文件

# 代码格式化
composer check-style        # 检查代码风格
composer fix-style          # 自动修复代码风格

# 全部检查(风格 + 静态分析 + 测试)
composer check

# 自动修复
composer fix

测试

# 使用composer命令(推荐)
composer test               # 所有测试
composer test:unit         # 单元测试
composer test:integration  # 集成测试
composer test:feature      # 功能测试
composer test:coverage     # 代码覆盖率

# 或直接使用PHPUnit
./vendor/bin/phpunit
./vendor/bin/phpunit --testsuite=Unit
./vendor/bin/phpunit --coverage-html build/coverage

贡献

欢迎提交Issue和Pull Request!

许可证

MIT License. 详见 LICENSE 文件。

致谢

感谢银联商务提供的支付服务。

支持

如有问题,请:

  1. 查看文档
  2. 搜索已有Issue
  3. 提交新Issue

About

一个 ChinaUMS(银联商务)的 PHP SDK

Resources

License

Stars

Watchers

Forks

Packages

No packages published