java 7 微信支付 ssl_JAVA微信支付

/*** 手机端调取APP支付 返回调起微信app所需的参数*/@GetMapping("/mobilePayment")public APIResult mobilePayment(@RequestParam(value = "orderId") String orderId, HttpServletRequest request, HttpServletResponse response) throwsException {

APIResult result =productService.findCourseOrderById(orderId);if(result.getSuccess()) {

CourseOrderVo courseOrderVo=result.getData();//查看是否作废

Date orderInvalidDate =courseOrderVo.getOrderInvalidDate();if (new Date().getTime() >orderInvalidDate.getTime()) {//已过期

CourseOrderDTO courseOrderDTO = newCourseOrderDTO();

courseOrderDTO.setId(courseOrderVo.getId());

courseOrderDTO.setOrderStatus(OrderStatusEnum.DISCARD);

productService.updateCourseOrder(courseOrderDTO);return APIResult.error(new BaseCode(APICode._C_OPERATE_ERROR, "订单已过期,请重新下单"));

}//查看是否已经在微信平台下单

APIResult wxPayReqVoAPIResult =productService.findWxPayReqByOrderId(courseOrderVo.getId());if(wxPayReqVoAPIResult.getSuccess()) {returnAPIResult.ok(wxPayReqVoAPIResult.getData());

}//1、调取统一下单方法 获取参数

String orderStr = unifiedOrder(courseOrderVo, "APP", "", request, response);//商户服务器生成支付订单,先调用统一下单API(详见第7节)生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付。以下是调起微信支付的关键代码:

if (orderStr.indexOf("SUCCESS") != -1) {//2、xml转map (WXPayUtil工具类)

Map unifiedOrderMap =WXPayUtil.xmlToMap(orderStr);

System.out.println(unifiedOrderMap.toString());

String prepayId= unifiedOrderMap.get("prepay_id");if (!StringUtils.isEmpty(prepayId)) {

String uuid=UUIDUtil.getUUID();//本来生成的时间戳是13位,但是ios必须是10位,所以截取了一下

String timeStamp = String.valueOf(System.currentTimeMillis()).substring(0, 10);

SortedMap parameterMap2 = new TreeMap();

parameterMap2.put("appid", wxpayConfig.getAppId());

parameterMap2.put("partnerid", wxpayConfig.getMchId());

parameterMap2.put("prepayid", prepayId);

parameterMap2.put("package", "Sign=WXPay");

parameterMap2.put("noncestr", uuid);

parameterMap2.put("timestamp", timeStamp);

String sign=WXPayUtil.createSign(parameterMap2, wxpayConfig.getKey());

parameterMap2.put("sign", sign);

WxPayReqDTO wxPayReqDTO= newWxPayReqDTO();

wxPayReqDTO.setCourseOrderId(courseOrderVo.getId());

wxPayReqDTO.setAppId(wxpayConfig.getAppId());

wxPayReqDTO.setPartnerId(wxpayConfig.getMchId());

wxPayReqDTO.setPrepayId(prepayId);

wxPayReqDTO.setNonceStr(uuid);

wxPayReqDTO.setTimeStamp(timeStamp);

wxPayReqDTO.setPackageValue("Sign=WXPay");

wxPayReqDTO.setPayType("APP");

wxPayReqDTO.setSign(sign);

String param=JSON.toJSONString(parameterMap2);

System.out.println("调起微信APP所需的参数:" +param);returnproductService.createWxPayReq(wxPayReqDTO);

}

}return APIResult.error(new BaseCode(APICode._C_OPERATE_ERROR, "支付失败"));

}return APIResult.error(new BaseCode(APICode._C_NOT_EXISTS, "订单信息不存在"));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值