PayController.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  1. package com.platform.yijia.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.alibaba.fastjson.parser.Feature;
  5. import com.google.gson.Gson;
  6. import com.platform.yijia.param.request.*;
  7. import com.platform.yijia.pojo.AppUserInfo;
  8. import com.platform.yijia.pojo.PayOrder;
  9. import com.platform.yijia.service.AppUserInfoService;
  10. import com.platform.yijia.service.PayOrderService;
  11. import com.platform.yijia.utils.*;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.web.bind.annotation.*;
  16. import javax.annotation.Resource;
  17. import javax.servlet.http.HttpServletRequest;
  18. import javax.servlet.http.HttpServletResponse;
  19. import java.util.*;
  20. @Controller
  21. @RequestMapping("/api")
  22. public class PayController {
  23. private static Logger logger =(Logger) LoggerFactory.getLogger(PayController.class);
  24. @Resource
  25. private PayOrderService payOrderService;
  26. @Resource
  27. private AppUserInfoService appUserInfoService;
  28. /***
  29. * 微信子商户支付接口
  30. * @param weChatPaySetRequest
  31. * @return
  32. */
  33. @RequestMapping(value = "/weChatPaySet", consumes = "application/json", method = RequestMethod.POST)
  34. @ResponseBody
  35. public String weChatPaySet(@RequestBody WeChatPaySetRequest weChatPaySetRequest){
  36. Gson gson = new Gson();
  37. ResultData resultData = null; //返回结果
  38. try {
  39. String type = weChatPaySetRequest.getType(); //获取配置类型
  40. JSONObject reqData = new JSONObject(); //微信子商户支付参数配置
  41. reqData.put("mno", weChatPaySetRequest.getMno()); //商编
  42. reqData.put("subMchIdsubMchId", weChatPaySetRequest.getSubMchIdsubMchId()); //获取微信子商号
  43. if(type != null && type !=""){
  44. reqData.put("type", type);
  45. //根据类型设置必传参数
  46. switch (type){
  47. case "01": //支付Appid
  48. reqData.put("accountType", weChatPaySetRequest.getAccountType()); // 支付Appid类型 配置类型为01时必传
  49. reqData.put("subAppid", weChatPaySetRequest.getSubAppid()); // 支付Appid 配置类型为01,02时必传
  50. break;
  51. case "02": //关注Appid
  52. reqData.put("subAppid", weChatPaySetRequest.getSubAppid()); // 支付Appid 配置类型为01,02时必传
  53. reqData.put("subscribeAppid", weChatPaySetRequest.getSubscribeAppid()); // 推荐关注公众号Appid 配置类型为02时与推荐关注 小程序Appid二选一
  54. reqData.put("receiptAppid", weChatPaySetRequest.getReceiptAppid()); // 推荐关注小程序Appid 配置类型为02时与推荐关注 公众号Appid二选一
  55. break;
  56. case "03": //jsapi授权目录
  57. reqData.put("jsapiPath", weChatPaySetRequest.getJsapiPath()); // jsapi授权目录 配置类型为03时必传
  58. break;
  59. }
  60. }
  61. String sxfPay = SXFPaySign.getSXFPay(reqData); //封装传参信息,增加公共信息,增加业务信息
  62. logger.debug("参数信息:"+ sxfPay);
  63. System.out.println("req:" + sxfPay);
  64. //此处不要改变reqData里面值的顺序用LinkedHashMap
  65. HashMap reqMap = JSON.parseObject(sxfPay, LinkedHashMap.class, Feature.OrderedField);
  66. //组装加密串
  67. String signContent = RSASignature.getOrderContent(reqMap);
  68. System.out.println("拼接后的参数:" + signContent);
  69. logger.debug("拼接后的参数:"+signContent);
  70. //sign
  71. String sign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
  72. reqMap.put("sign", sign);
  73. String reqStr = JSON.toJSONString(reqMap);
  74. System.out.println("请求参数:" + reqMap);
  75. System.out.println("请求参数:" + reqStr);
  76. //String url = "https://openapi-test.tianquetech.com/merchant/weChatPaySet/addConf"; //测试环境
  77. String url = "https://openapi.tianquetech.com/merchant/weChatPaySet/addConf"; //生产环境
  78. //访问第三方接口
  79. String resultJson = HttpUtils.connectPostUrl(url, reqStr);
  80. System.out.println("返回信息:" + resultJson);
  81. // logger.debug("返回信息:"+resultJson);
  82. //不要对reqData排序 所以用LinkedHashMap
  83. HashMap<String, Object> result = JSON.parseObject(resultJson, LinkedHashMap.class, Feature.OrderedField);
  84. if ("0000".equals(result.get("code"))) {
  85. //验签
  86. String signResult = result.get("sign").toString();
  87. result.remove("sign");
  88. String resultStr = RSASignature.getOrderContent(result);
  89. System.out.println(resultStr);
  90. //sign
  91. String resultSign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
  92. System.out.println("resultSign:" + resultSign);
  93. //组装加密串
  94. if (RSASignature.doCheck(resultStr, signResult, SXFPaySign.sxfPublic)) {
  95. System.out.println("===================验签成功==============");
  96. }
  97. }
  98. resultData=ResultData.success(result);
  99. } catch (Exception e) {
  100. resultData=ResultData.error(CodeMsg.YEWU_FAIL,"支付失败");
  101. e.printStackTrace();
  102. }
  103. return gson.toJson(resultData);
  104. }
  105. /**
  106. * 支付接口,前台上传支付信息,支付数据落地生产订单,调用随行付支付接口
  107. * @param
  108. * @return
  109. */
  110. @RequestMapping(value = "/getJhPayInfo", consumes = "application/json", method = RequestMethod.POST)
  111. @ResponseBody
  112. public String getJhPayInfo(@RequestBody PayInfoRequest payInfoRequest){
  113. Gson gson =new Gson();
  114. ResultData resultData =null;
  115. String token=payInfoRequest.getToken();//token
  116. String userType=payInfoRequest.getUserType();//用户登录类型 1 公众号。2 小程序
  117. String mno=payInfoRequest.getMno();//获取商户号
  118. Integer orderId =payInfoRequest.getOrderId();
  119. //根据token 和登录类型 身份验证
  120. AppUserInfo appUserInfo =new AppUserInfo();
  121. //订单类型 是小程序还是公众号
  122. appUserInfo.setUserType(userType);
  123. if(userType.equals("1")){
  124. //1 是公众号
  125. appUserInfo.setBlogToken(token);
  126. }else if(userType.equals("2")){
  127. //2是小程序
  128. appUserInfo.setMinaToken(token);
  129. }
  130. List<AppUserInfo> appUserInfoList =appUserInfoService.Authentication(appUserInfo);
  131. if(appUserInfoList!=null&&appUserInfoList.size()==1){
  132. //调用聚合支付
  133. try{
  134. //根据订单号查询订单信息
  135. PayOrder payOrder=payOrderService.searchPayOrder(orderId);
  136. if(payOrder!=null){
  137. //将业务参数存放在 JSON 对象中
  138. JSONObject reqData = new JSONObject();
  139. reqData.put("ordNo", payOrder.getOrderNo()); //商户订单号
  140. reqData.put("mno", mno); //商户编号
  141. //reqData.put("subMechId", ""); //子商户号
  142. //reqData.put("amt", payOrder.getAmt()); //订单总金额
  143. reqData.put("amt", "0.01");
  144. //reqData.put("discountAmt", ""); //参与优惠金额
  145. //reqData.put("unDiscountAmt", ""); //不参与优惠金额
  146. reqData.put("payType", "WECHAT"); //支付渠道
  147. if(userType.equals("1")){
  148. //1 是公众号
  149. reqData.put("payWay", "02"); //支付方式 02 公众号/服 务窗/js支付 03 小程序
  150. reqData.put("userId", appUserInfoList.get(0).getBlogOpenid()); //用户号 微信:openid; 支付宝:userid;银联:userid;微信&支付宝必传,银联js为非必传
  151. }else if(userType.equals("2")){
  152. //2是小程序
  153. reqData.put("payWay", "03"); //支付方式 02 公众号/服 务窗/js支付 03 小程序
  154. reqData.put("userId", appUserInfoList.get(0).getMinaOpenid()); //用户号 微信:openid; 支付宝:userid;银联:userid;微信&支付宝必传,银联js为非必传
  155. }
  156. //reqData.put("timeExpire", "10"); //订单失效时间, 以分钟为单位
  157. //reqData.put("limitPay", "00"); //限制卡类型: 00-全部 01-限定不能使 用信用卡支付 默认值 00
  158. reqData.put("subject", "聚合支付测试"); //订单标题
  159. //reqData.put("hbFqNum", "6"); //花呗分期数,仅可上送 6 或 12
  160. reqData.put("tradeSource", "01"); //交易来源 01服务商,02收银台,03硬件
  161. reqData.put("trmIp", "172.16.2.1");//商家ip地址
  162. // reqData.put("customerIp", ""); //持卡人ip地址,银联js支付时必传
  163. //reqData.put("subAppid", "wx24210004370ec43b"); //微信子公众号
  164. //reqData.put("outFrontUrl", ""); //js 支付,前台 成功通知地址
  165. //reqData.put("outFrontFailUrl", ""); //js 支付,前台 事变通知地址
  166. reqData.put("notifyUrl", "http://m.huiyj.com/yijia-pay/api/getCallback"); //回调地址
  167. //reqData.put("needReceipt", "00"); //电子发票功能 微信开具电子 发票使用
  168. //reqData.put("ledgerAccountFlag", "00"); //是否做分账 分账交易使 用;00:做; 01:不做;不传默认为不做分账
  169. //reqData.put("ledgerAccountEffectTime", "00"); //分账有效时间 单位为天;是 否做分账选择 00 时该字段必传
  170. // reqData.put("ruleId", "00"); //同 步 分 账 规 则 id
  171. // reqData.put("fusruleId", "00"); //同步分账规则
  172. //reqData.put("ylTrmNo", ""); //银联终端号
  173. //reqData.put("terminalId", ""); //TQ机具编号
  174. //reqData.put("deviceNo ", "1111"); //设备号
  175. // reqData.put("identityFlag", ""); //是否是实名支付
  176. // reqData.put("buyerIdType", "IDCARD"); //证件类型
  177. // reqData.put("buyerIdNo", "410523198701054018"); //证件号
  178. // reqData.put("buyerName", "张三"); //买家姓名
  179. // reqData.put("mobileNum", ""); //手机号
  180. // reqData.put("extend", ""); //备用
  181. String req= SXFPaySign.getSXFPay(reqData);
  182. logger.debug("参数信息:"+req);
  183. System.out.println("req:" + req);
  184. //此处不要改变reqData里面值的顺序用LinkedHashMap
  185. HashMap reqMap = JSON.parseObject(req, LinkedHashMap.class, Feature.OrderedField);
  186. //组装加密串
  187. String signContent = RSASignature.getOrderContent(reqMap);
  188. System.out.println("拼接后的参数:" + signContent);
  189. logger.debug("拼接后的参数:"+signContent);
  190. //sign
  191. String sign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
  192. System.out.println("============签名:" + sign);
  193. reqMap.put("sign", sign);
  194. String reqStr = JSON.toJSONString(reqMap);
  195. System.out.println("请求参数:" + reqMap);
  196. System.out.println("请求参数:" + reqStr);
  197. //调用第三方接口地址
  198. //String url = "https://openapi-test.tianquetech.com/order/jsapiScan";//测试地址
  199. String url = "https://openapi.suixingpay.com/order/jsapiScan";//生产地址
  200. String resultJson = HttpUtils.connectPostUrl(url, reqStr);
  201. System.out.println("返回信息:" + resultJson);
  202. // logger.debug("返回信息:"+resultJson);
  203. //不要对reqData排序 所以用LinkedHashMap
  204. HashMap<String, Object> result = JSON.parseObject(resultJson, LinkedHashMap.class, Feature.OrderedField);
  205. if ("0000".equals(result.get("code"))) {
  206. //验签
  207. String signResult = result.get("sign").toString();
  208. result.remove("sign");
  209. String resultStr = RSASignature.getOrderContent(result);
  210. System.out.println(resultStr);
  211. //sign
  212. String resultSign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
  213. System.out.println("resultSign:" + resultSign);
  214. //组装加密串
  215. if (RSASignature.doCheck(resultStr, signResult, SXFPaySign.sxfPublic)) {
  216. System.out.println("===================验签成功==============");
  217. }
  218. }
  219. resultData=ResultData.success(result);
  220. }else {
  221. resultData=ResultData.error(CodeMsg.YEWU_FAIL,"未查询到订单");
  222. }
  223. }catch (Exception e){
  224. resultData=ResultData.error(CodeMsg.YEWU_FAIL,"订单支付失败");
  225. e.printStackTrace();
  226. }
  227. }else{
  228. //返回失败支付失败信息
  229. resultData=ResultData.error(CodeMsg.USER_NOT_EXSIST);
  230. }
  231. return gson.toJson(resultData);
  232. }
  233. /**
  234. * 验证商户信息查询
  235. */
  236. @RequestMapping(value = "/getJhPayMnoInfo", method = RequestMethod.GET)
  237. @ResponseBody
  238. public String getJhPayMnoInfo(@RequestParam String mno){
  239. try {
  240. JSONObject reqData = new JSONObject();
  241. reqData.put("mno", mno); //商户编号
  242. String req = SXFPaySign.getSXFPay(reqData);
  243. logger.debug("参数信息:" + req);
  244. System.out.println("req:" + req);
  245. //此处不要改变reqData里面值的顺序用LinkedHashMap
  246. HashMap reqMap = JSON.parseObject(req, LinkedHashMap.class, Feature.OrderedField);
  247. //组装加密串
  248. String signContent = RSASignature.getOrderContent(reqMap);
  249. System.out.println("拼接后的参数:" + signContent);
  250. logger.debug("拼接后的参数:" + signContent);
  251. //sign
  252. String sign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
  253. System.out.println("============签名:" + sign);
  254. reqMap.put("sign", sign);
  255. String reqStr = JSON.toJSONString(reqMap);
  256. System.out.println("请求参数:" + reqMap);
  257. System.out.println("请求参数:" + reqStr);
  258. //调用第三方接口地址
  259. //String url = "https://openapi-test.tianquetech.com/merchant/merchantInfoQuery";//测试地址
  260. String url = "https://openapi.tianquetech.com/merchant/merchantInfoQuery";//生产地址
  261. String resultJson = HttpUtils.connectPostUrl(url, reqStr);
  262. HashMap<String, Object> result = JSON.parseObject(resultJson, LinkedHashMap.class, Feature.OrderedField);
  263. if ("0000".equals(result.get("code"))) {
  264. // //验签
  265. // String signResult = result.get("sign").toString();
  266. // result.remove("sign");
  267. // String resultStr = RSASignature.getOrderContent(result);
  268. // System.out.println(resultStr);
  269. // //sign
  270. // String resultSign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
  271. // System.out.println("resultSign:" + resultSign);
  272. // //组装加密串
  273. // if (RSASignature.doCheck(resultStr, signResult, SXFPaySign.sxfPublic)) {
  274. // System.out.println("===================验签成功==============");
  275. // }
  276. }
  277. }catch (Exception e){
  278. e.printStackTrace();
  279. }
  280. return "";
  281. }
  282. /**
  283. * 关单接口
  284. */
  285. @RequestMapping(value = "/getPayOrderClose", consumes = "application/json", method = RequestMethod.POST)
  286. @ResponseBody
  287. public String getPayOrderClose(@RequestBody PayCloseRequestParamter payCloseRequestParamter) {
  288. String results="";
  289. Gson gson =new Gson();
  290. String mno=payCloseRequestParamter.getMno();
  291. String origOrderNo=payCloseRequestParamter.getOrigOrderNo();
  292. String origUuid=payCloseRequestParamter.getOrigUuid();
  293. String token=payCloseRequestParamter.getToken();
  294. String userType=payCloseRequestParamter.getUserType();
  295. boolean flag =appUserInfoService.selectAppUserInfo(token,userType);
  296. ResultData resultData =null;
  297. if(flag){
  298. try {
  299. JSONObject reqData = new JSONObject();
  300. reqData.put("mno",mno); //商户编号
  301. reqData.put("origOrderNo",origOrderNo);//系统商户订单号
  302. reqData.put("origUuid", origUuid);//随行付订单号
  303. String req= SXFPaySign.getSXFPay(reqData);
  304. //此处不要改变reqData里面值的顺序用LinkedHashMap
  305. HashMap reqMap = JSON.parseObject(req, LinkedHashMap.class, Feature.OrderedField);
  306. //组装加密串
  307. String signContent = RSASignature.getOrderContent(reqMap);
  308. System.out.println("拼接后的参数:" + signContent);
  309. //sign
  310. String sign = RSASignature.encryptBASE64(RSASignature.sign(signContent, SXFPaySign.privateKey));
  311. System.out.println("============签名:" + sign);
  312. reqMap.put("sign", sign);
  313. String reqStr = JSON.toJSONString(reqMap);
  314. System.out.println("请求参数:" + reqMap);
  315. System.out.println("请求参数:" + reqStr);
  316. //调用第三方接口地址
  317. // String url = "https://openapi-test.tianquetech.com/query/close";//测试地址
  318. String url = "https://openapi.tianquetech.com/query/close";//生产地址
  319. String resultJson = HttpUtils.connectPostUrl(url, reqStr);
  320. System.out.println("返回信息:" + resultJson);
  321. //不要对reqData排序 所以用LinkedHashMap
  322. HashMap<String, Object> result = JSON.parseObject(resultJson, LinkedHashMap.class, Feature.OrderedField);
  323. if ("0000".equals(result.get("code"))) {
  324. //验签
  325. String signResult = result.get("sign").toString();
  326. result.remove("sign");
  327. String resultStr = RSASignature.getOrderContent(result);
  328. System.out.println(resultStr);
  329. //sign
  330. String resultSign = RSASignature.encryptBASE64(RSASignature.sign(signContent,SXFPaySign.privateKey));
  331. System.out.println("resultSign:" + resultSign);
  332. //组装加密串
  333. if (RSASignature.doCheck(resultStr, signResult, SXFPaySign.sxfPublic)) {
  334. System.out.println("===================验签成功==============");
  335. }
  336. }
  337. resultData=ResultData.success(result);
  338. }catch (Exception e){
  339. resultData=ResultData.error(CodeMsg.YEWU_FAIL,"关闭订单失败");
  340. e.printStackTrace();
  341. }
  342. }else{
  343. resultData=ResultData.error(CodeMsg.USER_NOT_EXSIST);
  344. }
  345. return gson.toJson(resultData);
  346. }
  347. /**
  348. * 异步回调通知
  349. */
  350. @RequestMapping(value = "/getCallback", consumes = "application/json", method = RequestMethod.POST)
  351. @ResponseBody
  352. public void getCallback(HttpServletRequest request,HttpServletResponse response){
  353. logger.info("回调返回过来的参数"+request);
  354. Gson gson =new Gson();
  355. //获取回调参数信息
  356. String uuid=request.getParameter("uuid");////随行付交易流水号
  357. String mno=request.getParameter("mno");//发起交易的商户编号
  358. String ordNo=request.getParameter("ordNo");//商户生成的订单号
  359. String origOrdNo=request.getParameter("origOrdNo");//反交易退款异步通知
  360. String origUuid=request.getParameter("origUuid");//token
  361. String scene=request.getParameter("scene");//用户登录
  362. String amt=request.getParameter("amt");//用户登录
  363. String buyerId=request.getParameter("buyerId");//用户登录
  364. String buyerAccount=request.getParameter("buyerAccount");//用户登录
  365. String transactionId=request.getParameter("transactionId");//用户登录
  366. String drType=request.getParameter("drType");//借贷记标识 1-借,2-贷,3-其他
  367. String payType=request.getParameter("payType");//对订单的描述,取值范围:WECHAT:微信,ALIPAY:支付宝,UNIONPAY:
  368. String payBank=request.getParameter("payBank");//付款银行银行编码,例如 ICBC
  369. String pointAmount=request.getParameter("pointAmount");//代金券金额
  370. String totalOffstAmt=request.getParameter("totalOffstAmt");//消 费 者 付 款金额
  371. String settleAmt=request.getParameter("settleAmt");//商家入账金额
  372. String realRefundAmount=request.getParameter("realRefundAmount");//商家出账金额
  373. String recFeeAmt=request.getParameter("recFeeAmt");//交易手续费
  374. String recFeeRate=request.getParameter("recFeeRate");//交易手续费率
  375. String timeStamp=request.getParameter("timeStamp");//响应时间
  376. String sign=request.getParameter("sign");//签名
  377. String bizCode=request.getParameter("bizCode");//业务返回码
  378. String bizMsg=request.getParameter("bizMsg");//业 务 返 回 信息
  379. String openid=request.getParameter("openid");//微 信 或 支 付宝身份id()opendid userid
  380. String channelId=request.getParameter("channelId");//渠道商户号
  381. String subMechId=request.getParameter("subMechId");//子商户号
  382. String refBuyerAmt=request.getParameter("refBuyerAmt");//消 费 者 到 账金额
  383. String extend=request.getParameter("extend");//备用
  384. //将业务参数存放在 JSON 对象中
  385. JSONObject reqData = new JSONObject();
  386. reqData.put("uuid",uuid);
  387. reqData.put("mno",mno);
  388. reqData.put("ordNo",ordNo);
  389. reqData.put("origOrdNo",origOrdNo);
  390. reqData.put("origUuid",origUuid);
  391. reqData.put("scene",scene);
  392. reqData.put("amt",amt);
  393. reqData.put("buyerId",buyerId);
  394. reqData.put("buyerAccount",buyerAccount);
  395. reqData.put("transactionId",transactionId);
  396. reqData.put("drType",drType);
  397. reqData.put("payType",payType);
  398. reqData.put("payBank",payBank);
  399. reqData.put("pointAmount",pointAmount);
  400. reqData.put("totalOffstAmt",totalOffstAmt);
  401. reqData.put("settleAmt",settleAmt);
  402. reqData.put("realRefundAmount",realRefundAmount);
  403. reqData.put("recFeeAmt",recFeeAmt);
  404. reqData.put("recFeeRate",recFeeRate);
  405. reqData.put("timeStamp",timeStamp);
  406. reqData.put("bizCode",bizCode);
  407. reqData.put("bizMsg",bizMsg);
  408. reqData.put("openid",openid);
  409. reqData.put("channelId",channelId);
  410. reqData.put("subMechId",subMechId);
  411. reqData.put("refBuyerAmt",refBuyerAmt);
  412. reqData.put("extend",extend);
  413. //根据回调信息,先进行验签,验签后修改状态
  414. logger.info("打印参数信息"+gson.toJson(reqData));
  415. //不要对reqData排序 所以用LinkedHashMap
  416. HashMap<String, Object> result = JSON.parseObject(gson.toJson(reqData), LinkedHashMap.class, Feature.OrderedField);
  417. //验签
  418. String resultStr = RSASignature.getOrderContent(result);
  419. JSONObject req = new JSONObject();
  420. System.out.println(resultStr);
  421. if (RSASignature.doCheck(resultStr, sign, SXFPaySign.sxfPublic)) {
  422. System.out.println("===================验签成功==============");
  423. logger.info("验签成功");
  424. //验签成功,修改订单状态
  425. List<PayOrder> list = payOrderService.getPayOrderList(ordNo);
  426. logger.info("根据订单号,查询订单"+gson.toJson(list));
  427. if (list != null && list.size() == 1) {
  428. String status = list.get(0).getStatus();
  429. int ordId= list.get(0).getOrderId();
  430. //状态为未支付 1 修改状态为已支付
  431. if (status.equals("1")) {
  432. PayOrder payOrder = new PayOrder();
  433. payOrder.setOrderId(ordId);
  434. payOrder.setStatus("2");
  435. //根据修改状态
  436. payOrderService.getUpdatePayOrder(payOrder);
  437. req.put("code","success");
  438. req.put("msg","成功");
  439. }
  440. }
  441. }else {
  442. logger.info("验签失败");
  443. req.put("code","fail");
  444. req.put("msg","失败");
  445. }
  446. try {
  447. response.setContentType("application/json; charset=UTF-8");
  448. response.setCharacterEncoding("UTF-8");
  449. response.getWriter().print(req);
  450. response.getWriter().flush();
  451. response.getWriter().close();
  452. }catch (Exception e){
  453. e.printStackTrace();
  454. }
  455. }
  456. }