700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 基于weixin-java-tools集成微信小程序支付功能

基于weixin-java-tools集成微信小程序支付功能

时间:2020-11-30 08:15:53

相关推荐

基于weixin-java-tools集成微信小程序支付功能

目前,公司正在把业务从公众号向小程序迁移,本人负责订单功能的开发,现在把微信小程序接入微信支付这块的知识分享给大家,可能有部分人对微信支付不太了解,可以参考下面的微信支付流程图。

微信支付流程图

我是用weixin-java-tools这个开源框架做的,目前这个开源社区还很活跃,有兴趣的朋友可以研究一下。weixin-java-tools微信支付功能集成如下:

登录小程序平台设置常用的配置,request合法域名,uploadFile合法域名,downloadFile合法域名。

2.小程序开通微信支付功能,微信支付用到微信支付商户号,支付证书。

3.引入maven坐标

<dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-pay</artifactId><version>3.2.0</version></dependency>

4.调用微信统一下单接口,我这里贴出关键代码。

@RequestMapping(value="/unifiedOrder/{appId}")public JSONObject unifiedOrder (@RequestBody JSONObject inData,@PathVariable String appId){String openId = inData.getString("openId");//微信用户openIdString tradeNo = inData.getString("tradeNo");//订单编号Integer totalFee = inData.getInteger("orderPrice");//商品价格,单位为分String body = inData.getString("body"); //商品名称String ip = inData.getString("ip");//客户端ip String notifyUrl = environment.getProperty("spring."+appId+".notifyUrl");//微信回调业务接口地址WxPayUnifiedOrderRequest prepayInfo = new WxPayUnifiedOrderRequest();long now = System.currentTimeMillis();String nowStr = String.valueOf(now);int length = nowStr.length();String current = nowStr.substring(length-5,length);prepayInfo.setOpenid(openId);prepayInfo.setTradeType("JSAPI");prepayInfo.setTotalFee(totalFee);prepayInfo.setBody(body);prepayInfo.setSpbillCreateIp(ip);prepayInfo.setOutTradeNo(tradeNo+"|"+current);prepayInfo.setNotifyUrl(notifyUrl);JSONObject jsObj = new JSONObject();try {final WxPayService payService = WeixinServiceFactory.getWxPayService(appId,environment);Object payInfo = payService.createOrder(prepayInfo);jsObj.put("code", ResponseCodeEnum.RESPONSE_CODE_SUCCESS.getCode());jsObj.put("message",ResponseCodeEnum.RESPONSE_CODE_SUCCESS.getMessage());jsObj.put("data", payInfo);} catch (WxPayException e) {logger.error("创建订单支付信息,出现异常",e);jsObj.put("code", ResponseCodeEnum.RESPONSE_CODE_INTERNAL_ERROR.getCode());jsObj.put("message",ResponseCodeEnum.RESPONSE_CODE_INTERNAL_ERROR.getMessage());}return jsObj

接口返回数据格式如下:

{"code": 200,"data": {"appId": "12123123123123",//微信小程序appid"timeStamp": "1559713220",//当前时间戳"nonceStr": "1559713220240",//随机字符串"packageValue": "prepay_id=wx01231231231231230",//prepay_id为预支付交易会话标识"signType": "MD5",//支付签名方式"paySign": "213213123123"//支付签名},"message": "SUCCESS"}

4.小程序页面发起微信支付请求,参数为第三步返回的参数

wx.requestPayment({"appId": 'wx00000000000000',//小程序appId"timeStamp": "",//当前时间戳 "nonceStr": "",//随机字符串"package": "",//预支付交易会话标识 取接口返回端的packageValue字段"signType": "","paySign":"",//小程序微信支付成功的回调通知 'success': function (res) {},//小程序支付失败的回调通知 'fail': function (res) {} }) }

5.微信支付平台异步回调业务接口,修改订单支付状态

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。