lbsfei/wxpay
Composer 安装命令:
composer require lbsfei/wxpay
包简介
微信支付 PHP SDK
README 文档
README
对微信支付开发者文档中给出的API进行了封装。
Lbsfei\WXPay类下提供了对应的方法:
| 方法名 | 说明 |
|---|---|
| microPay | 刷卡支付 |
| unifiedOrder | 统一下单 |
| orderQuery | 查询订单 |
| reverse | 撤销订单 |
| closeOrder | 关闭订单 |
| refund | 申请退款 |
| refundQuery | 查询退款 |
| downloadBill | 下载对账单 |
| report | 交易保障 |
| shortUrl | 转换短链接 |
| authCodeToOpenid | 授权码查询openid |
- 参数为关联数组,返回类型也是关联数组。
- 方法内部会将参数会转换成含有
appid、mch_id、nonce_str、sign_type和sign的XML; - 默认使用MD5进行签名;
- 通过HTTPS请求得到返回数据后会对其做必要的处理(例如验证签名,签名错误则抛出异常)。
- 对于downloadBill,无论是否成功都返回Map,且都含有
return_code和return_msg。若成功,其中return_code为SUCCESS,data对应对账单数据。暂不支持下载压缩格式的对账单。
安装
$ composer require "feiger/wxpay:0.0.5" -vvv
php必须启用curl,并在php.ini中配置curl.cainfo的值rootca.pem的绝对路径。
示例
接口的使用方法是一致的,例如统一下单:
require __DIR__.'/vendor/autoload.php'; use Lbsfei\WXPay; use Lbsfei\WXPayConstants; use Lbsfei\WXPayUtil; $wxpay = new WXPay( 'wx888888888', // appid '22222222', // mch id '123456781234567812345678', // key '/path/to/apiclient_cert.pem', '/path/to/apiclient_key.pem', 6000); // 超时时间,毫秒 $resp = $wxpay->orderQuery(array( 'out_trade_no' => '201610265257070987061763', 'total_fee' => 1, 'body' => '腾讯充值中心-QQ会员充值', 'spbill_create_ip' => '123.12.12.123', 'trade_type' => 'NATIVE', 'notify_url' => 'https://www.example.com/wxpay/notify' )); var_dump($resp);
关于签名
默认使用MD5签名。查询订单示例:
require __DIR__.'/vendor/autoload.php'; use Lbsfei\WXPay; use Lbsfei\WXPayConstants; use Lbsfei\WXPayUtil; $wxpay = new WXPay( 'wx888888888', // appid '22222222', // mch id '123456781234567812345678', // key '/path/to/apiclient_cert.pem', '/path/to/apiclient_key.pem', 6000); // 超时时间,毫秒 $resp = $wxpay->orderQuery(array('out_trade_no' => '201610265257070987061763')); var_dump($resp);
使用HMAC-SHA256做签名查询订单:
$wxpay = new WXPay( 'wx888888888', // appid '22222222', // mch id '123456781234567812345678', // key '/path/to/apiclient_cert.pem', '/path/to/apiclient_key.pem', 6000, // 超时时间,毫秒 WXPayConstants::SIGN_TYPE_HMACSHA256); $resp = $wxpay->orderQuery(array('out_trade_no' => '201610265257070987061763')); var_dump($resp);
沙箱环境
查询订单示例:
$useSandbox = true; $wxpay = new WXPay( 'wx888888888', // appid '22222222', // mch id '123456781234567812345678', // 沙箱环境key '/path/to/apiclient_cert.pem', '/path/to/apiclient_key.pem', 6000, // 超时时间,毫秒 WXPayConstants::SIGN_TYPE_MD5, $useSandbox); var_dump( $wxpay->orderQuery(array('out_trade_no' => '201610265257070987061763')) );
其他
若需要生成请求的XML数据,可以这样:
$data = array( 'bill_date' => '20140603', 'bill_type' => 'ALL', 'tar_type' => 'GZIP' ); $wxpay = new WXPay( 'wx888888888', // appid '22222222', // mch id '123456781234567812345678', // key '/path/to/apiclient_cert.pem', '/path/to/apiclient_key.pem', 6000); // 超时时间,毫秒 $data = $wxpay->fillRequestData($data); // 会添加appid、mch_id、sign_type、sign、nonce_str var_dump($data); echo "\n"; echo \Lbsfei\WXPayUtil::array2xml($data);
收到支付结果通知时,需要验证签名,可以这样做:
$wxpay = new WXPay( 'wx888888888', // appid '22222222', // mch id "123456781234567812345678", // key '/path/to/apiclient_cert.pem', '/path/to/apiclient_key.pem', 6000); $xml = "<xml> ...... <sign>9A0A8659F005D6984697E2CA0A9CF3B7</sign> </xml>"; $data = WXPayUtil::xml2array($xml); // $data必须有sign字段,也就是return_code必须为SUCCESS。否则返回false var_dump($wxpay->isPayResultNotifySignatureValid($data)); // 布尔类型,标识签名是否正确
更多见 tests/WXPayTest.php 。
兼容性
在 PHP 5.6.21 中测试通过。
License
BSD
lbsfei/wxpay 适用场景与选型建议
lbsfei/wxpay 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 18 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 12 月 26 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「pay」 「sdk」 「wechat」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 lbsfei/wxpay 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 lbsfei/wxpay 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 lbsfei/wxpay 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
WeChat OAuth SDK
微信SDK
Payyo Gateway for the Omnipay payment processing library
钉钉、企业微信、飞书 自定义群组机器人。支持链式语法创建发送消息。支持文本、Markdown、图片、文件、图文、卡片等消息。
The wechat extension for the Yii framework
Библиотека для приема платежей через Альфабанк.
统计信息
- 总下载量: 18
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 5
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD
- 更新时间: 2018-12-26