<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 | 公用回传参数,如果请求时传递了该参数,则返回给商户时会回传该参�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
酒店管理系统多酒店版丶房间入住丶换房丶预定丶商品销售;①酒店管理系统(多酒店版)、无限创建分店(想创建多少分店都可以,只有你高兴)丶入住管理 丶预订管理 丶语音提示、语音播报 丶房态实时丶图表数据 丶预警提示 丶短信营销 丶会员管理 丶商品管理 丶报表中心 丶财务管理 丶设备管理丶 ②App丶小程序丶H5丶酒店预定丶点餐丶叫服务丶店内服务 ③内部员工App
资源推荐
资源详情
资源评论
收起资源包目录
APP+H5+小程序预订-酒店管理系统(多酒店)
(2582个子文件)
random_compat.phar.pubkey.asc 488B
var-dump-server.bat 138B
start_for_win.bat 134B
bootstrap3.4.css 150KB
bootstrap.css 147KB
bootstrap.css 146KB
animated-border.css 137KB
bootstrap3.0.css 130KB
bootstrap.css 124KB
bootstrap-combined.min.css 123KB
animated-border.min.css 121KB
bootstrap.min.css 104KB
layui.css 86KB
main.css 75KB
styles.css 74KB
animate.min.css 52KB
jquery-ui.css 35KB
font-awesome.min.css 30KB
bootstrap-grid.css 24KB
bootstrap-responsive.css 22KB
bootstrap-responsive.min.css 16KB
layer.css 14KB
xadmin.css 10KB
layui.mobile.css 10KB
lang2fonts.css 9KB
linearicons.css 8KB
laydate.css 7KB
magnific-popup.css 7KB
toastr.css 7KB
toastr.css 7KB
htmleaf-demo.css 6KB
toastr.min.css 5KB
toastr.min.css 5KB
bootstrap-reboot.css 5KB
qunit.css 5KB
owl.carousel.css 4KB
nice-select.css 4KB
div.css 4KB
htmlDescriptor.css 3KB
login.css 2KB
mpdf.css 2KB
style.css 2KB
normalize.css 2KB
code.css 1KB
theme10.min.css 709B
theme5.css 590B
webuploader.css 515B
font.css 505B
theme4.css 309B
theme1.css 304B
theme3.css 297B
theme2.css 288B
linebrdictK.dat 1MB
linebrdictT.dat 295KB
linebrdictL.dat 124KB
.php_cs.dist 4KB
phpunit.xml.dist 826B
phpstan.neon.dist 187B
Dockerfile 387B
.editorconfig 271B
.editorconfig 131B
.example.env 231B
fontawesome-webfont.eot 162KB
Linearicons-Free.eot 55KB
iconfont.eot 48KB
iconfont.eot 40KB
icomoon.eot 2KB
hiddeninput.exe 9KB
appcity.gif 3.43MB
index.gif 1.46MB
appmenu.gif 1.01MB
1.gif 1002KB
admin.gif 955KB
3.gif 900KB
login.gif 862KB
moves.gif 634KB
2.gif 593KB
rooms.gif 535KB
75b3e956ee2f96faa1856d107c0919bc.gif 234KB
30e1f0d3bbffb46871f2de043b42321b.gif 91KB
8afcc1d5338ddc215c5a081ca33be0f1.gif 91KB
5a9ee31d7410d480429b15057cef0d31.gif 91KB
2edbfdfc42b28aaa9aa8aba2b4746998.gif 91KB
6c6edd29af3c41dbb08cc11e2ae22e15.gif 91KB
fe071d5c19e1e9465eb7078cf580977f.gif 91KB
0c4c00ff4f0d959f03cbf94164c68d7a.gif 68KB
59.gif 10KB
22.gif 10KB
24.gif 8KB
13.gif 7KB
16.gif 7KB
39.gif 6KB
64.gif 6KB
63.gif 6KB
50.gif 6KB
loading-0.gif 6KB
4.gif 6KB
1.gif 5KB
42.gif 5KB
71.gif 5KB
共 2582 条
- 1
- 2
- 3
- 4
- 5
- 6
- 26
资源评论
- 互助小修项目总监任友2024-02-27终于找到了超赞的宝藏资源,果断冲冲冲,支持!
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6723
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- RAG技术知识图谱概览
- VMware Workstation功能强大的桌面虚拟计算机软件
- 中文命名实体识别,采用bilstm+crf模型基于Pytorch实现
- PowerGREP V5.3.3 Retail
- 美赛数学建模算法-使用Matlab实现灰色系统建模GreySystem-国赛-题解.zip
- 基于albert-bilstm-crf架构利用keras框架实现NER
- RegexMagic V2.13.1 Retail
- python-3.6.5-macosx 安装包
- 美赛数学建模算法-使用Matlab实现图论GraphTheory-包括求最短路径-国赛-题解.zip
- RegexBuddy v4.14.1 Retail
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功