微信支付 Java后台 安卓和小程序前台(二)

转载请注明出处:https://blog.csdn.net/Strugglein/article/details/81148814

微信支付的所有源码打包下载请跳: 微信支付相关所有源码下载

上一章介绍了微信支付与app对接,这篇来记录下微信支付后端与小程序对接,话不多说直接上代码

1. 正文

   //这个properties是一个读取配置文件中的上面四个参数一个util
        HashMap<String, Object> properties = WeChatPayUtil.getProperties();
        //封装请求参数
        SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
        parameters.put("appid", properties.get("wx.appid"));//appid
        parameters.put("mch_id", properties.get("wx.mch_id"));//商户号
        parameters.put("nonce_str", WeChatPayToolsUtil.CreateNoncestr());//随机字符串
        parameters.put("fee_type", "CNY");
        parameters.put("openid", openId);
        parameters.put("notify_url", properties.get("wx.notify_url"));//回调地址
        parameters.put("trade_type", "JSAPI");//交易类型
        parameters.put("body", "wechatPay");//订单描述
           String ip = "127.0.0.1";//测试使用这个ip
        // String ip = WeChatPayToolsUtil.getRemortIP(request);//实际使用这个获取本机ip
        parameters.put("spbill_create_ip", ip);//ip
        parameters.put("out_trade_no", userOrder.getId() + "");//商户的订单号
        parameters.put("total_fee", String.valueOf(param.getFee()));
         // 设置签名
        String sign = WeChatPayToolsUtil.createSign(properties.get("wx.partnerKey").toString(), parameters);
        parameters.put("sign", sign);

        // 封装请求参数结束
        String requestXML = WeChatPayToolsUtil.getRequestXml(parameters); // 获取xml结果
        logger.debug("封装请求参数是:" + requestXML);

        // 调用统一下单接口
        InputStream in = null;
        try {
            in = WeChatPayToolsUtil.sendXMLDataByPost(GetConstantsUtil.WECHAT_UNDIFYURL, requestXML).getEntity().getContent();
        } catch (IOException e) {
            new IOException(Constants.Exception_Head + "统一下单异常");
        }
         //处理返回结果转为map
        Map<String, String> resultmap = getElementValue(in);
        logger.debug("调用统一下单接口:" + resultmap.toString());

  if (resultmap.get("return_code").equals("SUCCESS")) {
            if (resultmap.get("result_code").equals("SUCCESS")) {
            //这里主要是获取一个叫做prepay_id的字段,如果返回说签名失败或者什么的,根据msg提示操作
            }
        }

这里主要有两个关键参数
openid: 用户标识 是通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,具体参考:https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html?t=20161122
trade_type: 交易类型 小程序取值如下:JSAPI

2.小程序端:

在小程序中主要uiy使用wx.requestPayment(OBJECT)API来拉起微信支付
根据以下格式来请求

wx.requestPayment({
   'timeStamp': '',
   'nonceStr': '',
   'package': '',
   'signType': 'MD5',
   'paySign': '',
   'success':function(res){
   },
   'fail':function(res){
   }
})

具体参考:https://developers.weixin.qq.com/miniprogram/dev/api/api-pay.html#wxrequestpaymentobject

3 .回调接口以及工具类

回调接口就是使用我的上一篇文章里的回调接口就可以,然后其他的一些工具类也是可以在我的上一篇文章中获取 https://blog.csdn.net/strugglein/article/details/81143244

微信本来就是一个坑很多的一个接入,如果有其他的不了解的地方可以下面评论或者邮箱私信我都可以,一定看到就会回复的,我把所有的包括微信支付,退款,回调,查询,关闭的代码打了个包放到了https://download.csdn.net/download/strugglein/10560640,如果有有土豪玩家或者有不想拷代码的同志可以支持我一下谢谢大家~~~~

虚心的去学习,自信的去工作~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值