标签: Payment 支付聚合系统
Payment是一个php版本的支付聚合第三方sdk,集成了微信支付、支付宝支付、招商一网通支付。提供统一的调用接口,方便快速接入各种支付、查询、退款、转账能力。
Payment 的目的是简化大家在对接主流第三方时需要频繁去阅读第三方文档,还经常遇到各种问题。Payment 将所有第三方的接口进行了合理的建模分类,对大家提供统一的接入入口,大家只需要关注自身业务并且支付系统设计上。
目前已经集成:支付宝、微信、招商绝大部分功能。
安装
当前 Payment 项目仅支持 PHP version > 7.0 的版本,并且仅支持通过 composer 进行安装。
需要 PHP 安装以下扩展:
- ext-curl
- ext-mbstring
- ext-bcmath
- package-Guzzle
composer安装方式:
直接在命令行下安装:
composer require "riverslei/payment:*"
通过项目配置文件方式安装:
"require": {
"riverslei/payment": "*"
}
按照上面的步骤完成安装后,即可在项目中使用。
对于整个过程,提供了唯一的入口类 \Payment\Client,每一个渠道,均只介绍 APP支付 与 异步/同步通知 该如何接入。会重点说明每个请求支持的参数。
$config = [
// 配置信息,各个渠道的配置模板见对应子目录
];
// 请求参数,完整参数见具体表格
$payData = [
'body' => 'test body',
'subject' => 'test subject',
'trade_no' => 'trade no',// 自己实现生成
'time_expire' => time() + 600, // 表示必须 600s 内付款
'amount' => '5.52', // 微信沙箱模式,需要金额固定为3.01
'return_param' => '123',
'client_ip' => isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '127.0.0.1', // 客户地址
];``
// 使用
try {
$client = new \Payment\Client(\Payment\Client::WECHAT, $wxConfig);
$res = $client->pay(\Payment\Client::WX_CHANNEL_APP, $payData);
} catch (InvalidArgumentException $e) {
echo $e->getMessage();
exit;
} catch (\Payment\Exceptions\GatewayException $e) {
echo $e->getMessage();
var_dump($e->getRaw());
exit;
} catch (\Payment\Exceptions\ClassNotFoundException $e) {
echo $e->getMessage();
exit;
} catch (Exception $e) {
echo $e->getMessage();
exit;
}
// 自己实现一个类,继承该接口
class TestNotify implements \Payment\Contracts\IPayNotify
{
/**
* 处理自己的业务逻辑,如更新交易状态、保存通知数据等等
* @param string $channel 通知的渠道,如:支付宝、微信、招商
* @param string $notifyType 通知的类型,如:支付、退款
* @param string $notifyWay 通知的方式,如:异步 async,同步 sync
* @param array $notifyData 通知的数据
* @return bool
*/
public function handle(
string $channel,
string $notifyType,
string $notifyWay,
array $notifyData
) {
//var_dump($channel, $notifyType, $notifyWay, $notifyData);exit;
return true;
}
}
$config = [
// 配置信息,各个渠道的配置模板见对应子目录
];
// 实例化继承了接口的类
$callback = new TestNotify();
try {
$client = new \Payment\Client(\Payment\Client::ALIPAY, $config);
$xml = $client->notify($callback);
} catch (InvalidArgumentException $e) {
echo $e->getMessage();
exit;
} catch (\Payment\Exceptions\GatewayException $e) {
echo $e->getMessage();
exit;
} catch (\Payment\Exceptions\ClassNotFoundException $e) {
echo $e->getMessage();
exit;
} catch (Exception $e) {
echo $e->getMessage();
exit;
}
从上面的例子简单总结下,所有的支持的能力,通过 \Payment\Client 对外暴露方法;所有需要的常量也在这个类中进行了定义。其次需要一个 $config,关于config的模板,在每个渠道下面去看。最后一个传入请求的参数,完整的参数会在每个渠道中列出来,需要说明的是这些参数名字根据第三方文档部分进行了改写。在使用的时候请注意。
配置文件模板
$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://dayutalk.cn/notify/ali',
'return_url' => 'https://dayutalk.cn',
];
对于每一个微信支持的能力,并不是所有参数都支持了,有些参数绝大多数场景并不需要用到。如果确实需要请自行对源码进行修改。
配置文件模板
$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://dayutalk.cn/v1/notify/wx',
'redirect_url' => 'https://dayutalk.cn/', // 如果是h5支付,可以设置该值,返回到指定页面
];
配置文件模板
$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://dayutalk.cn/notify/cmb', // 支付成功的回调
'sign_notify_url' => 'https://dayutalk.cn/notify/cmb', // 成功签约结果通知地址
'sign_return_url' => 'https://dayutalk.cn', // 成功签约结果通知地址
'return_url' => 'https://dayutalk.cn', // 如果是h5支付,可以设置该值,返回到指定页面
加载全部内容
iWebMall多用户商城系统 v1.311.52 MB155人下载iWebMall 是一款高性能高扩展能力的开源 LAMP 电子商务软件,定位为大中型电子商务平台软件,服务于有建立电子商务需求的商业客户。这些商业客户不必学习任何计算机编程代码知识,
下载N168多用户微信公众平台 v7.0144.03 .MB110人下载更新了用户独立的图片管理、微支付、微信打印、渠道二维码、 摇一摇活动、微信多客服、 粉丝服务客服、微信墙。支持在线一键升级服务。 说明: 1、你先要有自己的空间域名;
下载微信超级人脉三级分销互粉系统 v3.633.42 .MB107人下载该软件是采用php+MySQL进行开发的微信分销系统。 1、数据库连接地址:PublicConfconfig.php 2、微信菜单修改:PublicConfbutton_config.php,然后“微信管理”-“菜单管理”-“重新生成菜单”。
下载S-CMS电子商城系统(含微信小程序) v3.0 bulid2018121112.11 MB107人下载S-CMS电子商城系统(双语带手机版))以php+mysql进行开发,网站安装简单、快捷。 程序特色: 一、使搜索引擎更加容易抓取和索引 二、提供更多的功能,提高用户的友好体验 三、可用性
下载商淘软件B2B2C多用户商城系统 v3.3.1171.63 MB107人下载商淘软件B2B2C多用户商城系统是一款基于THINKPHP 5.1框架打造的B2B2C电商平台,是目前完善度领先的电商管理平台标准化产品,系统主要功能采用高内聚,辅助功能插件式实现,全系统拥有
下载发货100知识付费文档 APP小程序 免费版17.71MB107人下载 发货100文章付费阅读系统(含小程序)是一个以fahuo100为核心进行开发的知识付费系统网站模板。
下载仿九块邮免费淘宝客程序 v6.026.87 .MB105人下载杨他他淘宝客采用thinkphp框架开发,程序与模板分离,便于二次开发与管理,此次免费分享版提供一套仿九块邮模板,后台自带商品采集功能,用户只需要在后台填写自己的淘点金代码
下载Ke361开源淘宝客系统 v1.0 bulid0120 9.26 MB103人下载Ke361是一个开源的淘宝客系统,基于最新的ThinkPHP3.2版本开发,提供更方便、更安全的WEB应用开发体验,采用了全新的架构设计和命名空间机制, 融合了模块化、驱动化和插件化的设计理念于一体,以帮助想做淘宝客而技术水平不高的朋友。突破了传统淘宝客程序
下载Niushop开源商城系统 v1.02 beta 20170619 39.86 MB103人下载Niushop商城是全国首创集 【B2B2C多用户商城】 + 【微信微分销】 + 【电商平台招商运营 + iOS 、Android多平台客户端】 PHP开源电商系统。Niushop采用ThinkPHP5.0 + MySQL 开发语言,完全面向对象的
下载iWebShop开源商城系统 v5.5.19030312.58 MB103人下载iWebShop是一款基于PHP语言及MYSQL数据库开发的B2B2C单用户和多用户开源免费的商城系统,系统支持平台自营和多商家入驻、集成微信商城、手机商城、移动端APP商城、三级分销、微信小程
下载