public class PayCallBackServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {byte[] data = req.getInputStream().readAllBytes();if (data == null) {PayUtil.getLog().log("支付回调,获取数据为空, ip=%s", IPUtil.get(req));return;}String body = new String(data);System.out.println(body);try {// 构建request,传入必要参数NotificationRequest request = new NotificationRequest.Builder().withSerialNumber(PayUtil.getPlatformC()).withNonce(req.getHeader("Wechatpay-Nonce")).withTimestamp(req.getHeader("Wechatpay-Timestamp")).withSignature(req.getHeader("Wechatpay-Signature")).withBody(body).build();NotificationHandler handler = new NotificationHandler(certificatesManager.getVerifier(mchId), apiV3Key.getBytes(StandardCharsets.UTF_8));// 验签和解析请求体Notification notification = handler.parse(request);// 获取商户订单号,根据订单号查询结果PayUtil.getLog().log("接收到支付回调内容, ip=%s, data=%s", IPUtil.get(req), notification.toString());JSONObject dDataObj = JSONObject.parseObject(notification.getDecryptData());String tradeId = dDataObj.getString("out_trade_no");// tradeId 为商户id, 进行操作 ...// 这里最好是再通过商户id去查询订单状态,状态和数据库内状态不一致在改变/完成,否则有可能造成资金损失PayUtil.getLog().log("支付回调完成, trade=%s, ip=%s, info=%s", tradeId, IPUtil.get(req), result);} catch (Exception e) {e.printStackTrace();PayUtil.getLog().log("处理回调通知出错: error=%s, ip=%s", e.getMessage(), IPUtil.get(req));}}}
工商登记查询佛山提供网站设计价格网络营销广告策划公司代理公司有哪些重庆壹鹿驾校vi手册设计传奇类网络游戏武汉网页推广收费标准国内域名国外服务器0546团购网零基础软件开发难学吗制作企业宣传片公司室内设计师之家官网福建省建设厅公众号怎么做的有创意网页软件开发平台dw官网线上推广工作好做吗平面设计收费标准2022html小游戏代码大全网站建设套餐价格表长春财经学院是几本中国建筑招聘官网2023本网站三天换一次域名2022网站规划技术方案室内装饰设计师证书怎么考房屋设计装修济南优秀网站建设案例中企动力科技集团设计2014在线观看建e网室内设计网官网模型
猜你喜欢
720云全景制作官网
广州东莞注册公司、邯郸怎么做网络推广、永久使用、不限域名、疫情防控
石家庄包装设计公司?
- 首页
- 顶呱呱一站式企业服务平台
- 正文