>支付使用场景:当有用户使用了支付,并且支付成功的时候,会触发该钩子的碎片,支付包括(充值,购买会员会员组,购买产品等),只要涉及到支付都会触发支付碎片
| 标题 | 名称 | 钩子描述 |
| --- | --- | --- |
| 支付 | pay| 当有用户使用了支付,并且支付成功的时候,会触发该钩子的碎片
```
function functionName($type,$payType,$userInfo,$data)
```
>[info]$type 支付种类 WX:微信支付,Alipay:支付宝支付,Balance:余额支付
$payType 支付方式 JSAPI、NATIVE、APP ,MICROPAY,MWEB,注意:余额支付只有SYSTEM
$userInfo 支付会员信息 请到会员碎片[查看](1230254)
$data 支付返回的信息
>$payType 支付方式
| 支付标识 | 支付类型 |
| --- | --- |
| JSAPI | JSAPI支付方式是在微信或者支付包浏览器中支付的一种方式 |
| NATIVE | NATIVE 扫描支付方式,点击支付生成二维码,然后扫码支付 |
| APP | APP APP中支付方式 |
| MICROPAY | MICROPAY 商家柜台扫描,客户展示自己的收付款码,商家用扫描设备进行扫描支付|
| MWEB | MWEB H5支付,在特定浏览器以外的环境上支付,比如从手机平板的浏览器上进行支付|
>[info]$type为【Balance】(余额支付) $data( 数组 )返回的数据
变量名 | 类型 | 示例值 | 描述 |
| --- | --- | --- | --- |
total\_fee | Int | 100 | 订单总金额,单位为分 |
out\_trade\_no | String(32) | 1212321211201407033568112322 | cowcms系统中产生的订单号,此次支付的订单号,根据该号修改订单状态|
attach | String(128) | 123456 | 发起支付时带的参数,支付完成原样返回,识别是充值支付还是购买产品支付 |
>[info]$type为【WX】(微信支付) $data( 数组 )返回的数据
变量名 | 类型 | 示例值 | 描述 |
| --- | --- | --- | --- |
openid | String(128) | wxd930ea5d5a258f4f | 支付用户所对应的微信openid |
total\_fee | Int | 100 | 订单总金额,单位为分 |
transaction\_id |String(32) | 1217752501201407033233368018 | 微信支付订单号 |
out\_trade\_no | String(32) | 1212321211201407033568112322 | cowcms系统中产生的订单号,此次支付的订单号,根据该号修改订单状态|
attach | String(128) | 123456 | 发起支付时带的参数,支付完成原样返回,识别是充值支付还是购买产品支付 |
time\_end | String(14) | 20141030133525 | 支付完成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010 |
appid | String(32) | wx8888888888888888 | 微信分配的公众账号ID(企业号corpid即为此appId) |
mch\_id | String(32) | 1900000109 | 微信支付分配的商户号 |
nonce\_str | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位,在支付的时候传入的随机数 |
sign | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 支付签名值|
is\_subscribe | String(1) | 关注为Y,未关注为N | 支付用户是否关注了 appid对应的公众号 |
trade\_type | String(16) | JSAPI- NATIVE-APP-MICROPAY| 支付类型 |
bank\_type | String(16) | CFT | 银行类型,采用字符串类型的银行标识,银行类型见[银行列表](https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_2) |
fee\_type |String(8) | CNY | 支付货币类型,符合ISO4217标准的三位字母代码,默认人民币:CNY,其他值列表详见[货币类型](https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_2) |
cash\_fee | Int | 100 | 现金支付金额订单现金支付金额,详见[支付金额](https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_2) |
>微信返回数据
```
array(20) {
["appid"] => string(18) "wxc0d7ec4863c12ab9"
["attach"] => string(8) "recharge"
["bank_type"] => string(3) "CFT"
["cash_fee"] => string(1) "1"
["fee_type"] => string(3) "CNY"
["is_subscribe"] => string(1) "N"
["mch_id"] => string(10) "1225084602"
["nonce_str"] => string(16) "KaqrYV88aB1VXkpz"
["openid"] => string(28) "o4KFnuLOwsQR9tDusUk0ZBhe5b4Q"
["out_trade_no"] => string(21) "cowcms_20190528192231"
["result_code"] => string(7) "SUCCESS"
["return_code"] => string(7) "SUCCESS"
["return_msg"] => string(2) "OK"
["sign"] => string(64) "558D972A61DA690C172E0F19BE14EEAA85BAEF738AD07C78FDE69F67615966BF"
["time_end"] => string(14) "20190528192532"
["total_fee"] => string(1) "1"
["trade_state"] => string(7) "SUCCESS"
["trade_state_desc"] => string(12) "支付成功"
["trade_type"] => string(6) "NATIVE"
["transaction_id"] => string(28) "4200000295201905289397268000"
}
```
>[info]$type为【Alipay】(支付宝支付) $data( 数组 )返回的数据
>[danger]注意以下是支付宝支付完成返回的数据,其中第一个表是为了和微信支付统一数据返回的数据,第二个表为支付宝返回的数据,2个表的数据都包含在$data变量中,其中第一个表参数字段中 括号中的名称为支付宝对应的字段,如 openid (buyer\_id),表示openid对应的为第二个表中的buyer\_id的值
| 参数 | 类型 | 描述 | 范例 |
| --- | --- | --- | --- |
openid (buyer_id)| String(16) | 2088102122524333| 买家支付宝账号对应的支付宝唯一用户号。以2088开头的纯16位数字 |
total\_fee(total_amount)| Int | 100 | 订单总金额,单位为分,注意 total_amount单位为元 |
transaction\_id (trade_no)|String(64) | 2013112011001004330000121536 |支付宝交易订单号 |
out\_trade\_no | String(32) | 1212321211201407033568112322 | cowcms系统中产生的订单号,此次支付的订单号,根据该号修改订单状态|
attach(passback_params) | String(128) | 123456 | 发起支付时带的参数,支付完成原样返回,识别是充值支付还是购买产品支付 |
time\_end (gmt_payment)| String(14) | 20141030133525 | 支付完成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010 |
appid (app_id)| String(32) | 2014072300007148 |支付宝分配给开发者的应用Id |
trade\_type | String(16) | JSAPI- NATIVE-APP-MICROPAY| 支付类型 |
| 参数 | 类型 | 描述 | 范例 |
| --- | --- | --- | --- |
| trade\_no | String(64) | 支付宝交易号,和商户订单号不能同时为空| 2013112011001004330000121536 |
| app\_id | String(32) | 支付宝分配给开发者的应用Id | 2014072300007148 |
| out\_biz\_no | String(64) | 商户业务ID,主要是退款通知中返回退款申请的流水号 | HZRF001 |
| buyer\_id | String(16) | 买家支付宝账号对应的支付宝唯一用户号。以2088开头的纯16位数字 | 2088102122524333 |
| seller\_id | String(30) | 卖家支付宝用户号 | 2088101106499364 |
| trade\_status | String(32) | 交易目前所处的状态,见[交易状态说明](https://docs.open.alipay.com/#s1) | TRADE\_CLOSED |
| total\_amount | Number(9,2) |本次交易支付的订单金额,单位为人民币(元),精确到小数点后2位 | 20.00 |
| receipt\_amount | Number(9,2) | 商家在交易中实际收到的款项,单位为元,精确到小数点后2位 | 15.00 |
| invoice\_amount | Number(9,2) | 用户在交易中支付的可开发票的金额,单位为元,精确到小数点后2位 | 10.00 |
| buyer\_pay\_amount | Number(9,2) | 用户在交易中支付的金额,单位为元,精确到小数点后2位 | 13.88 |
| point\_amount | Number(9,2) | 使用集分宝支付的金额,单位为元,精确到小数点后2位 | 12.00 |
| refund\_fee | Number(9,2) | 退款通知中,返回总退款金额,单位为元,精确到小数点后2位 | 2.58 |
| subject | String(256) | 商品的标题/交易标题/订单标题/订单关键字等,是请求时对应的参数,原样通知回来 | 当面付交易 |
| body | String(400) | 该订单的备注、描述、明细等。对应请求时的body参数,原样通知回来 | 当面付交易内容 |
| gmt\_create | Date | 该笔交易创建的时间。格式为yyyy-MM-dd HH:mm:ss | 2015-04-27 15:45:57 |
| gmt\_payment | Date | 该笔交易的买家付款时间。格式为yyyy-MM-dd HH:mm:ss | 2015-04-27 15:45:57 |
| gmt\_refund | Date | 该笔交易的退款时间。格式为yyyy-MM-dd HH:mm:ss.S | 2015-04-28 15:45:57.320 |
| gmt\_close | Date | 该笔交易结束时间。格式为yyyy-MM-dd HH:mm:ss | 2015-04-29 15:45:57 |
| fund\_bill\_list | String(512) | 支付成功的各个渠道金额信息,详见[资金明细信息说明](https://docs.open.alipay.com/#s3) | \[{“amount”:“15.00”,“fundChannel”:“ALIPAYACCOUNT”}\] |
| voucher\_detail\_list | String(512) | 本交易支付时所使用的所有优惠券信息,详见[优惠券信息说明](https://docs.open.alipay.com/#s5) | \[{“amount”:“0.20”,“merchantContribute”:“0.00”,“name”:“一键创建券模板的券名称”,“otherContribute”:“0.20”,“type”:“ALIPAY\_DISCOUNT\_VOUCHER”,“memo”:“学生卡8折优惠”\] |
| passback\_params | String(512) | 公共回传参数,如果请求时传递了该参数,则返回给商户时会在异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝 | merchantBizType%3d3C%26merchantBizNo%3d2016010101111 |
**说明:**receipt\_amount、invoice\_amount、buyer\_pay\_amount、point\_amount、voucher\_detail\_list在用户使用优惠券时才会返回,其他情况请
>[info]注意:微信支付,支付宝支付,余额支付时,attach变量值的描述
充值格式:buyPiont_购买会员id_充值的积分类型_充值的积分数。
购买会员组格式 buyGroup__购买会员id_购买会员组id_购买时间戳_到期时间戳_测试到期时间戳。
购买产品格式 buyProduct_购买会员id_标识_购买产品id_购买数量(标识,product:产品,curriculum:课程,special:专栏,标识也可自行定义,到时在付款成功后的回调中返回)。
>支付宝返回数据示例
```
Array
(
[gmt_create] => 2019-05-31 10:14:09
[charset] => UTF-8
[subject] => 20190531101133
[sign] => YYg72u7V6sHvi8XyIuoqke0fhoHVnfdohMh/40ptDn3wwE+q23derIaq26Y2aSpg/R0Af+aezdRTyLNspM3gPeFGDSGLmQnZ8Uu1SXDRl0mCW/P/eCcnscyHcjpf8kV1splcolOxWSByNtHImu0GDMnwrCtHXZ/5nkm1b7Riqhj2RxGCYTfZ1zMCG4+f65vGJ+aRnLDETdwdjNTy8bZXt3mvrXt15lRtJKBExX3Nnjrf/7NFh2/ENRiiN9z7LyA+TcNlgvRA/+LuDaOKD798aVaAH4+B3VUtBauM/ONS+2xlveqnfnajM+ErXxvGS6kPoVbcHpJvb6N40eEYIsY80w==
[buyer_id] => 2088102178846014
[body] => 11
[invoice_amount] => 0.01
[notify_id] => 2019053100222101431046011000258693
[fund_bill_list] => [{"amount":"0.01","fundChannel":"ALIPAYACCOUNT"}]
[notify_type] => trade_status_sync
[trade_status] => TRADE_SUCCESS
[receipt_amount] => 0.01
[app_id] => 2016092900624069
[buyer_pay_amount] => 0.01
[sign_type] => RSA2
[seller_id] => 2088102177809380
[gmt_payment] => 2019-05-31 10:14:31
[notify_time] => 2019-05-31 10:14:32
[passback_params] => 11
[version] => 1.0
[out_trade_no] => cowcms_20190531101133
[total_amount] => 0.01
[trade_no] => 2019053122001446011000033320
[auth_app_id] => 2016092900624069
[point_amount] => 0.00
[openid] => 2088102178846014
[total_fee] => 1
[transaction_id] => 2019053122001446011000033320
[attach] => 11
[time_end] => 1559268871
[appid] => 2016092900624069
[trade_type] => NATIVE
)
```
>[danger]以上格式是系统预定义的格式,你也可以根据自己的需求定义其它格式的的数据,在支付时将自定义的格式传给attach变量值,然后在付款成功后的钩子中进行处理数据
```
echo $data['attach'];
//充值 buyPiont_1_money_100 表示id为1的用户充值money类型的积分100个
//购买会员组 buyGroup_1_2_1555555983_1555557983_0 表示id为1的用户购买id为2的会员组,购买时间 1555555983,到期时间1555557983
//购买产品 buyProduct_1_product_10_2 表示id为1的用户购买标识为product,id为10的产品2件
```
- 序言
- 基础
- 源码包
- 核心包
- 完整包
- 系统模块
- 安装模块
- 后台模块
- 插件模块
- 插件开发
- 开发基础
- 权限开发
- 菜单开发
- 开发调试
- 碎片开发
- 碎片钩子预设表
- 插件说明
- 字段插件
- 插件介绍
- 字段使用
- 单行文本
- 多行文本
- 选项-下拉
- 选项-复选
- 选项-单选
- 选项-滑块
- 颜色选择器
- 星级评分
- 日期时间
- 文件上传
- 编辑器
- API接口
- 微信插件
- 微信配置
- 公众号配置
- 支付配置
- 微信支付使用
- API类库
- 红包发放
- 付款到零钱
- 碎片
- 公众号碎片
- 红包碎片
- 付款到零钱碎片
- API微信接口
- 支付宝插件
- 支付宝配置
- 支付宝支付使用
- api接口
- api接口后端开发
- api接口前端使用
- API参数接口
- 会员插件
- 登录使用
- 会员碎片
- API会员接口
- API注册接口
- 积分插件
- 积分设置
- 积分碎片
- API积分接口
- API提现接口
- API兑换接口
- API充值接口
- 订单
- 订单碎片
- API订单接口
- 商城
- 商城钩子
- API商城接口
- API商城会员接口
- 签到
- 签到设置
- 签到碎片
- API签到接口
- 上传
- 上传设置
- 上传JS接口
- 推广插件
- 海报设置
- API海报接口
- 文章插件
- 文章设置
- 文章钩子
- API文章接口
- API文章会员接口
- 管理员
- 管理员碎片
- 站内信
- API站内信接口
- 杂项
- 菜单
- 菜单设置
- API菜单接口
- 错误码
- 支付碎片
- 支付
- 充值
- 购买会员组
- 购买产品