1.开通条件
个人没法开通,需要企业或个体工商户,上传营业执照。所以首先进行微信支付申请,打开链接微信支付 - 中国领先的第三方支付平台 | 微信支付提供安全快捷的支付方式,根据个人情况填写申请单,包括上传营业执照,申请完毕后,会收到入驻申请进展通知。
2.收款配置
点开微信收款配置提醒通知,效果如下,获取开发配置指引
具体相关的指引帮助在这里,不清楚时点击具体的页面进行查看即可:
3.关联账号
登录微信支付平台,登录后进入产品中心,选择App账号管理:
填写AppID和认证主题后,代表需要对接哪个小程序进行微信支付对接,然后等待审核:
主体微信将会收到申请关联授权,这个人通常是老板或者你本人,待他确认后既可看到状态变为了已关联。此时到小程序后台的「开发」-「开发设置」-「商户号」,可看到已绑定商户号。
4.API安全处理
使用商户号的超级管理员登录微信支付商户平台,账户中心,API安全,看到商户API证书后,点击“申请证书”。
之后点击确定,按提示内容往下走流程。下载证书工具,根据提示生成API证书
然后继续根据提示,最后生成证书如下:
此处获取到了apiclient_cert.p12等证书文件,后面会用到此证书。
同样,在API安全页面,也就是申请API证书页面,申请APIv2密钥。过程比较简单,按提示操作即可。
至此商户ID、APIv2密钥、p12证书都具备了:
5.小程序发起请求
小程序界面代码这里就不多写了,就是button按钮时间绑定方法,这个JS方法的核心代码:
unifiedOrder(event) {
wx.showLoading({
title: '加载中',
})
const { id }= event.currentTarget.dataset;
var that = this
app.api.unifiedOrder({//向后台发送支付请求,真正向微信平台发起支付请求的是Java后台
productId: id,//选择的产品,这个传递参数,具体根据后台和业务情况来
}).then(res => {
wx.hideLoading()
let payData = res.data
wx.requestPayment({ //利用后台返回的对象,本地开启微信支付
'timeStamp': payData.timeStamp,
'nonceStr': payData.nonceStr,
'package': payData.packageValue,
'signType': payData.signType,
'paySign': payData.paySign,
'success': function (res) {
that.triggerEvent('unifiedOrder', res)
},
'fail': function (res) {
},
'complete': function (res) {
console.log(res)
}
})
}).catch(() => {
wx.hideLoading()
})
}
6.Java后台对接
既然小程序是向后台发送支付请求,而真正向微信平台发起支付请求的是Java后台,接着需要使用binarywang.wxpay插件,向微信平台进行订单提交,主要代码如下:
WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest = new WxPayUnifiedOrderRequest();
wxPayUnifiedOrderRequest.setAppid(appId);//小程序appId
wxPayUnifiedOrderRequest.setBody(body);//订单名称
wxPayUnifiedOrderRequest.setOutTradeNo(OrderId);//订单Id
wxPayUnifiedOrderRequest.setTotalFee(discount.getPrice().intValue());//金额
wxPayUnifiedOrderRequest.setTradeType("JSAPI");//JSAPI支付
wxPayUnifiedOrderRequest.setNotifyUrl("https://your.com/");//订单完成通知回调地址
wxPayUnifiedOrderRequest.setSpbillCreateIp("127.0.0.1");
wxPayUnifiedOrderRequest.setOpenid(ThirdSessionHolder.getThirdSession().getOpenId());//发起支付请求的OpenId
return feignWxPayService.unifiedOrder(wxPayUnifiedOrderRequest, SecurityConstants.FROM_IN);//向微信平台提交支付订单
当然,上面的订单完成通知回调地址,需要是你的方法接口,在这个方法里面你可以更新支付时间、支付金额、支付状态等等字段,然后根据自己业务写一些其他逻辑。
7.开通效果
最后提一下,后台开发中,setTotalFee方法的使用,微信默认的单位是分,属性字段类型是int,也就意味着要乘以100,而实际生活中是以元为单位的。最后来看看支付对接成功后的效果:
上方左边的图,是开发工具中调用效果,右边是用真的手机微信测试扫码支付成功。
参考官方文档链接:商户申请接入确认绑定关系方法 - 腾讯客服