第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 微信小程序(微信支付回调函数)

微信小程序(微信支付回调函数)

时间:2019-06-27 08:39:11

相关推荐

微信小程序(微信支付回调函数)

/*** 微信支付回调函数** @param body* @param request* @return 所有逻辑完成, 返回true, 完成支付, 并将订单状态改变*/@Override@Transactionalpublic boolean wxpayNotify(Map body, HttpServletRequest request) {try {//从消息头获取微信支付回调的获取签名信息String timestamp = request.getHeader("Wechatpay-Timestamp");String nonce = request.getHeader("Wechatpay-Nonce");//从消息头获取应答签名String sign = request.getHeader("Wechatpay-Signature");//从消息头获取平台对应的证书String serialNo = request.getHeader("Wechatpay-Serial");//解析报文体ObjectMapper objectMapper = new ObjectMapper();String data = objectMapper.writeValueAsString(body);String message = timestamp + "\n" + nonce + "\n" + data + "\n";//判断微信平台证书公钥与初始化时取得的是否相同if (!WxpayStaticParameter.certificateMap.containsKey(serialNo))WxpayStaticParameter.certificateMap = WechatPayUtils.refreshCertificate();//获取微信平台证书公钥X509Certificate x509Certificate = WxpayStaticParameter.certificateMap.get(serialNo);//验签(使用获取的微信平台公匙和应答签名以及)if (!WechatPayUtils.verify(x509Certificate, message.getBytes(), sign))throw new IllegalArgumentException("微信支付签名验证失败:" + message);Map<String, String> resource = (Map) body.get("resource");AesUtil aesUtil = new AesUtil(WxpayStaticParameter.v3Key.getBytes());//获取解密后的jsonString resourceDataToString = aesUtil.decryptToString(resource.get("associated_data").getBytes(),resource.get("nonce").getBytes(),resource.get("ciphertext"));//将json转换成mapMap<String, Object> resourceData = objectMapper.readValue(resourceDataToString, Map.class);//获取支付的交易单号String orderNo = resourceData.get("out_trade_no").toString();//支付状态的判断 如果是success就代表支付成功if ("SUCCESS".equals(resourceData.get("trade_state"))) {//业务逻辑return true;} else {return false;}} catch (Exception e) {e.printStackTrace();}return false;}

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