Merge remote-tracking branch 'origin/master'
# Conflicts:
# ManagementJYXTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/huifu/biz/FenZhangUtil.java
| | |
| | | } |
| | | } |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/DGReassignZfb") |
| | | public void DGReassignZfb(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | String sign =request.getParameter("sign"); |
| | | String resp_data = request.getParameter("resp_data"); |
| | | System.out.println(sign); |
| | | System.out.println(resp_data); |
| | | resp_data = resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")"); |
| | | boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign); |
| | | // Map<String, String> map = payMoneyUtil.weixinpayCallback(request); |
| | | |
| | | |
| | | if(verify){ |
| | | JSONObject jsonObject = JSONObject.parseObject(resp_data); |
| | | String order_id = jsonObject.get("out_trans_id").toString(); |
| | | String out_trade_no = jsonObject.get("req_seq_id").toString(); |
| | | String trans_stat = jsonObject.get("trans_stat").toString(); |
| | | if("S".equals(trans_stat)){ |
| | | // TODO 司机云闪付 改派微信回调支付充值 |
| | | // String[] s = id.split("_"); |
| | | // if(Integer.valueOf(s[1]) == 3) {//跨城订单 |
| | | // System.out.println("跨城订单"); |
| | | // String[] split1 = s[0].split(","); |
| | | // List<Reassign> reassigns = reassignService.selectBatchIds(Arrays.asList(split1)); |
| | | // cloudPay(reassigns.get(0).getOriginalDriverId(),map.get("total_fee"),map.get("transaction_id"),1); |
| | | // }else { |
| | | // Reassign reassign = reassignService.selectById(s[0]); |
| | | // cloudPay(reassign.getOriginalDriverId(),map.get("total_fee"),map.get("transaction_id"),1); |
| | | // } |
| | | PrintWriter out = response.getWriter(); |
| | | out.write(200); |
| | | out.flush(); |
| | | out.close(); |
| | | String[] split = out_trade_no.split("_"); |
| | | reassignService.payReassign(split[0], order_id, 2); |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/api/wx/getOpenId") |
| | | @ApiOperation(value = "获取最新版本数据", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiOperation(value = "获取最新openId", tags = {"司机端-个人中心"}, notes = "") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), |
| | | @ApiImplicitParam(value = "code", name = "code", required = true, dataType = "String"), |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | /** |
| | | * 完成订单微信支付 斗拱 |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/DGPayCrossCityZfb") |
| | | public void DGPayCrossCityZfb(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | |
| | | String sign =request.getParameter("sign"); |
| | | String resp_data = request.getParameter("resp_data"); |
| | | System.out.println(sign); |
| | | System.out.println(resp_data); |
| | | resp_data = resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")"); |
| | | boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign); |
| | | // Map<String, String> map = payMoneyUtil.weixinpayCallback(request); |
| | | if(verify){ |
| | | JSONObject jsonObject = JSONObject.parseObject(resp_data); |
| | | String transaction_id = jsonObject.get("out_trans_id").toString(); |
| | | String out_trade_no = jsonObject.get("req_seq_id").toString(); |
| | | String trans_stat = jsonObject.get("trans_stat").toString(); |
| | | if("S".equals(trans_stat)){ |
| | | System.out.println("完成订单微信支付回调"+jsonObject); |
| | | PrintWriter out = response.getWriter(); |
| | | out.write(200); |
| | | out.flush(); |
| | | out.close(); |
| | | |
| | | String[] split = out_trade_no.split("_"); |
| | | Integer id = Integer.valueOf(split[0]); |
| | | Integer type = Integer.valueOf(split[1]); |
| | | // TODO 司机云闪付 跨城出行微信回调支付充值 |
| | | // OrderCrossCity orderCrossCity = orderCrossCityService.selectById(id); |
| | | // if(Objects.isNull(orderCrossCity)){ |
| | | // System.out.println("该订单不存在"); |
| | | // throw new RuntimeException("该订单不存在"); |
| | | // } |
| | | // cloudPay(orderCrossCity.getDriverId(),map.get("total_fee"),map.get("transaction_id"),1); |
| | | switch (type){ |
| | | case 3: |
| | | orderCrossCityService.payOrderCrossCityCallback(id, transaction_id, 2); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.security.KeyFactory; |
| | | import java.security.PrivateKey; |
| | | import java.security.Signature; |
| | |
| | | /** |
| | | * 斗拱支付工具类 |
| | | */ |
| | | @Component |
| | | public class DouGongPayUtil { |
| | | |
| | | @Autowired |
| | |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); |
| | | String req_date = simpleDateFormat.format(new Date()); |
| | | String notifyUrl = ""; |
| | | money = new BigDecimal(money).setScale(2, RoundingMode.HALF_UP).toString(); |
| | | switch (callType) { |
| | | case 1: |
| | | // 订单支付 |
| | |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); |
| | | String req_date = simpleDateFormat.format(new Date()); |
| | | String notifyUrl = ""; |
| | | money = new BigDecimal(money).setScale(2, RoundingMode.HALF_UP).toString(); |
| | | switch (callType) { |
| | | case 1: |
| | | // 订单支付 |
| | | notifyUrl = callbackPath + "/base/wxPayCrossCity"; |
| | | notifyUrl = callbackPath + "/base/DGPayCrossCityZfb"; |
| | | break; |
| | | case 2: |
| | | // 改派 |
| | | notifyUrl = callbackPath +"/base/wxReassign"; |
| | | notifyUrl = callbackPath +"/base/DGReassignZfb"; |
| | | break; |
| | | } |
| | | String a = "{\n" + |
| New file |
| | |
| | | package com.stylefeng.guns.modular.huifu.biz; |
| | | |
| | | import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage; |
| | | import me.chanjar.weixin.mp.api.WxMpService; |
| | | import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | @Component |
| | | public class WxMpConfig { |
| | | @Value("${wx.appid}") |
| | | private String appid;//微信appid |
| | | |
| | | @Value("${wx.appSecret}") |
| | | private String Secret; |
| | | |
| | | |
| | | @Bean |
| | | public WxMpService wxMpService(){ |
| | | WxMpService wxMpService = new WxMpServiceImpl(); |
| | | WxMpInMemoryConfigStorage ConfigStorage = new WxMpInMemoryConfigStorage(); |
| | | ConfigStorage.setAppId(appid); |
| | | ConfigStorage.setSecret(Secret); |
| | | wxMpService.setWxMpConfigStorage(ConfigStorage); |
| | | return wxMpService; |
| | | } |
| | | } |
| | |
| | | package com.stylefeng.guns.modular.huifu.biz; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | |
| | | import com.huifu.bspay.sdk.opps.core.BasePay; |
| | | import com.huifu.bspay.sdk.opps.core.config.MerConfig; |
| | | import com.huifu.bspay.sdk.opps.core.net.BasePayRequest; |
| | | import com.huifu.bspay.sdk.opps.core.BasePay; |
| | | import com.stylefeng.guns.modular.huifu.properties.HuiFuProperties; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 余额支付 - 示例 |
| | |
| | | merConfig.setRsaPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCR6W3ynQJL7f2C8vFYMcQkcirpkif9ZhLq1374jIlV87nv0T9uIm6DoW8LyNEl9w2Yc5qoBv70tt/oVpemA6IZY6NXzE2USNi/sv2qUTtapcIRYxe4acCfY8K+x+p7W2e6wUWIpl9qgZA+UnFmHQ0HT6Ywzq2jJL92JdIs147Ud1aVi3aX8LYItj0z3ZKwZQkaJawZSWQk2+EdPfN059L2qFkPtnT7JIthAdUTJYZA13K4tzw6mXp/DbgwVmLhrlmwl/ccSv2Q0ABfEk7jIxF1nZmCmSy3HrEw9xWyrg1BC+DgXBdyF0OEtpNfv+UW080syUVBNN0irHVuDP81BaAjAgMBAAECggEAGlBZprZQErdxz6rWgYxADj6UpJjaI2XEJZwFZveZUOnqb2hyIv+MpKp5Z0upBErApey7SHAyjJlqWfE72hGvqxp/+7Z5izNz+2ZhPtT1ekyIajBPt89CkLwiA9vz2plKZLC0RIeUj5WcGNEvaDX3AomHtCehwtk+uiTp+XJKbOBtkkQszcdCGY1DVoQ0ppFoINnM9VLbEzaFaG7VS3eFkU4cf2CwcrnJB1RncyPFK+bGFvjkLM/eQbsh8YxkBqaGz/8UM1Na1SEidqdyUF71ltqnI0u8pLe0V+5jugVW+3lPL/p1C3i7mAbQOs4yqRWlFaGVTzOawoQUOPVwDpzeeQKBgQDs1P7F4wURqX1qZR0hSTqOigg48ychaOF66new3SuWk2CVBy8Q8b7odGSPyxJSGZvFLoznPYuSaXCtQ935WWfjB7Z5JpSWCi9BmJnkh41k/KvgMqAEGkZP6ul/zFnDWj94VwXEBz3TuRk574vK2coWoxjM6h1dlJjRBVVTs8dnrQKBgQCduKCjPDUuOHbcNn3VsaHEZX1XyiXN5gds08o61PjiHM42wYXxfUt59nBJmg2yAVRIrKYHfswJcxb5XUTDI5ZhCBnIPrdrQzj7FNadm/7mKDvSsvZdpfTiHY341XnvCq7OcNNj8g5fVsWF769strepQReSug7xgX7ojPvVcAZhDwKBgD57KwP2Er5IIuhQ6NCBS0uTqvurWqV70BDnjtBAaWF+XDq0/HvR63XUTzuIbbrvOqNY1p+jIxFrc+iiQQupxLimrkNkJEs5QKJjqiYahPkhmA68DG9Ip0gqR5QJy5y4UIplGwZOiscyzC72vcC0mJZETSSylzC7JV3vtEUy5ua5AoGAEwlDqjAMIyYBgpa5HV+xLKkrNbtaUL2gy8vMLsmhuHjNkuJMrlb3EyNhbiC/4moyqArehy0Qp1tSvIo7UGotLkzx/69CKBoW+IcNWDyJyXG1trqO7cKoCdqTViM98lIRwyzu9rMydONeN8o0HCT5id4nYDhAsXl1vc+2XY6F1pUCgYEA0dxGHBTKD/WzIvTYGYD6Xx224Y84mO6x2Mu16zFoq/NjuIdKi2O+92yrKDCMMCqaY77fXvWD3eI7QYYlbKAOqdLKVipTbhnBccDyNbtYHVg59t4xS+K6HyD+quVkL9n40UkxSZbKZBQhqt+vlQy0FUgONFii1ACZO0A8Sc/bvn4="); |
| | | merConfig.setRsaPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB"); |
| | | BasePay.initWithMerConfig(merConfig); |
| | | ord_amt = new BigDecimal(ord_amt).toString(); |
| | | |
| | | // 2.组装请求参数 |
| | | Map<String, Object> paramsInfo = new HashMap<>(); |
| | |
| | | return response; |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | try { |
| | | // AllocationResp allocationResp = AllocationExample.create(allocationReq); |
| | | Map<String, Object> fenzhang = FenZhangUtil.fenzhang(req_seq_id, seq_date, String.valueOf(sum), "1"); |
| | | String resp_code = fenzhang.get("resp_code").toString(); |
| | | if(!"00000000".equals(resp_code)){ |
| | | continue; |
| | | } |
| | | System.out.println(company.getId() + "::" + company.getName() + "-----分账状态" + fenzhang.toString() + "--------------"); |
| | | if (!"S".equals(fenzhang.get("trans_stat").toString())) { |
| | | List<Income> collect = state.stream().filter(e -> e.getUserType() == 1 && company.getId().equals(e.getObjectId())).collect(Collectors.toList()); |
| | |
| | | Map<String, Object> fenzhang = FenZhangUtil.fenzhang(req_seq_id, seq_date, String.valueOf(sum), "1"); |
| | | // AllocationResp allocationResp = AllocationExample.create(allocationReq); |
| | | System.out.println(tDriver.getId() + "::" + tDriver.getName() + "-----分账状态" + fenzhang.toString() + "--------------"); |
| | | String resp_code = fenzhang.get("resp_code").toString(); |
| | | if(!"00000000".equals(resp_code)){ |
| | | continue; |
| | | } |
| | | if (!"S".equals(fenzhang.get("trans_stat").toString())) { |
| | | List<Income> collect1 = state.stream().filter(e -> e.getUserType() == 2 && tDriver.getId().equals(e.getObjectId())).collect(Collectors.toList()); |
| | | collect1.stream().forEach(e -> { |
| | |
| | | @Value("${pushMinistryOfTransport}") |
| | | private boolean pushMinistryOfTransport; |
| | | |
| | | @Value("${huifu.rsa_public_key}") |
| | | private String rsa_public_key; |
| | | |
| | | |
| | | |
| | | |
| | |
| | | |
| | | |
| | | /** |
| | | * 斗拱回调 取消订单 |
| | | * 斗拱回调 微信取消订单 |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | |
| | | break; |
| | | case 3: |
| | | orderCrossCityService.payCancelOrderCrossCity(id, order_id, 1,out_trade_no); |
| | | break; |
| | | } |
| | | |
| | | PrintWriter out = response.getWriter(); |
| | | out.print("success"); |
| | | out.flush(); |
| | | out.close(); |
| | | |
| | | } |
| | | |
| | | // cloudPay(map.get("total_fee"),map.get("transaction_id"),1); |
| | | } |
| | | |
| | | |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 斗拱回调 取消订单支付宝 |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/DGCancelOrderTaxiZfb") |
| | | public void DGCancelOrderTaxiZfb(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | String sign =request.getParameter("sign"); |
| | | String resp_data = request.getParameter("resp_data"); |
| | | System.out.println(sign); |
| | | System.out.println(resp_data); |
| | | resp_data = resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")"); |
| | | |
| | | |
| | | boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign); |
| | | if(verify){ |
| | | JSONObject jsonObject = JSONObject.parseObject(resp_data); |
| | | String order_id = jsonObject.get("out_trans_id").toString(); |
| | | String out_trade_no = jsonObject.get("req_seq_id").toString(); |
| | | String trans_stat = jsonObject.get("trans_stat").toString(); |
| | | if("S".equals(trans_stat)){ |
| | | String[] split = out_trade_no.split("_"); |
| | | Integer id = Integer.valueOf(split[0]); |
| | | Integer type = Integer.valueOf(split[1]); |
| | | switch (type){ |
| | | case 1: |
| | | orderPrivateCarService.payCancelOrderPrivateCar(id, order_id, 2,out_trade_no); |
| | | break; |
| | | case 2: |
| | | orderTaxiService.payCancelOrderTaxi(id, order_id, 2,out_trade_no); |
| | | break; |
| | | case 3: |
| | | orderCrossCityService.payCancelOrderCrossCity(id, order_id, 2,out_trade_no); |
| | | break; |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | /** |
| | | * 斗拱回调 支付 |
| | | * 斗拱回调 微信支付 |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | |
| | | break; |
| | | case 5: |
| | | orderLogisticsService.payOrderLogisticsCallback(id, order_id, 1,out_trade_no); |
| | | break; |
| | | } |
| | | |
| | | PrintWriter out = response.getWriter(); |
| | | out.print("success"); |
| | | out.flush(); |
| | | out.close(); |
| | | |
| | | } |
| | | |
| | | // cloudPay(map.get("total_fee"),map.get("transaction_id"),1); |
| | | } |
| | | |
| | | |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | /** |
| | | * 斗拱回调 支付宝支付 |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/DGCallBackZfb") |
| | | public void DGCallBackZfb(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | String sign =request.getParameter("sign"); |
| | | String resp_data = request.getParameter("resp_data"); |
| | | System.out.println(sign); |
| | | System.out.println(resp_data); |
| | | resp_data = resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")"); |
| | | |
| | | |
| | | boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign); |
| | | if(verify){ |
| | | JSONObject jsonObject = JSONObject.parseObject(resp_data); |
| | | String o = jsonObject.get("req_seq_id").toString(); |
| | | String order_id = jsonObject.get("out_trans_id").toString(); |
| | | String out_trade_no = jsonObject.get("req_seq_id").toString(); |
| | | String trans_stat = jsonObject.get("trans_stat").toString(); |
| | | if("S".equals(trans_stat)){ |
| | | String[] split = out_trade_no.split("_"); |
| | | Integer id = Integer.valueOf(split[0]); |
| | | Integer type = Integer.valueOf(split[1]); |
| | | switch (type){ |
| | | case 1: |
| | | orderPrivateCarService.payOrderPrivateCarCallback(id, order_id, 2,out_trade_no); |
| | | break; |
| | | case 2: |
| | | orderTaxiService.payOrderTaxiCallback(id, order_id, 2,0,out_trade_no); |
| | | break; |
| | | case 3: |
| | | orderCrossCityService.payOrderCrossCityCallback(id, order_id, 2,null,out_trade_no); |
| | | break; |
| | | case 4: |
| | | orderLogisticsService.payOrderLogisticsCallback(id, order_id, 2,out_trade_no); |
| | | break; |
| | | case 5: |
| | | orderLogisticsService.payOrderLogisticsCallback(id, order_id, 2,out_trade_no); |
| | | break; |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | /** |
| | | * 斗拱回调 支付小件物流差价支付回调 |
| | | * 斗拱回调 微信支付小件物流差价支付回调 |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | |
| | | Integer id = Integer.valueOf(split[0]); |
| | | Integer type = Integer.valueOf(split[1]); |
| | | orderLogisticsService.payOrderLogisticsSpreadCallback(id, order_id, 1); |
| | | |
| | | PrintWriter out = response.getWriter(); |
| | | out.print("success"); |
| | | out.flush(); |
| | | out.close(); |
| | | |
| | | } |
| | | |
| | | // cloudPay(map.get("total_fee"),map.get("transaction_id"),1); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | /** |
| | | * 斗拱回调 支付宝支付小件物流差价支付回调 |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/DGPayOrderLogisticsSpreadZfb") |
| | | public void DGPayOrderLogisticsSpreadZfb(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | String sign =request.getParameter("sign"); |
| | | String resp_data = request.getParameter("resp_data"); |
| | | resp_data = resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")"); |
| | | |
| | | boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign); |
| | | System.out.println("斗拱回调 支付小件物流差价支付回调:"); |
| | | if(verify){ |
| | | JSONObject jsonObject = JSONObject.parseObject(resp_data); |
| | | String order_id = jsonObject.get("out_trans_id").toString(); |
| | | String out_trade_no = jsonObject.get("req_seq_id").toString(); |
| | | String trans_stat = jsonObject.get("trans_stat").toString(); |
| | | if("S".equals(trans_stat) && ToolUtil.isNotEmpty(out_trade_no)){ |
| | | String[] split = out_trade_no.split("_"); |
| | | Integer id = Integer.valueOf(split[0]); |
| | | Integer type = Integer.valueOf(split[1]); |
| | | orderLogisticsService.payOrderLogisticsSpreadCallback(id, order_id, 2); |
| | | |
| | | PrintWriter out = response.getWriter(); |
| | | out.print("success"); |
| | |
| | | |
| | | |
| | | /** |
| | | * 斗拱回调 购买出行卡支付回调 |
| | | * 斗拱回调 微信购买出行卡支付回调 |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/DGPayTaxiCardPaymentSpread") |
| | | public void DGPayTaxiCardPaymentSpread(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | String sign =request.getParameter("sign"); |
| | | String resp_data = request.getParameter("resp_data"); |
| | | resp_data = resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")"); |
| | | |
| | | boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign); |
| | | System.out.println("斗拱回调 购买出行卡支付回调:"); |
| | | if(verify){ |
| | | JSONObject jsonObject = JSONObject.parseObject(resp_data); |
| | | String order_id = jsonObject.get("out_trans_id").toString(); |
| | | String out_trade_no = jsonObject.get("req_seq_id").toString(); |
| | | String trans_stat = jsonObject.get("trans_stat").toString(); |
| | | if("S".equals(trans_stat) && ToolUtil.isNotEmpty(out_trade_no)){ |
| | | out_trade_no = out_trade_no.split("_")[0]; |
| | | taxiCardService.payTaxiCardPaymentSpread(Integer.valueOf(out_trade_no), order_id); |
| | | |
| | | PrintWriter out = response.getWriter(); |
| | | out.print("success"); |
| | | out.flush(); |
| | | out.close(); |
| | | |
| | | } |
| | | |
| | | // cloudPay(map.get("total_fee"),map.get("transaction_id"),1); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | /** |
| | | * 斗拱回调 支付宝购买出行卡支付回调 |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/DGPayTaxiCardPaymentSpreadZfb") |
| | | public void DGPayTaxiCardPaymentSpreadZfb(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | String sign =request.getParameter("sign"); |
| | | String resp_data = request.getParameter("resp_data"); |
| | |
| | | |
| | | |
| | | /** |
| | | * 斗拱 感谢费支付回调 |
| | | * 斗拱 微信感谢费支付回调 |
| | | * @param request |
| | | * @param response |
| | | */ |
| | |
| | | |
| | | |
| | | /** |
| | | * 斗拱 支付宝感谢费支付回调 |
| | | * @param request |
| | | * @param response |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/base/DGPayThankYouFeeZfb") |
| | | public void DGPayThankYouFeeZfb(HttpServletRequest request, HttpServletResponse response){ |
| | | try { |
| | | String sign =request.getParameter("sign"); |
| | | String resp_data = request.getParameter("resp_data"); |
| | | resp_data = resp_data.replaceAll("& #40;", "(").replaceAll("& #41;",")"); |
| | | boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign); |
| | | if(verify){ |
| | | JSONObject jsonObject = JSONObject.parseObject(resp_data); |
| | | String order_id = jsonObject.get("out_trans_id").toString(); |
| | | String out_trade_no = jsonObject.get("req_seq_id").toString(); |
| | | String trans_stat = jsonObject.get("trans_stat").toString(); |
| | | if("S".equals(trans_stat) && ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id)){ |
| | | |
| | | String[] s = out_trade_no.split("_"); |
| | | switch (Integer.valueOf(s[1])){ |
| | | case 1: |
| | | orderPrivateCarService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no); |
| | | case 2: |
| | | orderTaxiService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no); |
| | | case 3: |
| | | orderCrossCityService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no); |
| | | case 4: |
| | | orderLogisticsService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no); |
| | | case 5: |
| | | orderLogisticsService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no); |
| | | case 6: |
| | | orderCharteredCarService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no); |
| | | case 7: |
| | | orderCallService.payThankYouFeeCallback(Integer.valueOf(s[0]), order_id, 2,out_trade_no); |
| | | } |
| | | |
| | | PrintWriter out = response.getWriter(); |
| | | out.print("success"); |
| | | out.flush(); |
| | | out.close(); |
| | | |
| | | } |
| | | // cloudPay(map.get("total_fee"),map.get("transaction_id"),1); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 感谢费支付回调 |
| | | * @param request |
| | | * @param response |
| | |
| | | import com.stylefeng.guns.modular.cloudPayment.example.DepositExample; |
| | | import com.stylefeng.guns.modular.cloudPayment.req.DepositReq; |
| | | import com.stylefeng.guns.modular.enums.PaymentTypeEnum; |
| | | import com.stylefeng.guns.modular.huifu.biz.DouGongPayUtil; |
| | | import com.stylefeng.guns.modular.system.model.Company; |
| | | import com.stylefeng.guns.modular.system.model.UserInfo; |
| | | import com.stylefeng.guns.modular.system.model.UserWithdrawal; |
| | |
| | | Integer id = Integer.valueOf(split[1]); |
| | | String payAmt = jsonObject.get("pay_amt").toString(); |
| | | userInfoService.payCancelUserBalance(Integer.valueOf(uid), order_id, Integer.valueOf(id), 1); |
| | | appOrderController.createAllocationReqUser(1, Integer.valueOf(uid), 1, new BigDecimal(payAmt).divide(new BigDecimal(100)).doubleValue()); |
| | | // appOrderController.createAllocationReqUser(1, Integer.valueOf(uid), 1, new BigDecimal(payAmt).divide(new BigDecimal(100)).doubleValue()); |
| | | // cloudPay(Integer.valueOf(uid),map.get("total_fee"),map.get("transaction_id"),1); |
| | | PrintWriter out = response.getWriter(); |
| | | out.write(200); |
| | | out.flush(); |
| | | out.close(); |
| | | } |
| | | |
| | | |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | /** |
| | | * 斗拱充值回调函数 |
| | | } |
| | | * @param request |
| | | */ |
| | | @ResponseBody |
| | | @PostMapping("/DGCancelUserBalanceZfb") |
| | | public void DGCancelUserBalanceZfb(HttpServletRequest request, HttpServletResponse response) { |
| | | try { |
| | | System.out.println("DG额充值回调函数"); |
| | | String sign = request.getParameter("sign"); |
| | | String resp_data = request.getParameter("resp_data"); |
| | | System.out.println(sign); |
| | | System.out.println(resp_data); |
| | | resp_data = resp_data.replaceAll("& #40;", "(").replaceAll("& #41;", ")"); |
| | | |
| | | |
| | | boolean verify = RsaUtils.verify(resp_data, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB", sign); |
| | | |
| | | if (verify) { |
| | | JSONObject jsonObject = JSONObject.parseObject(resp_data); |
| | | String order_id = jsonObject.get("out_trans_id").toString(); |
| | | String out_trade_no = jsonObject.get("req_seq_id").toString(); |
| | | String trans_stat = jsonObject.get("trans_stat").toString(); |
| | | if ("S".equals(trans_stat)) { |
| | | String[] split = out_trade_no.split("_"); |
| | | Integer uid = Integer.valueOf(split[0]); |
| | | Integer id = Integer.valueOf(split[1]); |
| | | String payAmt = jsonObject.get("pay_amt").toString(); |
| | | userInfoService.payCancelUserBalance(Integer.valueOf(uid), order_id, Integer.valueOf(id), 2); |
| | | |
| | | // cloudPay(Integer.valueOf(uid),map.get("total_fee"),map.get("transaction_id"),1); |
| | | PrintWriter out = response.getWriter(); |
| | | out.write(200); |
| | |
| | | // 请求流水号 |
| | | paramsInfo.put("req_seq_id", "rQ20251119164316677154"); |
| | | // 请求日期 |
| | | paramsInfo.put("req_date", "20251119"); |
| | | paramsInfo.put("req_date", "20251121"); |
| | | // 出款方商户号 |
| | | paramsInfo.put("out_huifu_id", "6666000182995771"); |
| | | // 支付金额 |
| | |
| | | paramsInfo.put("trans_fee_take_flag", "OUT"); |
| | | // 核验值verify_type不为空时必填。当verify_type=SMS时,填写用户收到的短信验证码 |
| | | // paramsInfo.put("verify_value", "test"); |
| | | |
| | | System.out.println(paramsInfo); |
| | | // 3. 发起API调用 |
| | | Map<String, Object> response = BasePayRequest.requestBasePay("v2/trade/acctpayment/pay", paramsInfo, null, false);; |
| | | System.out.println(response); |
| | |
| | | import cn.hutool.http.HttpUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.huifu.bspay.sdk.opps.core.BasePay; |
| | | import com.huifu.bspay.sdk.opps.core.config.MerConfig; |
| | | import com.huifu.bspay.sdk.opps.core.net.BasePayRequest; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.huifu.properties.HuiFuProperties; |
| | | import com.stylefeng.guns.modular.system.util.ResultUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.security.KeyFactory; |
| | | import java.security.PrivateKey; |
| | | import java.security.Signature; |
| | | import java.security.spec.PKCS8EncodedKeySpec; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Base64; |
| | | import java.util.Date; |
| | | import java.util.TreeMap; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 斗拱支付工具类 |
| | | */ |
| | | public class DouGongPayUtil { |
| | | |
| | | @Autowired |
| | | private HuiFuProperties huiFuProperties; |
| | | @Value("${huifu.product_id}") |
| | | private static String productId; |
| | | |
| | | @Value("${huifu.sys_id}") |
| | | private static String sysId; |
| | | |
| | | @Value("${huifu.rsa_private_key}") |
| | | private static String privateKeyBase64; |
| | | |
| | | |
| | | @Value("${callbackPath}") |
| | | private static String callbackPath;//支付回调网关地址 |
| | | |
| | | private static String callbackPath = "http://221.182.45.100:8006";//支付回调网关地址 |
| | | |
| | | public static void main(String[] args) throws Exception { |
| | | |
| | |
| | | String req_seq_id = System.currentTimeMillis() + ToolUtil.getRandomNumber(10); |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); |
| | | String req_date = simpleDateFormat.format(new Date()); |
| | | |
| | | String money ="0.01"; |
| | | money = new BigDecimal(money).setScale(2, RoundingMode.HALF_UP).toString(); |
| | | String a = "{\n" + |
| | | " \"req_seq_id\": \"" + req_seq_id + "\",\n" + |
| | | " \"req_date\": \"" + req_date + "\",\n" + |
| | | " \"huifu_id\": \"6666000182995771\",\n" + |
| | | " \"trade_type\": \"A_NATIVE\",\n" + |
| | | " \"trans_amt\": \"0.01\",\n" + |
| | | " \"trans_amt\": \""+money+"\",\n" + |
| | | " \"goods_desc\": \"test\",\n" + |
| | | " \"remark\": \"嘉易行\",\n" + |
| | | " \"notify_url\": \""+"http://221.182.45.100:8006/base/DGCallBack"+"\",\n" + |
| | | " \"notify_url\": \""+"http://221.182.45.100:8006/base/DGCallBackZfb"+"\",\n" + |
| | | " }"; |
| | | // 去掉换行、空格等格式字符 |
| | | a = a.replaceAll("\\s", ""); |
| | |
| | | " \"req_date\": \"" + req_date + "\",\n" + |
| | | " \"huifu_id\": \"6666000182995771\",\n" + |
| | | " \"trade_type\": \"A_NATIVE\",\n" + |
| | | " \"trans_amt\": \"0.01\",\n" + |
| | | " \"trans_amt\": \""+money+"\",\n" + |
| | | " \"goods_desc\": \"test\",\n" + |
| | | " \"remark\": \"嘉易行\",\n" + |
| | | " \"notify_url\": \""+"http://221.182.45.100:8006/base/DGCallBack"+"\",\n" + |
| | | " \"notify_url\": \""+"http://221.182.45.100:8006/base/DGCallBackZfb"+"\",\n" + |
| | | " }\n" + |
| | | "}\n"; |
| | | System.out.println(p); |
| | |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); |
| | | String req_date = simpleDateFormat.format(new Date()); |
| | | String notifyUrl = ""; |
| | | |
| | | money = new BigDecimal(money).setScale(2, RoundingMode.HALF_UP).toString(); |
| | | switch (callType) { |
| | | case 1: |
| | | // 订单支付 |
| | |
| | | break; |
| | | case 6: |
| | | // 充值 |
| | | notifyUrl = callbackPath + "/base/wxCancelUserBalance"; |
| | | notifyUrl = callbackPath + "/base/DGCancelUserBalance"; |
| | | break; |
| | | } |
| | | String a = "{\n" + |
| | |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); |
| | | String req_date = simpleDateFormat.format(new Date()); |
| | | String notifyUrl = ""; |
| | | |
| | | money = new BigDecimal(money).setScale(2, RoundingMode.HALF_UP).toString(); |
| | | switch (callType) { |
| | | case 1: |
| | | // 订单支付 |
| | | notifyUrl = callbackPath + "/base/DGCallBack"; |
| | | notifyUrl = callbackPath + "/base/DGCallBackZfb"; |
| | | break; |
| | | case 2: |
| | | // 支付小件物流差价支付回调 |
| | | notifyUrl = callbackPath +"/base/DGPayOrderLogisticsSpread"; |
| | | notifyUrl = callbackPath +"/base/DGPayOrderLogisticsSpreadZfb"; |
| | | break; |
| | | case 3: |
| | | // 购买出行卡支付回调 |
| | | notifyUrl = callbackPath+"/base/DGPayTaxiCardPaymentSpread"; |
| | | notifyUrl = callbackPath+"/base/DGPayTaxiCardPaymentSpreadZfb"; |
| | | break; |
| | | case 4: |
| | | // 感谢费支付回调 |
| | | notifyUrl = callbackPath + "/base/DGPayThankYouFee"; |
| | | notifyUrl = callbackPath + "/base/DGPayThankYouFeeZfb"; |
| | | break; |
| | | case 5: |
| | | // 取消订单 |
| | | notifyUrl = callbackPath + "/base/DGCancelOrderTaxi"; |
| | | notifyUrl = callbackPath + "/base/DGCancelOrderTaxiZfb"; |
| | | break; |
| | | case 6: |
| | | // 充值 |
| | | notifyUrl = callbackPath + "/base/wxCancelUserBalance"; |
| | | notifyUrl = callbackPath + "/base/DGCancelUserBalanceZfb"; |
| | | break; |
| | | } |
| | | String a = "{\n" + |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | public static Map<String, Object> payFromUser(String req_seq_id, String req_date, String ord_amt, String huifu_id) throws Exception { |
| | | // 1. 数据初始化,填入对应的商户配置 |
| | | MerConfig merConfig = new MerConfig(); |
| | | // merConfig.setProcutId(huiFuProperties.getProductId()); |
| | | // merConfig.setSysId(huiFuProperties.getSysId()); |
| | | // merConfig.setRsaPrivateKey(huiFuProperties.getRsaPrivateKey()); |
| | | // merConfig.setRsaPublicKey(huiFuProperties.getRsaPublicKey()); |
| | | merConfig.setProcutId("KAZX"); |
| | | merConfig.setSysId("6666000182995771"); |
| | | merConfig.setRsaPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCR6W3ynQJL7f2C8vFYMcQkcirpkif9ZhLq1374jIlV87nv0T9uIm6DoW8LyNEl9w2Yc5qoBv70tt/oVpemA6IZY6NXzE2USNi/sv2qUTtapcIRYxe4acCfY8K+x+p7W2e6wUWIpl9qgZA+UnFmHQ0HT6Ywzq2jJL92JdIs147Ud1aVi3aX8LYItj0z3ZKwZQkaJawZSWQk2+EdPfN059L2qFkPtnT7JIthAdUTJYZA13K4tzw6mXp/DbgwVmLhrlmwl/ccSv2Q0ABfEk7jIxF1nZmCmSy3HrEw9xWyrg1BC+DgXBdyF0OEtpNfv+UW080syUVBNN0irHVuDP81BaAjAgMBAAECggEAGlBZprZQErdxz6rWgYxADj6UpJjaI2XEJZwFZveZUOnqb2hyIv+MpKp5Z0upBErApey7SHAyjJlqWfE72hGvqxp/+7Z5izNz+2ZhPtT1ekyIajBPt89CkLwiA9vz2plKZLC0RIeUj5WcGNEvaDX3AomHtCehwtk+uiTp+XJKbOBtkkQszcdCGY1DVoQ0ppFoINnM9VLbEzaFaG7VS3eFkU4cf2CwcrnJB1RncyPFK+bGFvjkLM/eQbsh8YxkBqaGz/8UM1Na1SEidqdyUF71ltqnI0u8pLe0V+5jugVW+3lPL/p1C3i7mAbQOs4yqRWlFaGVTzOawoQUOPVwDpzeeQKBgQDs1P7F4wURqX1qZR0hSTqOigg48ychaOF66new3SuWk2CVBy8Q8b7odGSPyxJSGZvFLoznPYuSaXCtQ935WWfjB7Z5JpSWCi9BmJnkh41k/KvgMqAEGkZP6ul/zFnDWj94VwXEBz3TuRk574vK2coWoxjM6h1dlJjRBVVTs8dnrQKBgQCduKCjPDUuOHbcNn3VsaHEZX1XyiXN5gds08o61PjiHM42wYXxfUt59nBJmg2yAVRIrKYHfswJcxb5XUTDI5ZhCBnIPrdrQzj7FNadm/7mKDvSsvZdpfTiHY341XnvCq7OcNNj8g5fVsWF769strepQReSug7xgX7ojPvVcAZhDwKBgD57KwP2Er5IIuhQ6NCBS0uTqvurWqV70BDnjtBAaWF+XDq0/HvR63XUTzuIbbrvOqNY1p+jIxFrc+iiQQupxLimrkNkJEs5QKJjqiYahPkhmA68DG9Ip0gqR5QJy5y4UIplGwZOiscyzC72vcC0mJZETSSylzC7JV3vtEUy5ua5AoGAEwlDqjAMIyYBgpa5HV+xLKkrNbtaUL2gy8vMLsmhuHjNkuJMrlb3EyNhbiC/4moyqArehy0Qp1tSvIo7UGotLkzx/69CKBoW+IcNWDyJyXG1trqO7cKoCdqTViM98lIRwyzu9rMydONeN8o0HCT5id4nYDhAsXl1vc+2XY6F1pUCgYEA0dxGHBTKD/WzIvTYGYD6Xx224Y84mO6x2Mu16zFoq/NjuIdKi2O+92yrKDCMMCqaY77fXvWD3eI7QYYlbKAOqdLKVipTbhnBccDyNbtYHVg59t4xS+K6HyD+quVkL9n40UkxSZbKZBQhqt+vlQy0FUgONFii1ACZO0A8Sc/bvn4="); |
| | | merConfig.setRsaPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsWrruP9JBxrUd8uEX5Z8y7pg/UIr5RNHSgDnHqNI1hbi2MfTzB5vZ275wSFFaLDD9BesgDWqsUepPS/opROlDCg9y6WYH8mkN23NmHL9F8kT48OMmH722am+Hp0XVMMwXqA0oNt4f7oW6kDemjZW8/RT4vIE7cyxoxSsVRvjqSpx9wDgFLPWh3o0pHQaoxLyeUsGBATHFrxEDlosBvsuXjMcgjPKXALrcemzKOhBmBkLgyxNVmh61ZK+FNXd+/X4PeZlnWf54NRQAUKe1308E6IIaszo+CjneKuhj1m/X4f7AIvxAqlhuCV5E/DfKRmGopxaWqdtE960Y/H4SmBh2wIDAQAB"); |
| | | BasePay.initWithMerConfig(merConfig); |
| | | |
| | | ord_amt=new BigDecimal(ord_amt).setScale(2,RoundingMode.HALF_UP).toString(); |
| | | |
| | | // 2.组装请求参数 |
| | | Map<String, Object> paramsInfo = new HashMap<>(); |
| | | // 请求流水号 |
| | | paramsInfo.put("req_seq_id",req_seq_id); |
| | | // 请求日期 |
| | | paramsInfo.put("req_date", req_date); |
| | | // 出款方商户号 |
| | | paramsInfo.put("out_huifu_id", "6666000182995771"); |
| | | // 支付金额 |
| | | paramsInfo.put("ord_amt", ord_amt); |
| | | // 分账对象 |
| | | paramsInfo.put("acct_split_bunch", "{\"acct_infos\":[{\"div_amt\":\""+ord_amt+"\",\"huifu_id\":\""+huifu_id+"\"}]}"); |
| | | // 安全信息 |
| | | paramsInfo.put("risk_check_data", "{\"sub_product\":\"1\",\"transfer_type\":\"05\"}"); |
| | | // 手续费承担方标识余额支付手续费承担方标识;商户余额支付扣收规则为接口指定承担方时必填!枚举值:<br/>OUT:出款方;<br/>IN:分账接受方。<br/><font color="green">示例值:IN</font> |
| | | paramsInfo.put("trans_fee_take_flag", "OUT"); |
| | | // 核验值verify_type不为空时必填。当verify_type=SMS时,填写用户收到的短信验证码 |
| | | // paramsInfo.put("verify_value", "test"); |
| | | // 3. 发起API调用 |
| | | Map<String, Object> response = BasePayRequest.requestBasePay("v2/trade/acctpayment/pay", paramsInfo, null, false);; |
| | | return response; |
| | | } |
| | | |
| | | |
| | | |
| | | public static String sign(String data, String privateKeyBase64) { |
| | | // Base64 --> Key |
| | | try { |
| | |
| | | import com.stylefeng.guns.core.util.JwtTokenUtil; |
| | | import com.stylefeng.guns.core.util.ToolUtil; |
| | | import com.stylefeng.guns.modular.account.controller.AppOrderController; |
| | | import com.stylefeng.guns.modular.account.dao.UserWithdrawalMapper; |
| | | import com.stylefeng.guns.modular.account.server.UserWithdrawalService; |
| | | import com.stylefeng.guns.modular.huifu.biz.DouGongPayUtil; |
| | | import com.stylefeng.guns.modular.system.dao.*; |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | |
| | | private boolean pushMinistryOfTransport; |
| | | |
| | | private String salt = "&a.s"; |
| | | @Autowired |
| | | private UserWithdrawalService userWithdrawalService; |
| | | |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public void payCancelUserBalance(Integer id, String order_id, Integer paymentRecordId, Integer type) throws Exception { |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); |
| | | UserInfo userInfo = this.selectById(id); |
| | | System.out.println("用户信息"+userInfo); |
| | | PaymentRecord query = paymentRecordService.selectById(paymentRecordId); |
| | |
| | | paymentRecordService.updateById(query); |
| | | |
| | | this.addCoupon(userInfo.getId(), query.getAmount(), userInfo.getCompanyId(), query.getId());//添加优惠券 |
| | | String date = simpleDateFormat.format(new Date()); |
| | | |
| | | |
| | | UserWithdrawal userWithdrawal1 = userWithdrawalService.selectOne(new EntityWrapper<UserWithdrawal>() |
| | | .eq("phone", userInfo.getPhone()).eq("type", 1) |
| | | .last("LIMIT 1")); |
| | | if(userWithdrawal1.getHuifuId()!=null){ |
| | | DouGongPayUtil.payFromUser(order_id,date, query.getAmount().toString(), userWithdrawal1.getHuifuId()); |
| | | } |
| | | |
| | | } else { |
| | | System.err.println("预支付数据异常(userId = " + id + ")"); |