这段时间在忙于微商城项目,在我负责的商城结算模块用到了微信公众号支付,所以便把过程中的一些实践和问题整理了下来!
1.微信支付环境准备
当然,这里的支付准备默认前提是你已经申请了微信公众平台等相关信息。
a.确保微信支付功能开通,可以前往对应的公众号平台查看;
b.在公众号的微信支付页面设置支付授权目录;
c.前往对应的商户平台设置支付密钥和授权目录,并下载相应的证书文件;
2.场景业务流程
a.用户下单
b.公众号支付
3.微信支付服务(wxpayserver)接口描述
a.正确返回格式:1
2
3{
data:xxx
}
xxx可以是任意对象,具体值应与相应业务接口返回为准。
b.错误返回格式:1
2
3
4
5
6{
error:{
code:xxx
message:xxx
}
}
code为错误代码,分为两大类,参数校验类和业务校验类。code值为wxPayError.params为参数校验类错误,其对应的message信息为提示具体的字段错误及其原因。剩余的所有code值都是业务结果错误的返回,具体描述也在message里面
c.涉及的接口列表
3.1请求h5支付需要的预支付参数
基本信息
请求类型:HTTP
请求地址:/v1/pay/params
请求方式:post 数据类型:x-www-form-urlencode
响应类型:json
请求参数
参数名称 | 是否必须 | 类型 | 描述 | 默认值 |
---|---|---|---|---|
body | 是 | string | 商品描述 | |
out_trade_no | 是 | string | 商家内部唯一订单号 | |
total_fee | 是 | int | 单位(分) | |
spbill_create_ip | 是 | string | 客户端ip | |
notify_url | 是 | string | 微信请求的支付回调 | |
openid | 是 | string | 微信用户的openid |
3.2统一下单接口
基本信息
请求类型:HTTP
请求地址:/v1/pay/unified
请求方式:post 数据类型:x-www-form-urlencode
响应类型:json
请求参数
参数名称 | 是否必须 | 类型 | 描述 | 默认值 |
---|---|---|---|---|
body | 是 | string | 商品描述 | |
out_trade_no | 是 | string | 商家内部唯一订单号 | |
total_fee | 是 | int | 单位(分) | |
spbill_create_ip | 是 | string | 客户端ip | |
notify_url | 是 | string | 微信请求的支付回调 | |
openid | 否 | string | 微信用户的openid(如果支付类型为jsapi,为必填) | |
trade_type | 是 | string | 支付类型 |
3.3查询指定订单的支付情况
基本信息
请求类型:HTTP
请求地址:/v1/pay/queryOrder
请求方式:post 数据类型:x-www-form-urlencode
响应类型:json
请求参数
参数名称 | 是否必须 | 类型 | 描述 | 默认值 |
---|---|---|---|---|
transaction_id | 否 | string | 微信订单号 | |
out_trade_no | 是 | string | 商家内部唯一订单号 |
3.4 关闭指定订单
基本信息
请求类型:HTTP
请求地址:/v1/pay/closeOrder
请求方式:post 数据类型:x-www-form-urlencode
响应类型:json
请求参数
参数名称 | 是否必须 | 类型 | 描述 | 默认值 |
---|---|---|---|---|
transaction_id | 否 | string | 微信订单号 | |
out_trade_no | 是 | string | 商家内部唯一订单号 |