javareact / easypay
支付宝支付、微信支付一行接入
Requires
- php: >=7.1
- ext-bcmath: *
- ext-json: *
- ext-libxml: *
- ext-mbstring: *
- ext-openssl: *
- ext-simplexml: *
- ext-xml: *
- guzzlehttp/guzzle: *
Requires (Dev)
- codeception/codeception: *
- endroid/qrcode: ~1.9
- friendsofphp/php-cs-fixer: ^2.16
- mockery/mockery: ^1.3
- monolog/monolog: ^1.25.1
- phpunit/phpunit: <9.0.0
README
支付宝/微信支付/招商银行 支付/退款/转账/发红包/查账 一行接入
use Payment\Client\Charge; use Payment\Common\PayException; try { $str = Charge::run(支付类型, 配置文件, 支付数据); } catch (PayException $e) { echo $e->errorMessage(); exit; }
目录
重要通知
- 2020-7-22 自动过滤参数中的特殊字符,避免签名错误
- 2020-7-8 兼容PHP7.4
- 2020-5-14: 提醒:支付宝新增公钥证书方式,后续不再支持普通公钥方式,请注意升级
- 目前项目兼容支付宝公钥证书方式和普通公钥方式
EasyPay解决什么问题
EasyPay
的目的是简化大家在对接主流第三方时需要频繁去阅读第三方文档,还经常遇到各种问题。EasyPay
将所有第三方的接口进行了合理的建模分类,对大家提供统一的接入入口,大家只需要关注自身业务并且支付系统设计上。
目前已经集成:支付宝、微信、招商绝大部分功能。 贡献指南
如何使用
安装
当前 EasyPay
项目仅支持 PHP version > 7.0
的版本,并且仅支持通过 composer
进行安装。
需要 PHP
安装以下扩展:
- ext-curl - ext-mbstring - ext-bcmath - package-Guzzle
composer安装方式:
直接在命令行下安装:
composer require "javareact/easypay:*"
通过项目配置文件方式安装:
"require": { "javareact/easypay": "*" }
项目集成
参数选项说明:
- Y: 必须
- N: 非必须
支付宝
配置文件模板
$config = [ 'use_sandbox' => true, // 是否使用沙盒模式 'app_id' => '2016073100130857', 'sign_type' => 'RSA2', // RSA RSA2 // 支付宝公钥字符串 'ali_public_key' => '', // 自己生成的密钥字符串 'rsa_private_key' => '', 'limit_pay' => [ //'balance',// 余额 //'moneyFund',// 余额宝 //'debitCardExpress',// 借记卡快捷 //'creditCard',//信用卡 //'creditCardExpress',// 信用卡快捷 //'creditCardCartoon',//信用卡卡通 //'credit_group',// 信用支付类型(包含信用卡卡通、信用卡快捷、花呗、花呗分期) ], // 用户不可用指定渠道支付当有多个渠道时用“,”分隔 // 与业务相关参数 'notify_url' => 'https://test.cn/notify/ali', 'return_url' => 'https://test.cn', ];
APP支付请求参数
对应channel: \EasyPay\Client::ALI_CHANNEL_APP
条码支付请求参数
对应channel: \EasyPay\Client::ALI_CHANNEL_BAR
查询对账单请求参数
扫码支付请求参数
对应channel: \EasyPay\Client::ALI_CHANNEL_QR
手机网站支付请求参数
对应channel: \EasyPay\Client::ALI_CHANNEL_WAP
电脑网站支付请求参数
对应channel: \EasyPay\Client::ALI_CHANNEL_WEB
交易查询请求参数
退款请求参数
退款查询请求参数
关闭交易请求参数
取消交易请求参数
这个接口与 关闭交易 测试了一下,效果是一样的。具体场景不太清楚,但是官方文档描述是在当面付的时候使用
转账到支付宝请求参数
查询转账到支付宝请求参数
微信
对于每一个微信支持的能力,并不是所有参数都支持了,有些参数绝大多数场景并不需要用到。如果确实需要请自行对源码进行修改。
配置文件模板
$config = [ 'use_sandbox' => false, // 是否使用 微信支付仿真测试系统 'app_id' => 'wxxxxxxxx', // 公众账号ID 'sub_appid' => 'wxxxxxxxx', // 公众子商户账号ID 'mch_id' => '123123123', // 商户id 'sub_mch_id' => '123123123', // 子商户id 'md5_key' => '23423423dsaddasdas', // md5 秘钥 'app_cert_pem' => 'apiclient_cert.pem', 'app_key_pem' => 'apiclient_key.pem', 'sign_type' => 'MD5', // MD5 HMAC-SHA256 'limit_pay' => [ //'no_credit', ], // 指定不能使用信用卡支付 不传入,则均可使用 'fee_type' => 'CNY', // 货币类型 当前仅支持该字段 'notify_url' => 'https://test.cn/v1/notify/wx', 'redirect_url' => 'https://test.cn/', // 如果是h5支付,可以设置该值,返回到指定页面 ];
支付请求参数
对应channel: \EasyPay\Client::WX_CHANNEL_APP、WX_CHANNEL_BAR、WX_CHANNEL_LITE、WX_CHANNEL_PUB、WX_CHANNEL_QR、WX_CHANNEL_WAP
使用时,自行使用上面的字段构建好一个数组,并传入到 \EasyPay\Client
实例对应的方法中。后面均是相同,不在重复。
账单请求参数
关闭交易请求参数
撤销交易请求参数
退款请求参数
退款查询请求参数
资金账单请求参数
交易查询请求参数
付款到零钱请求参数
付款到银行请求参数
付款到零钱/银行查询请求参数
招商银行
配置文件模板
$config = [ 'use_sandbox' => true, // 是否使用 招商测试系统 'branch_no' => 'xxx', // 商户分行号,4位数字 'mch_id' => 'xxxx', // 商户号,6位数字 'mer_key' => 'xxxxxx', // 秘钥16位,包含大小写字母 数字 // 招商的公钥,建议每天凌晨2:15发起查询招行公钥请求更新公钥。 'cmb_pub_key' => 'xxxxx', 'op_pwd' => 'xxxxx', // 操作员登录密码。 'sign_type' => 'SHA-256', // 签名算法,固定为“SHA-256” 'limit_pay' => 'A', // 允许支付的卡类型,默认对支付卡种不做限制,储蓄卡和信用卡均可支付 A:储蓄卡支付,即禁止信用卡支付 'notify_url' => 'https://test.cn/notify/cmb', // 支付成功的回调 'sign_notify_url' => 'https://test.cn/notify/cmb', // 成功签约结果通知地址 'sign_return_url' => 'https://test.cn', // 成功签约结果通知地址 'return_url' => 'https://test.cn', // 如果是h5支付,可以设置该值,返回到指定页面 ];
支付请求参数
查询公钥请求参数
不需要参数,直接条用即可
退款请求参数
查询订单请求参数
已结账单请求参数
退款查询请求参数
对账单查询请求参数
支持的接口
对应到第三方的具体接口
支付宝
- 条码支付
- 扫码支付
- APP支付
- H5支付
- 电脑网站支付
- 退款
- 关闭交易
- 撤销交易 条码/扫码支付会用到
- 交易查询
- 退款查询
- 下载对账单
- 转账到支付宝
- 单笔转账接口
- 支付宝转账查询
- 交易创建 条码/扫码支付会用到
微信
支持 普通商户与服务商两个版本
- 付款码支付
- JSAPI支付
- Native支付
- APP支付
- H5支付
- 小程序支付
- 退款
- 关闭交易
- 撤销交易
- 交易查询
- 退款查询
- 下载对账单
- 下载资金账单
- 转账到银行卡 该接口还有些问题待处理
- 转账到微信零钱
- 银行转账查询
- 微信转账查询