微信小程序> 微信小程序支付JAVA后台逻辑步骤

微信小程序支付JAVA后台逻辑步骤

浏览量:611 时间: 来源:Jeff.Smile

其实微信支付并没有想象中那么复杂, 你只需要花点时间看下我这篇文章,相信你可以很快学会,废话少说,跟我来吧!

①小程序前端会通过调用wx.login接口获取得到登陆凭据code。这个code获取之后5分钟内如果再次调用wx.login获取code并传递给②就会报错,code非法,这个需要注意下。

② 小程序将code登陆凭据和orderId订单编号穿给后台服务端,服务端调用https://api.weixin.qq.com/sns/jscode2session接口,获取session_key和openId。

③ 服务端拿到openId以后,调用统一下单接口https://api.mch.weixin.qq.com/pay/unifiedorder,并将返回的xml转化为map,得到其中的一些支付需要的参数进行二次签名,并返回给小程序。

 

@Overridepublic JSONObject getSecondSign(Map<String, String> map) throws Exception {String return_code = map.get("return_code");//返回状态码        String return_msg = map.get("return_msg");//返回信息        logger.debug("return_code:"+return_code+"------return_msg:" + return_msg);        JSONObject JsonObject=new JSONObject() ;        // 业务结果        if("SUCCESS".equals(return_code)){            String prepay_id = map.get("prepay_id");//返回的预付单信息            String nonceStr = RandomUtil.get32RandomStr();            JsonObject.put("nonceStr", nonceStr);            JsonObject.put("package", "prepay_id="+prepay_id);            Long timeStamp= System.currentTimeMillis()/1000;            JsonObject.put("timeStamp", timeStamp+"");            //再次签名            String appid = PayConstant.WX_APPID;            String stringSignTemp = "appId=" + appid            + "&nonceStr=" + nonceStr            + "&package=prepay_id=" + prepay_id            + "&signType=MD5&timeStamp=" + timeStamp;            stringSignTemp = stringSignTemp + "&key=" + PayConstant.WX_MCHKEY;            String paySign = DigestUtils.md5Hex(stringSignTemp).toUpperCase();            JsonObject.put("paySign", paySign);        }return JsonObject;}String return_code = map.get("return_code");//返回状态码        String return_msg = map.get("return_msg");//返回信息        logger.debug("return_code:"+return_code+"------return_msg:" + return_msg);        JSONObject JsonObject=new JSONObject() ;        // 业务结果        if("SUCCESS".equals(return_code)){            String prepay_id = map.get("prepay_id");//返回的预付单信息            String nonceStr = RandomUtil.get32RandomStr();            JsonObject.put("nonceStr", nonceStr);            JsonObject.put("package", "prepay_id="+prepay_id);            Long timeStamp= System.currentTimeMillis()/1000;            JsonObject.put("timeStamp", timeStamp+"");            //再次签名            String appid = PayConstant.WX_APPID;            String stringSignTemp = "appId=" + appid            + "&nonceStr=" + nonceStr            + "&package=prepay_id=" + prepay_id            + "&signType=MD5&timeStamp=" + timeStamp;            stringSignTemp = stringSignTemp + "&key=" + PayConstant.WX_MCHKEY;            String paySign = DigestUtils.md5Hex(stringSignTemp).toUpperCase();            JsonObject.put("paySign", paySign);        }return JsonObject;}

  ④ 小程序拿到上述的支付参数后,调用wx.requestpayment就可以调起支付了,用户完成付款后,小程序会回调我们设置的notify_url方便我们进行更新订单状态等后续操作。

 

附上日志打印:

以上为简单整理的四步逻辑,具体接口的参数可以参考微信支付API文档。https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-pay.html
 

 

小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎