微信境内支付包括:
- App支付
- 公众号支付
- 小程序支付
- H5 支付
- 扫码支付
- 刷卡支付
除刷卡支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易回话标识后再按扫码、JSAPI、APP等不同场景生成交易串调起支付。
1. 常用API 列表
- 统一下单(提交刷卡支付)
- 查询订单
- 关闭订单
- 申请退款
- 查询退款
- 下载对账账单
- 下载资金账单
- 支付结果通知
- 退款结果通知
2. 微信支付接口请求大致流程
- 封装请求参数
- 将请求参数进行sort()
- 对排序好的参数进行trim()
- 将参数拼接为正确顺序的uri并加入key(秘钥)到最后
- 将uri进行签名得到sign
- 将参数以及sign(排除秘钥)按顺序转为xml
- 请求对应接口(统一下单等)
- 响应时也是xml格式
- 转换xml为Map格式
- 校验returnCode和resultCode
3. 常用API中的区别点
3.1 刷卡支付
1.下单非统一下单,而是提交刷卡支付,即请求的url和其他几种都不同。
- 刷卡请求url:https://api.mch.weixin.qq.com/pay/micropay
- 其他统一下单url:https://api.mch.weixin.qq.com/pay/unifiedorde
2.提交刷卡支付参数中不能携带参数有以下:(其他类型支付均可)。
名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
交易类型 | trade_type | 是 | String(16) | JSAPI | JSAPI 公众号支付 NATIVE 扫码支付 APP APP支付 |
用户标识 | openid | 否 | String(128) | oUpF8uMuAJO_M2pxb1Q9zNjWeS6o | trade_type=JSAPI时(即公众号支付),此参数必传,此参数为微信用户在商户对应appid下的唯一标识。openid如何获取,可参考【获取openid】。企业号请使用【企业号OAuth2.0接口】获取企业号内成员userid,再调用【企业号userid转openid接口】进行转换 |
通知地址 | notify_url | 是 | String(256) | http://www.weixin.qq.com/wxpay/pay.php | 异步接收微信支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。 |
3.2 授权码
提交刷卡支接口需要:auth_code.
名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
授权码 | auth_code | 是 | String(128) | 120061098828009406 | 扫码支付授权码,设备读取用户微信中的条码或者二维码信息(注:用户刷卡条形码规则:18位纯数字,以10、11、12、13、14、15开头) |
3.3 H5支付
注⚠️:提醒:H5支付不建议在APP端使用,如需要在APP中使用微信支付,请接APP支付
名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
场景信息 | scene_info | 是 | String(256) |
- 示例值
//IOS移动应用{ "h5_info": { "type":"IOS","app_name": "王者荣耀","bundle_id": "com.tencent.wzryIOS"}}//安卓移动应用{ "h5_info": { "type":"Android","app_name": "王者荣耀","package_name": "com.tencent.tmgp.sgame"}}//WAP网站应用{ "h5_info": { "type":"Wap","wap_url": "https://pay.qq.com","wap_name": "腾讯充值"}} 该字段用于上报支付的场景信息,针对H5支付有以下三种场景,请根据对应场景上报,H5支付不建议在APP端使用,针对场景1,2请接入APP支付,不然可能会出现兼容性问题复制代码
- 描述.
1,IOS移动应用
{"h5_info": //h5支付固定传"h5_info" {"type": "", //场景类型 "app_name": "", //应用名 "bundle_id": "" //bundle_id }}复制代码
2,安卓移动应用
{"h5_info": //h5支付固定传"h5_info" {"type": "", //场景类型 "app_name": "", //应用名 "package_name": "" //包名 }}复制代码
3,WAP网站应用
{"h5_info": //h5支付固定传"h5_info" {"type": "", //场景类型 "wap_url": "",//WAP网站URL地址 "wap_name": "" //WAP 网站名 }}复制代码