<h1 align="center">Payment使用文档</h1>
# JetBrains OS licenses
`payment` had been being developed with PhpStorm under the free JetBrains Open Source license(s) granted by JetBrains s.r.o., hence I would like to express by thanks here.
[![Stargazers over time](./jetbrains-variant-4.svg)](https://www.jetbrains.com/?from=ABC)
[![Software license][ico-license]](LICENSE)
[![Latest development][ico-version-dev]][link-packagist]
[![Monthly installs][ico-downloads-monthly]][link-downloads]
老版本文档:http://helei112g.github.io/payment
新版本文档如下
## Stargazers over time
[![Stargazers over time][starchart-cc]](https://starchart.cc/helei112g/payment)
-----
# 联系&打赏
[打赏名单](SUPPORT.md)
请大家使用时根据示例代码来,有bug直接提交 `issue`;**提供付费技术支持**。
<div style="margin:0 auto;">
<p align="center" style="margin:0px;"><img width="60%" src="https://dayutalk.cn/img/pub-qr.jpeg?v=123"></p>
<p align="center" style="margin:0px;"><img width="60%" src="https://dayutalk.cn/img/pay-qr.jpeg"></p>
</div>
# 目录
- [公告](#公告)
- [重要通知](#重要通知)
- [计划](#计划)
- [Payment解决什么问题](#Payment解决什么问题)
- [如何使用](#如何使用)
- [安装](#安装)
- [项目集成](#项目集成)
- [设计支付系统](#设计支付系统)
- [支持的接口](#支持的接口)
- [贡献指南](#贡献指南)
- [代码设计](#代码设计)
- [接入支付指南](#接入支付指南)
- [第三方文档](#第三方文档)
- [License](#License)
# 公告
第三方支付的一些重要更新提示,以及项目相关的计划信息。
## 重要通知
1. 2019-04: **提醒:微信CA证书进行了更新,请更新项目到最新版本。否则5月29日后,将无法支付**
> 官方公告: https://pay.weixin.qq.com/index.php/public/cms/content_detail?lang=zh&id=56602
## 计划
1. 2019/3/28 开始重构整个项目,doing... ...
> 重构后的项目与 `4.x` 以前的版本不兼容,请使用者注意!
# Payment解决什么问题
`Payment` 的目的是简化大家在对接主流第三方时需要频繁去阅读第三方文档,还经常遇到各种问题。`Payment` 将所有第三方的接口进行了合理的建模分类,对大家提供统一的接入入口,大家只需要关注自身业务并且支付系统设计上。
目前已经集成:支付宝、微信、招商绝大部分功能。也欢迎各位贡献代码。 [贡献指南](#贡献指南)
# 如何使用
## 安装
当前 `Payment` 项目仅支持 `PHP version > 7.0` 的版本,并且仅支持通过 `composer` 进行安装。
**需要 `PHP` 安装以下扩展:**
```txt
- ext-curl
- ext-mbstring
- ext-bcmath
- package-Guzzle
```
**composer安装方式:**
直接在命令行下安装:
```bash
composer require "riverslei/payment:*"
```
通过项目配置文件方式安装:
```yaml
"require": {
"riverslei/payment": "*"
}
```
## 项目集成
按照上面的步骤完成安装后,即可在项目中使用。
对于整个过程,提供了唯一的入口类 `\Payment\Client`,每一个渠道,均只介绍 `APP支付` 与 `异步/同步通知` 该如何接入。会重点说明每个请求支持的参数。
**APP支付demo**
```php
$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;
}
```
**异步/同步通知**
```php
// 自己实现一个类,继承该接口
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的模板,在每个渠道下面去看。最后一个传入请求的参数,完整的参数会在每个渠道中列出来,需要说明的是这些参数名字根据第三方文档部分进行了改写。在使用的时候请注意。
参数选项说明:
- Y: 必须
- N: 非必须
### 支付宝
**配置文件模板**
```php
$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',
];
```
#### APP支付请求参数
> 对应channel: \Payment\Client::ALI_CHANNEL_APP
字段 | 解释 | 必须
---|---|---
amount | 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000] | Y
goods_type | 商品主类型 :0-虚拟类商品,1-实物类商品 | Y
body | 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。 | Y
subject | 商品的标题/交易标题/订单标题/订单关键字等。 | Y
product_code | 销售产品码,商家和支付宝签约的产品码 | N
trade_no | 商户网站唯一订单号 | N
promo_params | 优惠参数 注:仅与支付宝协商后可用 | N
return_params | 公用回传参数,如果请求时传递了该参数,则返回给商户时会回传该参�
没有合适的资源?快使用搜索试试~ 我知道了~
商家入驻功能CRMEB-Mer-v2.2.1(20230918)多商户版本 同城配送积分兑换 社区短视频(安装搭建好直运营)
共2000个文件
js:977个
json:430个
md:234个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 105 浏览量
2023-10-20
00:26:23
上传
评论 1
收藏 179.46MB ZIP 举报
温馨提示
多商户商家入驻功能 CRMEB_Mer_v2.2.1(20230918) 1、新增付费会员 2、新增社区发布短视频 3、新增商品参数 4、新增多件商品多次核销功能 5、新增取消退货退款申请 6、新增支付宝支付充值余额 7、新增城市数据,方便地址数据随时补充添加; 8、新增商品列表展示已售罄商品 9、新增平台价格说明 功能修复: 1、修复首页轮播图的指示器样式 2、修复当总后台装修页店铺街样式选择第3种时,移动端店铺图片显示问题; 3、修复平台后台批量审核代码问题 4、修复直播后台改小助手报错; 5、修复商户分账申请,点击审核报错; 6、修复PC端用户注册时获取不到验证码问题; 7、修复订单多次退款,最终退款金额计算问题 8 、修复等级分销员页面样式展示问题 9、修复平台优惠券优惠占比计算问题 10、修复优惠券退款返还问题 11、修复移动端商家订单管理用手机号搜索 12、修复社区分类部分功能报错 13、修复移动端或采集商品提示限购报错 14、修复商品详情报错
资源推荐
资源详情
资源评论
收起资源包目录
商家入驻功能CRMEB-Mer-v2.2.1(20230918)多商户版本 同城配送积分兑换 社区短视频(安装搭建好直运营) (2000个子文件)
app.7896484b.css 342KB
app.a91493f9.css 339KB
app.5192572a.css 275KB
chunk-5877e83e.1411e625.css 118KB
chunk-08560a7f.39aa7fee.css 104KB
chunk-690c5066.3cf0a865.css 104KB
chunk-4c49da14.419f662f.css 101KB
index.63b34199.css 94KB
chunk-71f55998.eed800a1.css 57KB
chunk-53fc846a.95ecb098.css 56KB
ueditor.css 43KB
chunk-1df44c97.59473f2a.css 40KB
ueditor.min.css 34KB
iconfont.css 31KB
iconfont.css 31KB
chunk-libs.83d1b48d.css 29KB
chunk-libs.83d1b48d.css 29KB
chunk-libs.d369da27.css 21KB
video-js.css 21KB
image.css 18KB
chunk-00aee88c.374f3519.css 17KB
chunk-49b947a3.5d9b6a6c.css 15KB
video.css 15KB
chunk-4d060c6c.ab7bef59.css 15KB
attachment.css 14KB
video-js.min.css 11KB
base.css 10KB
base.css 10KB
chunk-96a2bd22.2cc70c56.css 10KB
install.css 10KB
chunk-2ed0ad82.1dc5a9b5.css 7KB
shCoreDefault.css 7KB
chunk-6cb8769c.dd5c45e6.css 7KB
chunk-b5ba7200.f98d6d49.css 6KB
chunk-0012bcd5.31e2e492.css 5KB
chunk-7fd19c67.fd985853.css 5KB
chunk-0743e9d2.a196665b.css 5KB
chunk-4674d86b.4da9ffa4.css 5KB
chunk-86aa3310.08c026cc.css 5KB
chunk-3c5a92b1.e81f2d27.css 5KB
chunk-7f788446.d83ac76c.css 5KB
chunk-commons.81c9425b.css 5KB
chunk-5dc0321c.8070ca18.css 5KB
chunk-24421f68.00bbc110.css 4KB
chunk-96a36762.884a5ac3.css 4KB
chunk-6014286c.b39dca88.css 4KB
chunk-34b0d603.5327062f.css 4KB
chunk-42019268.6c4b783b.css 4KB
scrawl.css 4KB
chunk-400765d8.761b8686.css 4KB
chunk-b3c41a5a.1e4eb5e6.css 4KB
chunk-7756d494.2a771445.css 3KB
chunk-816cf3d6.e9910434.css 3KB
chunk-6de3d017.31c5df9f.css 3KB
htmlDescriptor.css 3KB
chunk-commons.6015788b.css 3KB
codemirror.css 3KB
chunk-7ed38abb.d0274e70.css 3KB
charts.css 3KB
chunk-1ebae1f9.6ea21248.css 2KB
chunk-2bd5d6d2.d2c206a4.css 2KB
homepage.css 2KB
background.css 2KB
chunk-688a3a13.14681423.css 2KB
chunk-a81b757c.eadef0f3.css 2KB
chunk-122f3ddc.a6fd3c2c.css 2KB
chunk-0882709c.9a020fea.css 2KB
chunk-2cecc78f.7d06acaa.css 2KB
chunk-212df2e7.bbbb3bba.css 2KB
chunk-40da03f2.18736bec.css 2KB
chunk-790557ac.57473ac3.css 2KB
chunk-149de71a.62a1a402.css 2KB
chunk-58cfd9b4.b0ca61eb.css 2KB
chunk-2c8cb622.7a3afb92.css 2KB
chunk-549054aa.794e59d8.css 2KB
chunk-771f1984.3b8989c0.css 2KB
chunk-1e678e5d.7a09ca8c.css 2KB
chunk-9485b444.3ff5b893.css 2KB
emotion.css 2KB
chunk-567e5cc3.be2cae27.css 2KB
chunk-38b1179d.4c5efe27.css 2KB
dialogbase.css 2KB
music.css 2KB
chunk-76e24416.d7190656.css 2KB
chunk-2dfc78f7.39d685af.css 2KB
chunk-f6a5f3a8.f2e6eb3f.css 2KB
chunk-8ee37f6a.1fa7116b.css 2KB
chunk-be2007e8.8cbb8a1f.css 1KB
chunk-47bfaec1.01b91c5c.css 1KB
chunk-80a918c4.cb902301.css 1KB
chunk-23de7442.ac10a832.css 1KB
chunk-1ecade53.dcc8e50a.css 1KB
chunk-bd04db2a.e11f2b71.css 1KB
chunk-354ea98e.0f896941.css 1KB
chunk-e77d36d0.885b8833.css 1KB
chunk-90444b56.94bac276.css 1KB
chunk-c498a3b2.b5823912.css 1KB
chunk-12a41296.9c015c6e.css 1KB
chunk-df05101a.e17a7d07.css 1KB
chunk-c3356af0.24aaae76.css 1KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
- 邀星月为媒2025-01-04资源不错,很实用,内容全面,介绍详细,很好用,谢谢分享。
- luoboren2024-11-22资源很受用,资源主总结的很全面,内容与描述一致,解决了我当下的问题。
linlinlove2
- 粉丝: 1089
- 资源: 34
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AT89S52_AVR入门与提高DXP资料及其相关资料.zip
- AT89S52AVR入门与提高DXP资料及其相关资料.zip
- AT89S52电机控制器DXP资料及其相关资料.zip
- AT89S52语言常用程序资料.zip
- AT89S52多功能板DXP资料及其相关资料.zip
- AT89S52精简开发板DXP资料及其相关资料.zip
- ATMEGA8L最小系统板DXP及其相关资料.zip
- AT89S52最小系统板DXP资料及其相关资料.zip
- ATMEGA16L最小系统DXP资料及其相关资料.zip
- 基于Qt5与OpenCASCADE7.0的OSG 3.4三维CAD软件:支持多种格式、MDI结构,多种渲染效果及操作功能,基于Qt5+osg3.4+opencascade7.0开发的三维CAD,目前软
- Socket通信源码:多线程客户端管理,断线重连功能,简洁实用,适用于初学者和项目开发者,附开发文档和示例,Visual Studio 2017及以上版本支持,Socket通信源码,客户端部分,这是从
- 威纶通触摸屏与三菱变频器Modbus通讯实现详解:直连通讯、多种型号解析与编程指南,威纶通触摸屏与三菱变频器modbus通讯 威纶通与三菱变频器直接相连,进行modbus通讯,程序可以帮你学会触摸屏直
- 三菱PLC FX3U与旋转编码器记米数万能模块程序:处理计数器溢出与数据运算的实用程序块,涵盖PLC与触摸屏编程,三菱plcFX3U结合旋转编码器记米数万能模块程序,本人已实际项目中应用多次,现单独编
- 新能源汽车整车控制器VCU学习模型:涵盖多种功能及中文注释,适用于初学者,附软件说明书,助您快速掌握控制策略 ,新能源汽车整车控制器VCU学习模型,适用于初学者 1、模型包含高压上下电,行驶模式管理
- 汇川频器MD380量产宝典:原理图、PCB图、矢量源码全解析,必备工具助力高效生产,汇川频器md380量产方案,包含原理图,pcb图,矢量源码 拿来就用 量产参考,学习提高,必备利器 ,汇川频器
- 基于LabVIEW的大华摄像头视频监控系统,支持截图、全屏播放及Rtsp数据流等功能,labview源码,当时在企业实习给企业做的视频监控系统,通 过迅雷Aplayer播放器进行视频图像监控 能实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功