lokir / cpcn-sdk
CPCN Payment SDK for PHP & Laravel
v1.0.0
2025-04-29 05:51 UTC
Requires
- php: >=7.4
- guzzlehttp/guzzle: ^7.0
- illuminate/support: ^8.0|^9.0|^10.0
This package is not auto-updated.
Last update: 2025-04-29 06:52:44 UTC
README
支持 Laravel / PHP 快速集成中金支付接口。
封装了签名、验签、发起请求、回调处理、异常捕获、日志记录功能。
📁 项目目录结构
cpcn-sdk/
├── composer.json
├── config/
│ └── cpcn.php
├── src/
│ ├── Client.php
│ ├── Config.php
│ ├── CpcnServiceProvider.php
│ ├── Helpers/
│ │ ├── ArrayHelper.php
│ │ └── SignHelper.php
│ ├── Service/
│ │ ├── AccountService.php
│ │ ├── PaymentService.php
│ │ └── NotifyService.php
│ ├── Console/
│ │ ├── GenerateOrderCommand.php
│ │ ├── GenerateAccountCommand.php
│ │ └── PingCommand.php
│ ├── Exception/
│ │ ├── CpcnException.php
│ │ ├── SignatureException.php
│ │ ├── GatewayException.php
│ │ └── HttpRequestException.php
├── README.md
└── LICENSE (optional)
⚙️ 安装方式
- 手动下载 SDK 项目目录。
- 或者在你的
composer.json
中添加本地路径仓库引用:
"repositories": [ { "type": "path", "url": "./packages/cpcn-sdk" } ], "require": { "cpcn/cpcn-sdk": "*" }
然后执行:
composer require lokir/cpcn-sdk
🔧 Laravel项目中配置
发布配置文件:
php artisan vendor:publish --provider="CpcnSdk\CpcnServiceProvider"
编辑 config/cpcn.php
,配置下列信息:
return [ 'institution_id' => 'your institution id', 'private_key_path' => storage_path('cpcn/private.pem'), 'public_key_path' => storage_path('cpcn/public.pem'), 'gateway_url' => 'https://test.cpcn.com.cn/Gateway/InterfaceII', 'log_enabled' => true, ];
🚀 使用示例
1. 支付示例
use CpcnSdk\Service\PaymentService; $paymentService = app(PaymentService::class); $response = $paymentService->pay([ 'UserID' => '100001', 'Amount' => 10000, 'TxSN' => now()->format('YmdHis') . rand(100,999), ]); dd($response);
2. 回调验签示例
use CpcnSdk\Service\NotifyService; $notifyService = app(NotifyService::class); data = $notifyService->verifyNotification(request()->all()); dd($data); // 验签成功返回解析数据
3. Artisan命令
生成支付示例订单:
php artisan cpcn:generate-order
生成开户示例数据:
php artisan cpcn:generate-account
检测接口连通性:
php artisan cpcn:ping
🛠️ 异常捕获示例
符合PSR标准,给出统一的异常捕获:
use CpcnSdk\Exception\CpcnException; try { $paymentService = app(PaymentService::class); $response = $paymentService->pay([...]); } catch (CpcnException $e) { logger()->error('CPCN调用异常:' . $e->getMessage()); return response()->json(['error' => $e->getMessage()], 500); }
📜 License
MIT License