| | |
| | | package com.ruoyi.other.controller; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.common.security.service.TokenService; |
| | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.BufferedReader; |
| | | import java.io.IOException; |
| | | import java.io.PrintWriter; |
| | | import java.net.URLDecoder; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/integralCallback") |
| | | public R integralCallback(HttpServletRequest request, String r2_OrderNo) { |
| | | // System.err.println("积分充值回调"); |
| | | // PayResult payResult= null; |
| | | // try { |
| | | // payResult = wechatPayService.processNotify(request); |
| | | // } catch (Exception e) { |
| | | // throw new RuntimeException(e); |
| | | // } |
| | | System.err.println("======积分充值回调"); |
| | | System.err.println("======积分充值回调单号" + r2_OrderNo); |
| | | System.err.println("请求" + request.getParameterMap()); |
| | | Map<String, String[]> parameterMap = request.getParameterMap(); |
| | | String r6Status = request.getParameter("r6_Status"); |
| | | if (org.springframework.util.StringUtils.hasLength(r6Status)) { |
| | | if (r6Status.equals("101")) { |
| | | return R.fail("支付失败"); |
| | | public R integralCallback(HttpServletRequest request) throws IOException { |
| | | System.err.println("积分充值回调"); |
| | | Map<String, String> params = new HashMap<String, String>(); |
| | | System.err.println("请求"+request); |
| | | BufferedReader reader = request.getReader(); |
| | | String string1 = reader.toString(); |
| | | System.err.println("请求reader"+string1); |
| | | StringBuilder requestBody = new StringBuilder(); |
| | | String line; |
| | | while ((line = reader.readLine()) != null) { |
| | | requestBody.append(line); |
| | | } |
| | | System.err.println("全部请求体"+requestBody); |
| | | // URL解码 |
| | | String decodedBody = URLDecoder.decode(requestBody.toString(), "UTF-8"); |
| | | System.err.println("解码后请求体: " + decodedBody); |
| | | String[] paramsArray = decodedBody.split("&"); |
| | | String respDataJson = ""; |
| | | for (String param : paramsArray) { |
| | | if (param.startsWith("resp_data=")) { |
| | | respDataJson = param.substring(10); // 去掉"resp_data="前缀 |
| | | break; |
| | | } |
| | | } |
| | | // 循环打印 |
| | | for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) { |
| | | String key = entry.getKey(); |
| | | String[] values = entry.getValue(); |
| | | for (String value : values) { |
| | | System.err.println("======回调开始" + key + ":" + value); |
| | | } |
| | | System.err.println("处理后的"+respDataJson); |
| | | // 转换为JSONObject |
| | | JSONObject resp_data = JSONObject.parseObject(respDataJson); |
| | | System.err.println(resp_data); |
| | | String string = resp_data.getString("trans_stat"); |
| | | if (!string.equals("S")){ |
| | | System.err.println("陈工"); |
| | | } |
| | | IntegralPay integralPay = integralPayService.lambdaQuery().eq(IntegralPay::getCode, r2_OrderNo).one(); |
| | | String req_seq_id = resp_data.getString("req_seq_id"); |
| | | String hf_seq_id = resp_data.getString("hf_seq_id"); |
| | | IntegralPay integralPay = integralPayService.lambdaQuery().eq(IntegralPay::getCode, req_seq_id).one(); |
| | | if (integralPay != null && integralPay.getPayStatus() == 1) { |
| | | |
| | | SysUser data = sysUserClient.getSysUser(integralPay.getUserId()).getData(); |
| | | integralPay.setPayStatus(2); |
| | | integralPay.setPayTime(LocalDateTime.now()); |
| | | // integralPay.setOrderNumber(payResult.getTransactionId()); |
| | | integralPay.setOrderNumber(hf_seq_id); |
| | | integralPayService.updateById(integralPay); |
| | | IntegralRecord integralRecord = new IntegralRecord(); |
| | | integralRecord.setPayId(integralPay.getId()); |
| | |
| | | integralRecord.setIntegralCount(integralPay.getIntegralCount()); |
| | | integralRecord.setDelFlag(0); |
| | | integralRecord.setCreateTime(LocalDateTime.now()); |
| | | integralRecordService.save(integralRecord); |
| | | if (integralPay.getIntegralCount()>0){ |
| | | integralRecordService.save(integralRecord); |
| | | } |
| | | data.setIntegral(data.getIntegral()!=null?data.getIntegral() + integralPay.getIntegralCount():integralPay.getIntegralCount()); |
| | | sysUserClient.updateSysUser(data); |
| | | return R.ok(null, "success"); |
| | |
| | | return R.ok(null, "error"); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | String s = "resp_desc=交易成功[000]&resp_code=00000000&sign=PymKvUt5iBSn1EmBHu41ESxygYl80rHVRZVFlmipqg5zYSF/Yeq30ZJm0l5ztvIaGvUQChYQ5DAVkN/N+TYg1WU+FhMi/RTP15OpBAj8gGtYPyk7Z4lF9FLwiSGmX0RvCYWI5+LVsk10i7+j9332kAuB5GpKm0tOaDGULHZYlfrt5D5BgJ8RKdjYJ4OOV1Ex5J5PNLPYE5uc8rdzTQ9HHTu4N+sBOBV+tXJFYtSOoAaiDsRmv5Er8X8ogSlNODmaj7zBbZQHrPTTs8rtBl+YbQo28cmgykwdl9pPTMtAjkL9dX6/JVApquKgm9M+v8+CDT0MKjn/nyVE4J2EWc/7LQ==&" + |
| | | "resp_data={\"acct_date\":\"20250816\",\"acct_id\":\"F10004674\",\"acct_split_bunch\":{\"acct_infos\":[{\"acct_date\":\"20250816\",\"acct_id\":\"F10004674\",\"div_amt\":\"0.01\",\"huifu_id\":\"6666000174575407\"}],\"fee_acct_date\":\"20250816\",\"fee_acct_id\":\"F10004674\",\"fee_amt\":\"0.00\",\"fee_huifu_id\":\"6666000174575407\"},\"acct_stat\":\"S\",\"atu_sub_mer_id\":\"797542530\",\"avoid_sms_flag\":\"\",\"bagent_id\":\"6666000167477678\",\"bank_desc\":\"支付成功\",\"bank_message\":\"支付成功\",\"bank_order_no\":\"4200002762202508169050647775\"" + |
| | | ",\"bank_seq_id\":\"273346\",\"bank_type\":\"OTHERS\",\"base_acct_id\":\"F10004674\"," + |
| | | "\"batch_id\":\"250816\",\"channel_type\":\"N\",\"charge_flags\":\"758_0\",\"debit_type\"" + |
| | | ":\"0\",\"delay_acct_flag\":\"N\",\"div_flag\":\"0\",\"end_time\":\"20250816153144\"," + |
| | | "\"fee_amount\":\"0.00\",\"fee_amt\":\"0.00\",\"fee_flag\":2,\"fee_formula_infos\"" + |
| | | ":[{\"fee_formula\":\"MAX(0.00,AMT*0.005)\",\"fee_type\":\"TRANS_FEE\"}],\"fee_rec_type" + |
| | | "\":\"1\",\"fee_type\":\"INNER\",\"gate_id\":\"IB\",\"hf_seq_id\":\"002900TOP1B250816153133P665ac139cd300000\"" + |
| | | ",\"huifu_id\":\"6666000174575407\",\"is_delay_acct\":\"0\",\"is_div\":\"0\",\"maze_resp_code\":\"\",\"mer_nam" + |
| | | "e\":\"贵州中嘉瑞祺新能源科技有限公司\",\"mer_ord_id\":\"2025081615313312273346\",\"mypaytsf_discount\":\"0.00\",\"" + |
| | | "need_big_object\":false,\"notify_type\":2,\"org_auth_no\":\"\",\"org_huifu_seq_id\":\"\",\"org_t" + |
| | | "rans_date\":\"\",\"out_ord_id\":\"4200002762202508169050647775\",\"out_trans_id\":\"42" + |
| | | "00002762202508169050647775\",\"party_order_id\":\"032425081655893847103301\",\"pay" + |
| | | "_amt\":\"0.01\",\"pay_scene\":\"02\",\"posp_seq_id\":\"032425081655893847103301\"" + |
| | | ",\"product_id\":\"KAZX\",\"ref_no\":\"153133273346\",\"req_date\":\"202508" + |
| | | "16\",\"req_seq_id\":\"2025081615313312273346\",\"resp_code\":\"00000000" + |
| | | "\",\"resp_desc\":\"交易成功\",\"risk_check_data\":{},\"risk_check_info\":{" + |
| | | "},\"settlement_amt\":\"0.01\",\"sub_resp_code\":\"00000000\",\"sub_resp_desc\"" + |
| | | ":\"交易成功\",\"subsidy_stat\":\"I\",\"sys_id\":\"6666000174575407\",\"" + |
| | | "trade_type\":\"T_MINIAPP\",\"trans_amt\":\"0.01\",\"trans_date\":\"2025081" + |
| | | "6\",\"trans_fee_allowance_info\":{\"actual_fee_amt\":\"0.00\",\"allowance_fee_" + |
| | | "amt\":\"0.00\",\"allowance_type\":\"0\",\"receivable_fee_amt\":\"0.00\"},\"trans_s" + |
| | | "tat\":\"S\",\"trans_time\":\"153133\",\"trans_type\":\"T_MINIAPP\",\"ts_encash_detail\":[" + |
| | | "],\"wx_response\":{\"bank_type\":\"OTHERS\",\"coupon_fee\":\"0.00\",\"openid\":\"o8jhot3gj5UeqqT" + |
| | | "-od35bM6rJOYk\",\"sub_appid\":\"wx049faf9c5234f31c\",\"sub_openid\":\"oJiKr7Rm5v3qGzOSy5WQp8_qrvic\"}}"; |
| | | |
| | | // 解析参数 |
| | | String[] paramsArray = s.split("&"); |
| | | String respDataJson = ""; |
| | | for (String param : paramsArray) { |
| | | if (param.startsWith("resp_data=")) { |
| | | respDataJson = param.substring(10); // 去掉"resp_data="前缀 |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // 转换为JSONObject |
| | | JSONObject resp_data = JSONObject.parseObject(respDataJson); |
| | | System.err.println(resp_data); |
| | | String string = resp_data.getString("trans_stat"); |
| | | if (!string.equals("S")){ |
| | | System.err.println("陈工"); |
| | | } |
| | | String req_seq_id = resp_data.getString("req_seq_id"); |
| | | String hf_seq_id = resp_data.getString("hf_seq_id"); |
| | | System.err.println(req_seq_id); |
| | | System.err.println(hf_seq_id); |
| | | } |
| | | @ResponseBody |
| | | @PostMapping("/serviceCallback") |
| | | public void serviceCallback(HttpServletRequest request, HttpServletResponse response) { |