allesx / cgb-payment-sdk
广发银行(CGB)支付SDK - 支持RSA/SM2/SM4加密的支付网关
Installs: 8
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/allesx/cgb-payment-sdk
Requires
- php: >=8.1
- ext-bcmath: *
- ext-gmp: *
- ext-openssl: *
- genkgo/php-asn1: ^2.5
- guzzlehttp/guzzle: ^7.0
- lpilp/guomi: ^2.0
- psr/log: ^1.1 || ^2.0 || ^3.0
Requires (Dev)
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^9.5 || ^10.0
This package is auto-updated.
Last update: 2025-11-22 14:46:30 UTC
README
广发银行(CGB)银企直联支付 SDK。支持请求签名(RSA-SHA1/SHA256)、SM4 对称加解密、银行公钥加密密钥、响应验签与解密、操作员密码 SM2 信封生成(可选)。
安装
Packagist(建议):
composer require allesx/cgb-payment-sdk
Monorepo(本仓库内 path 依赖):
composer update allesx/cgb-payment-sdk
快速开始
use Allesx\CgbPayment\Client\CgbClient; use Monolog\Handler\StreamHandler; use Monolog\Logger; $config = [ 'app_id' => '907kbk2aogw2', 'ent_cst_no' => '60000007905', 'ent_user_id' => '100001', 'ent_password' => '1q2w3e4r', 'gateway_url' => 'https://ebank-yd03.test.cgbchina.com.cn:49081/deib/E1DEIB/E101/', 'version' => '2.0.0', 'private_key' => __DIR__ . '/data/cert/merchant.pfx', // 或 PEM 字符串 'private_key_pass' => 'your_password', 'public_key' => __DIR__ . '/data/cert/bank.cer', // 银行公钥证书 'bank_psw_enc_pub' => 'SM2_PUBLIC_KEY_HEX', // 可选:操作员密码加密公钥 'sign_algo' => 'SHA1', // 或 SHA256 'timeout' => 30, 'mac_address' => '', // 可选:固定上送 ]; $logger = new Logger('cgb'); $logger->pushHandler(new StreamHandler(__DIR__ . '/cgb.log')); $client = new CgbClient($config, $logger); // 示例:交易码 0021(行内/行外付款) $body = [ 'tradeTypeNo' => 'AC0ZA001', 'entBizDt' => '20240718', 'entBizId' => '202407180021091902001', 'entCstNo' => '60000007905', 'payerAcctNo' => '100001', 'payerAcctName' => '测试公司', 'remark' => '备注', 'payeeAcctNo' => '1111222233334444', 'payeeAcctName' => '收款公司', 'payeeBkFlag' => 'T', 'payeeBkNo' => '307100003019', 'payeeBkName' => '平安银行股份有限公司北京分行', 'amount' => '1707.50', 'postscript' => '附言', 'addWord' => '11', 'acBkShowFlag' => '', ]; $res = $client->request('0021', $body); var_dump($res['parsed'] ?? $res);
配置项
- app_id: 平台分配的 appId
- ent_cst_no: 企业客户号
- ent_user_id: 企业操作员
- ent_password: 操作员密码(生成密码信封)
- gateway_url: 银行网关地址(以 E101/ 结尾)
- version: 协议版本(默认 2.0.0)
- private_key: 商户私钥(PFX/PKCS12 文件路径或 PEM 字符串)
- private_key_pass: 私钥密码
- public_key: 银行公钥证书(.cer 或 PEM)
- bank_psw_enc_pub: 银行下发的“操作员密码加密公钥”(16进制 SM2 公钥),可选
- sign_algo: SHA1 或 SHA256
- timeout: 请求超时秒数
- mac_address: 覆盖上送 MAC(可选)
特性
- 请求签名:与银行侧保持一致的「先哈希,再十六进制字符串签名」
- 对称加解密:默认 SM4-ECB,兼容多种响应密文格式尝试解密
- 密钥加密/解密:使用银行公钥加密对称密钥、商户私钥解密
- 响应验签:与请求签名一致的验签流程,支持 SHA1 回退
- 操作员密码信封:使用 SM2 公钥生成 DER-HEX 格式,前缀 20 个 '='
测试
composer install vendor/bin/phpunit -c packages/cgb-payment-sdk/phpunit.xml.dist
许可
MIT