微信小程序> 微信小程序中最重要的两个key:小程序秘钥、商户支付API秘钥

微信小程序中最重要的两个key:小程序秘钥、商户支付API秘钥

浏览量:666 时间: 来源:文龙z

微信小程序中有两个非常重要的key:

第一个小程序秘钥(AppSecret),小程序端使用微信登录时要用到,这个秘钥访问固定接口获取用户的openid。

/***微信登录*/@PostMapping("/wxLogin")    public WenJSONResult wxLogin(@RequestBody Users users, String code) throws Exception {              // 该接口用来获取用户的openid        String url = "https://api.weixin.qq.com/sns/jscode2session";        MapString, String param = new HashMap();        param.put("appid", WxConfig.appid);        param.put("secret", WxConfig.key);        param.put("js_code", code);        param.put("grant_type", "authorization_code");        String wxResult = HttpClientUtil.doGet(url, param);        WXSessionModel model = JsonUtils.jsonToPojo(wxResult, WXSessionModel.class);        .....................................        ...........自己的业务代码.............        .....................................    }

第二个:微信支付,商户平台,API秘钥。当商户集成微信支付时,用来调起统一下单接口的秘钥。两个秘钥不能倒错,否则在微信支付第一次签名时一直报错:签名错误。

    /**     * @Description: 微信支付     */    @RequestMapping("pay")    public WenJSONResult pay(String openid, HttpServletRequest request) {        try {            MapString, String packageParams = new HashMap();            // 生成随机字符串,保证每一次的请求生成的签名都不一样            String nonce_str = GenerateUUID.getUUID();            // 商品名称            String body = "测试商品";            // 获取本机的ip地址            String spbill_create_ip = IpUtils.getIpAddr(request);            // 订单号            String orderNo = sid.nextShort();            // 支付金额,单位:分,这边需要转成字符串类型,否则后面的签名会失败            String money = "1";            packageParams.put("appid", WxPayConfig.appid);            packageParams.put("mch_id", WxPayConfig.mch_id);            packageParams.put("nonce_str", nonce_str);            packageParams.put("body", body);            packageParams.put("out_trade_no", orderNo);            packageParams.put("total_fee", money);            packageParams.put("spbill_create_ip", spbill_create_ip);            packageParams.put("notify_url", WxPayConfig.notify_url);            packageParams.put("trade_type", WxPayConfig.TRADETYPE);            packageParams.put("openid", openid);            // 第一次签名,用于统一下单接口            String sign = WXPayUtil.generateSignature(packageParams, WxPayConfig.payKey, WXPayConstants.SignType.MD5);            packageParams.put("sign", sign);            // 拼接统一下单接口使用的xml数据,要将上一步生成的签名一起拼接进去            String xml = WXPayUtil.generateSignedXml(packageParams, WxPayConfig.payKey, WXPayConstants.SignType.MD5);            // 调起统一支付接口,返回预下单订单号prepay_id            String result = PayUtil.httpRequest(WxPayConfig.pay_url, "POST", xml);            // 将请求结果存储在map中            Map map = PayUtil.doXMLParse(result);            // 返回状态码            String return_code = (String) map.get("return_code");            // 给移动端返回调起支付需要的参数            MapString, Object res = new HashMap();            if (return_code == "SUCCESS" || return_code.equals(return_code)) {                // 业务结果,返回的预付单信息                String prepay_id = (String) map.get("prepay_id");                res.put("nonceStr", nonce_str);                res.put("package", "prepay_id=" + prepay_id);                Long timeStamp = System.currentTimeMillis() / 1000;                // 要求将时间戳转化成字符串                res.put("timeStamp", timeStamp + "");                String stringSignTemp = "appId=" + WxPayConfig.appid + "&nonceStr="                        + nonce_str + "&package=prepay_id=" + prepay_id + "&signType="                        + WxPayConfig.SIGNTYPE + "&timeStamp=" + timeStamp;                // 第二次签名,将小程序支付需要的参数传回小程序。小程序调用wx.requesetPayment方法                String paySign = PayUtil.sign(stringSignTemp, WxPayConfig.payKey, "utf-8").toUpperCase();                res.put("paySign", paySign);                //更新订单信息                //业务逻辑代码            }            res.put("appid", WxPayConfig.appid);            return WenJSONResult.ok(res);        } catch (Exception e) {            e.printStackTrace();            return WenJSONResult.errorMsg("支付失败");        }    }

 

版权声明

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

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

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