>[danger] 注意:如果支付失败,请到TP日志中查看错误信息,支付错误提示格式如下:
> JSAPI支付错误 =======pay(AlipayPayJs) err:
> Native扫码支付错误 =======pay(AlipayNative) err:
> H5支付错误 =======pay(AlipayMWEB_H5) err:
> Micropay 刷卡支付错误 =======pay(AlipayMICROPAY) err:
>[info]支付api,通过连接调起支付
支付宝H5支付:
```
{:url('accounts/Pay/pay',['payType'=>'Alipay_H5','body'=>'cowcms','attach'=>'cowcms','out_trade_no'=>"1111",'total_fee'=>1,'subject'=>'222'])}
```
支付宝扫码支付:
```
{:url('accounts/Pay/pay',['payType'=>'Alipay_Native','body'=>'cowcms','attach'=>'cowcms','out_trade_no'=>"1111",'total_fee'=>1,'subject'=>'222','qr_pay_mode'=>2,'qrcode_width'=>100])}
```
>[info]【支付宝支付】如何使用Native(扫码)支付
* [x] 第一步 :控制器的php代码
```
$param['body'] = "cowcms";
$param['attach'] = "cowcmsKKK";
$param['out_trade_no'] = "cowcms_1111";
$param['total_fee'] = 5;
$param['subject'] = "cowcms";
$param['qr_pay_mode'] = "2";
$param['qrcode_width'] = 100;
pay('Alipay_Native',$param);
```
以上代码等同于访问以下连接:
```
{:url('accounts/Pay/pay' ['payType'=>'Alipay_Native','body'=>'cowcms','attach'=>'cowcmsKKK','out_trade_no'=>"cowcms_1111",'total_fee'=>5,'subject'=>'cowcms','qr_pay_mode'=>2,'qrcode_width'=>100])}
```
>$param 参数说明
| 参数 | 类型 | 默认 | 描述 |
| --- | --- |--- |--- |
| body(**必填**) | String(128) | 产品消费__会员 | 商品描述|
| attach (**必填**)| String(128) | PRO_1 | 附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用 可以附带产品id或者其它|
| out_trade_no(**必填**) | String(32) | 20150806125346 | cowcms系统产生的订单号, 且唯一 |
| total_fee (**必填**)| INT | 100| 订单总金额,单位为分 |
| subject (**必填**)| String(32) | cowcms_0| 支付订单标题|
| qr_pay_mode | string(2) | 2 |PC扫码支付的方式,支持前置模式和 跳转模式。<BR/> 前置模式是将二维码前置到商户的订单确认页的模式。需要商户在 自己的页面中以 iframe 方式请求 支付宝页面。具体分为以下几种:<BR/> 0:订单码-简约前置模式,对应 iframe 宽度不能小于600px,高度不能小于300px; <BR/> 1:订单码-前置模式,对应iframe 宽度不能小于 300px,高度不能小于600px; <BR/> 3:订单码-迷你前置模式,对应 iframe 宽度不能小于 75px,高度不能小于75px; <BR/>4:订单码-可定义宽度的嵌入式二维码,商户可根据需要设定二维码的大小。 <BR/>跳转模式下,用户的扫码界面是由支付宝生成的,不在商户的域名下。<BR/> 2:订单码-跳转模式|
| qrcode_width | int | 100| 商户自定义二维码宽度 注:qr\_pay\_mode=4时该参数生效|
| redirect_url | String(512) | url('alipay/Alipaypay/redirect') | 支付完成跳转地址|
>[info]【支付宝支付】如何使用MWEB(H5)支付
* [x] 第一步 :控制器的php代码
```
$param['body'] = "cowcms";
$param['attach'] = "cowcmsKKK";
$param['out_trade_no'] = "cowcms_1111";
$param['total_fee'] = 5;
$param['subject'] = "cowcms";
pay('Alipay_H5',$param);
```
以上代码等同于访问以下连接:
```
{:url('accounts/Pay/pay'['payType'=>'Alipay_H5','body'=>'cowcms','attach'=>'cowcmsKKK','out_trade_no'=>"cowcms_1111",'total_fee'=>5,'subject'=>'cowcms',])}
```
>$param 参数说明
| 参数 | 类型 | 默认 | 描述 |
| --- | --- |--- |--- |
| body(**必填**) | String(128) | 产品消费__会员 | 商品描述|
| attach (**必填**)| String(128) | PRO_1 | 附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用 可以附带产品id或者其它|
| out_trade_no(**必填**) | String(32) | 20150806125346 | cowcms系统产生的订单号, 且唯一 |
| total_fee (**必填**)| INT | 100| 订单总金额,单位为分 |
| subject (**必填**)| String(32) | cowcms_0| 支付订单标题|
| redirect_url | String(512) | url('alipay/Alipaypay/redirect') | 支付完成跳转地址|
>[info]查询支付订单
```
//$param['trade_no ']="2019053122001446011000031994";//支付宝交易号,和商户订单号不能同时为空
$param['out_trade_no']="cowcms_1559272717";//COWCMS系统支付时传递过去的订单号
$order = pay('Alipay_PayOrder',$param);;
dump($order);
```
>查询订单请求参数
| 参数 | 类型 | 默认 | 描述 |
| --- | --- |--- |--- |
| trade_no | String(64) | 2019053122001446011000031994 | 支付宝交易号,和商户订单号不能同时为空|
| out_trade_no| String(32) | cowcms_1559272717 | COWCMS系统支付时传递过去的订单号,trade_no 和out_trade_no二选一,推荐使用out_trade_no|
>返回示例代码
```
array(14) {
["code"] => string(5) "10000"
["msg"] => string(7) "Success"
["buyer_logon_id"] => string(18) "yur***@sandbox.com"
["buyer_pay_amount"] => string(4) "0.00"
["buyer_user_id"] => string(16) "2088102178846014"
["buyer_user_type"] => string(7) "PRIVATE"
["invoice_amount"] => string(4) "0.00"
["out_trade_no"] => string(21) "cowcms_1559272717"
["point_amount"] => string(4) "0.00"
["receipt_amount"] => string(4) "0.00"
["send_pay_date"] => string(19) "2019-05-31 10:14:31"
["total_amount"] => string(4) "0.01"
["trade_no"] => string(28) "2019053122001446011000031994"
["trade_status"] => string(13) "TRADE_SUCCESS"
}
```
参数说明[查看](https://docs.open.alipay.com/api_1/alipay.trade.query)
>[info]支付退款
```
//$param['trade_no ']="2019053122001446011000031994";//支付宝交易号,和商户订单号不能同时为空
$param['out_trade_no']="cowcms_1559272717";//COWCMS系统支付时传递过去的订单号
$param['refund_amount']=1;//退款金额
$order = pay('Alipay_Refund',$param);;
dump($order);
```
>支付退款请求参数
| 参数 | 类型 | 默认 | 描述 |
| --- | --- |--- |--- |
| trade_no | String(64) | 2019053122001446011000031994 | 支付宝交易号,和商户订单号不能同时为空|
| out_trade_no| String(32) | cowcms_1559272717 | COWCMS系统支付时传递过去的订单号,transaction_id和out_trade_no二选一,推荐使用out_trade_no|
| refund\_amount| int | 1 | 退款金额,单位为分|
| out_request_no (选填)| String(64) | cowcms_1559112635| 标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传。,如果未传,系统会会默认生成一个cowcms_$time|
>返回示例代码
```
array(11) {
["code"] => string(5) "10000"
["msg"] => string(7) "Success"
["buyer_logon_id"] => string(18) "yur***@sandbox.com"
["buyer_user_id"] => string(16) "2088102178846014"
["fund_change"] => string(1) "Y"
["gmt_refund_pay"] => string(19) "2019-05-31 12:04:11"
["out_trade_no"] => string(17) "cowcms_1559272717"
["refund_fee"] => string(4) "0.02"
["send_back_fee"] => string(4) "0.00"
["trade_no"] => string(28) "2019053122001446011000031994"
["out_request_no"] => string(23) "cowcms_I1Y3t11559275313"
}
```
参数说明[查看](https://docs.open.alipay.com/api_1/alipay.trade.refund)
>[info]微信退款订单查询
```
//$param['trade_no ']="2019053122001446011000031994";//支付宝交易号,和商户订单号不能同时为空
$param['out_trade_no']="cowcms_1559272717";//COWCMS系统支付时传递过去的订单号
$param['out_request_no ']="cowcms_I1Y3t11559275313";//退款时传入的参数
$order = pay('Alipay_RefundOrder',$param);;
dump($order);
```
>微信退款请求参数
| 参数 | 类型 | 默认 | 描述 |
| --- | --- |--- |--- |
| trade_no | String(64) | 2014112611001004680 073956707 | 支付宝交易号,和商户订单号不能同时为空|
| out_trade_no| String(32) | cowcms_Es52hE20190528200815| COWCMS系统支付时传递过去的订单号r trade_no > out_trade_no 二选一,推荐使用out_trade_no|
| out\_request\_no (必填)| String(32) | cowcms_1559112635| 请求退款接口时,传入的退款请求号|
>返回示例代码
```
array(7) {
["code"] => string(5) "10000"
["msg"] => string(7) "Success"
["out_request_no"] => string(23) "cowcms_I1Y3t11559275313"
["out_trade_no"] => string(17) "cowcms_1559272717"
["refund_amount"] => string(4) "0.01"
["total_amount"] => string(4) "0.05"
["trade_no"] => string(28) "2019053122001446011000031994"
}
```参数说明[查看](https://docs.open.alipay.com/api_1/alipay.trade.fastpay.refund.query/)
- 序言
- 基础
- 源码包
- 核心包
- 完整包
- 系统模块
- 安装模块
- 后台模块
- 插件模块
- 插件开发
- 开发基础
- 权限开发
- 菜单开发
- 开发调试
- 碎片开发
- 碎片钩子预设表
- 插件说明
- 字段插件
- 插件介绍
- 字段使用
- 单行文本
- 多行文本
- 选项-下拉
- 选项-复选
- 选项-单选
- 选项-滑块
- 颜色选择器
- 星级评分
- 日期时间
- 文件上传
- 编辑器
- API接口
- 微信插件
- 微信配置
- 公众号配置
- 支付配置
- 微信支付使用
- API类库
- 红包发放
- 付款到零钱
- 碎片
- 公众号碎片
- 红包碎片
- 付款到零钱碎片
- API微信接口
- 支付宝插件
- 支付宝配置
- 支付宝支付使用
- api接口
- api接口后端开发
- api接口前端使用
- API参数接口
- 会员插件
- 登录使用
- 会员碎片
- API会员接口
- API注册接口
- 积分插件
- 积分设置
- 积分碎片
- API积分接口
- API提现接口
- API兑换接口
- API充值接口
- 订单
- 订单碎片
- API订单接口
- 商城
- 商城钩子
- API商城接口
- API商城会员接口
- 签到
- 签到设置
- 签到碎片
- API签到接口
- 上传
- 上传设置
- 上传JS接口
- 推广插件
- 海报设置
- API海报接口
- 文章插件
- 文章设置
- 文章钩子
- API文章接口
- API文章会员接口
- 管理员
- 管理员碎片
- 站内信
- API站内信接口
- 杂项
- 菜单
- 菜单设置
- API菜单接口
- 错误码
- 支付碎片
- 支付
- 充值
- 购买会员组
- 购买产品