OnePayController.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479
  1. package com.yihu.wlyy.web.wx;
  2. import com.alibaba.fastjson.JSON;
  3. import com.yihu.wlyy.entity.charge.WlyyCharge;
  4. import com.yihu.wlyy.entity.patient.Patient;
  5. import com.yihu.wlyy.entity.patient.SignFamily;
  6. import com.yihu.wlyy.repository.charge.ChargeDao;
  7. import com.yihu.wlyy.repository.patient.PatientDao;
  8. import com.yihu.wlyy.repository.patient.SignFamilyDao;
  9. import com.yihu.wlyy.service.third.httplog.LogService;
  10. import com.yihu.wlyy.service.weixin.wxpay.common.Configure;
  11. import com.yihu.wlyy.service.weixin.wxpay.model.BindCard;
  12. import com.yihu.wlyy.service.weixin.wxpay.model.Charge;
  13. import com.yihu.wlyy.service.weixin.wxpay.service.OnePayService;
  14. import com.yihu.wlyy.util.SystemConf;
  15. import com.yihu.wlyy.web.WeixinBaseController;
  16. import com.ylzinfo.onepay.sdk.OnepayDefaultClient;
  17. import com.ylzinfo.onepay.sdk.domain.RequestParams;
  18. import com.ylzinfo.onepay.sdk.domain.ResponseParams;
  19. import com.ylzinfo.onepay.sdk.exception.PayException;
  20. import com.ylzinfo.onepay.sdk.utils.StringUtil;
  21. import io.swagger.annotations.Api;
  22. import io.swagger.annotations.ApiOperation;
  23. import io.swagger.annotations.ApiParam;
  24. import org.apache.commons.lang3.StringUtils;
  25. import org.json.JSONObject;
  26. import org.slf4j.Logger;
  27. import org.slf4j.LoggerFactory;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.http.MediaType;
  30. import org.springframework.stereotype.Controller;
  31. import org.springframework.util.StreamUtils;
  32. import org.springframework.web.bind.annotation.RequestMapping;
  33. import org.springframework.web.bind.annotation.RequestMethod;
  34. import org.springframework.web.bind.annotation.RequestParam;
  35. import org.springframework.web.bind.annotation.ResponseBody;
  36. import javax.servlet.http.HttpServletRequest;
  37. import javax.servlet.http.HttpServletResponse;
  38. import java.io.IOException;
  39. import java.io.InputStream;
  40. import java.io.PrintWriter;
  41. import java.io.StringWriter;
  42. import java.net.URLDecoder;
  43. import java.nio.charset.Charset;
  44. import java.util.Date;
  45. import java.util.HashMap;
  46. import java.util.List;
  47. import java.util.Map;
  48. import java.util.regex.Pattern;
  49. /**
  50. * Created by hzp on 2017/05/23.
  51. */
  52. @Controller
  53. @RequestMapping(value = "/onepay", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  54. @Api(description = "统一支付服务")
  55. public class OnePayController extends WeixinBaseController {
  56. private static final Logger LOGGER = LoggerFactory.getLogger(OnePayController.class);
  57. @Autowired
  58. private OnePayService pay;
  59. @Autowired
  60. private PatientDao patientDao;
  61. @Autowired
  62. private SignFamilyDao signFamilyDao;
  63. @Autowired
  64. private ChargeDao chargeDao;
  65. @Autowired
  66. LogService logService;
  67. @Autowired
  68. private Configure config;
  69. @RequestMapping(value = "expensesStatus", method = RequestMethod.GET)
  70. @ApiOperation("居民缴费状态查询")
  71. @ResponseBody
  72. public String expensesStatus() throws Exception {
  73. try {
  74. // 获取居民个人信息 要根据签约code去查找签约扣费状态
  75. String patient = getUID();
  76. // String singCode = "044701ea-5b23-11e6-8344-fa163e8aee56";
  77. // SignFamily sign = signFamilyDao.findByCode(singCode);
  78. // String patient = "915cc456-5b1d-11e6-8344-fa163e8aee56";
  79. SignFamily signFamily = signFamilyDao.findPatientExpensesStatus(patient);
  80. String expensesStatus = signFamily.getExpensesStatus();
  81. if ("0".equals(expensesStatus)) {
  82. return write(200, "未扣费!", "expensesStatus", expensesStatus);
  83. } else if ("1".equals(expensesStatus)) {
  84. return write(200, "已扣费!", "expensesStatus", expensesStatus);
  85. } else if ("2".equals(expensesStatus)) {
  86. return write(200, "已退费!", "expensesStatus", expensesStatus);
  87. } else {
  88. return write(200, "扣费状态数据有误!", "expensesStatus", expensesStatus);
  89. }
  90. } catch (Exception e) {
  91. return error(-1, e.getMessage());
  92. }
  93. }
  94. /**
  95. * 补贴类型:无补贴01,全补贴02,补个人承担部分(20)03,补统筹基金(70)04
  96. *
  97. * @param expensesType 补贴类型
  98. * @return
  99. * @throws Exception
  100. */
  101. @RequestMapping(value = "bill", method = RequestMethod.GET)
  102. @ApiOperation("居民缴费账单")
  103. @ResponseBody
  104. public String getBill(@RequestParam String expensesType) throws Exception {
  105. try {
  106. Pattern pattern = Pattern.compile("[0-9]*");
  107. Boolean flag = pattern.matcher(expensesType).matches();
  108. JSONObject json = new JSONObject();
  109. if (flag) {
  110. switch (expensesType) {
  111. case "01":
  112. json.put("selfpayAmount", 20);
  113. json.put("financialAmount", 0);
  114. json.put("insuranceAmount", 70);
  115. json.put("totalAmount", 90);
  116. break;
  117. case "02":
  118. json.put("selfpayAmount", 0);
  119. json.put("financialAmount", 90);
  120. json.put("insuranceAmount", 0);
  121. json.put("totalAmount", 90);
  122. break;
  123. case "03":
  124. json.put("selfpayAmount", 0);
  125. json.put("financialAmount", 20);
  126. json.put("insuranceAmount", 70);
  127. json.put("totalAmount", 90);
  128. break;
  129. case "04":
  130. json.put("selfpayAmount", 20);
  131. json.put("financialAmount", 70);
  132. json.put("insuranceAmount", 0);
  133. json.put("totalAmount", 90);
  134. break;
  135. }
  136. }
  137. return write(200, "查询缴费账单成功!", "data", json);
  138. } catch (Exception e) {
  139. return error(-1, e.getMessage());
  140. }
  141. }
  142. @RequestMapping(value = "createSicard", method = RequestMethod.POST)
  143. @ApiOperation("生成电子社保卡")
  144. @ResponseBody
  145. public String createSicard() throws Exception {
  146. try {
  147. String sicardUrl = pay.createSicard("0cc6e4562de2437ab2dbbf51a9fc3b49", "oULM4xAj9sOsHJ95ttKYd_Fjh6Hc");//getUID(), getOpenid());
  148. return write(200, "生成电子社保卡成功!", "data", sicardUrl);
  149. } catch (Exception e) {
  150. return error(-1, e.getMessage());
  151. }
  152. }
  153. @RequestMapping(value = "bindCard", method = RequestMethod.POST)
  154. @ApiOperation("查询绑卡信息")
  155. @ResponseBody
  156. public String bindCard() throws Exception {
  157. try {
  158. String patient = getUID();
  159. String openid = getOpenid();
  160. // String patient = "0cc6e4562de2437ab2dbbf51a9fc3b49";
  161. // String openid = "oULM4xAj9sOsHJ95ttKYd_Fjh6Hc";
  162. BindCard bindCard = pay.bindCard(patient, openid);//getUID(), getOpenid()); oULM4xAj9sOsHJ95ttKYd_Fjh6Hc
  163. String sicardUrl = pay.createSicard(patient, openid);//getUID(), getOpenid());
  164. if (bindCard != null) {
  165. JSONObject json = new JSONObject(bindCard);
  166. json.put("bindStatus", "000000");
  167. json.put("sicardUrl", sicardUrl);
  168. return write(200, "查询绑卡信息成功!", "data", json);
  169. } else {
  170. // 返回电子社保卡链接
  171. JSONObject json = new JSONObject();
  172. json.put("sicardUrl", sicardUrl);
  173. json.put("bindStatus", "030007");
  174. return write(200, "生成电子社保卡成功!", "data", json);
  175. }
  176. // BindCard bindCard = pay.bindCard("0cc6e4562de2437ab2dbbf51a9fc3b49", "oULM4xAj9sOsHJ95ttKYd_Fjh6Hc");//getUID(), getOpenid()); oULM4xAj9sOsHJ95ttKYd_Fjh6Hc
  177. // return write(200, "查询绑卡信息成功!", "data", bindCard);
  178. } catch (Exception e) {
  179. return error(-1, e.getMessage());
  180. }
  181. }
  182. @RequestMapping(value = "charge", method = RequestMethod.POST)
  183. @ApiOperation("家庭医生签约支付")
  184. @ResponseBody
  185. public String charge(
  186. @ApiParam(name = "orgCode", value = "医疗机构编号", defaultValue = "3502050300")
  187. @RequestParam String orgCode,
  188. @ApiParam(name = "chargeType", value = "支付类型", defaultValue = "1")
  189. @RequestParam String chargeType,
  190. @ApiParam(name = "chargeRelation", value = "支付关联代码", defaultValue = "044701ea5b2311e68344fa163e8aee56")
  191. @RequestParam String chargeRelation,
  192. @ApiParam(name = "totalAmount", value = "交易总金额(分)", defaultValue = "1")
  193. @RequestParam Integer totalAmount,
  194. /*@ApiParam(name = "selfpayAmount", value = "自费金额(分)", defaultValue = "0")
  195. @RequestParam Integer selfpayAmount,
  196. @ApiParam(name = "insuranceAmount", value = "医保支付金额(分)", defaultValue = "1")
  197. @RequestParam Integer insuranceAmount,
  198. @ApiParam(name = "insuranceAmount", value = "区财政补贴金额(分)", defaultValue = "1")
  199. @RequestParam Integer financialAmount,*/
  200. @ApiParam(name = "feeDetail", value = "费用明细", defaultValue = "[{\"itemName\":\"家庭医生签约支付\",\"itemDesc\":\"家庭医生签约支付\",\"itemOrigPrice\":\"1\",\"itemNowPrice\":\"1\",\"itemNum\":\"1\",\"itemTotalAmt\":\"1\"}]")
  201. @RequestParam String feeDetail) throws Exception {
  202. try {
  203. // 获取居民个人信息
  204. String patient = getUID();
  205. String openId = getOpenid();
  206. // String patient = "0cc6e4562de2437ab2dbbf51a9fc3b49";
  207. // String openId = "oULM4xAj9sOsHJ95ttKYd_Fjh6Hc";
  208. if (StringUtils.isNotEmpty(openId)) {
  209. String settleNo = pay.charge(orgCode, chargeType, chargeRelation, totalAmount, feeDetail, patient, openId,getAccessToken()); //ohNH9sh4uwuJCxIwcLJtGTX-BaSk getUID(),getOpenid()
  210. return write(200, "家庭医生签约支付成功!", "data", settleNo);
  211. } else {
  212. return write(-1, "openId为空!");
  213. }
  214. // String settleNo = pay.charge(orgCode, chargeType, chargeRelation, totalAmount, selfpayAmount, insuranceAmount, feeDetail, "0cc6e4562de2437ab2dbbf51a9fc3b49", "oULM4xAj9sOsHJ95ttKYd_Fjh6Hc"); //getUID(),getOpenid()
  215. // return write(200, "家庭医生签约支付成功!", "data", settleNo);
  216. } catch (Exception e) {
  217. return error(-1, e.getMessage());
  218. }
  219. }
  220. @RequestMapping(value = "chargeQuery", method = RequestMethod.POST)
  221. @ApiOperation("家庭医生签约支付查询")
  222. @ResponseBody
  223. public String chargeQuery(@ApiParam(name = "code", value = "接入应用业务流水号", defaultValue = "")
  224. @RequestParam String code) throws Exception {
  225. try {
  226. Charge charge = pay.chargeQuery(code,getAccessToken());
  227. return write(200, "家庭医生签约支付查询成功!", "data", charge);
  228. } catch (Exception e) {
  229. return error(-1, e.getMessage());
  230. }
  231. }
  232. @RequestMapping(value = "chargeList", method = RequestMethod.POST)
  233. @ApiOperation("获取某次签约的支付记录")
  234. @ResponseBody
  235. public String chargeList(@ApiParam(name = "chargeType", value = "支付类型", defaultValue = "1")
  236. @RequestParam String chargeType,
  237. @ApiParam(name = "chargeRelation", value = "支付关联代码", defaultValue = "044701ea5b2311e68344fa163e8aee56")
  238. @RequestParam String chargeRelation) throws Exception {
  239. try {
  240. List<WlyyCharge> charge = pay.chargeList(chargeType, chargeRelation,getAccessToken());
  241. return write(200, "获取某次签约的支付记录成功!", "data", charge);
  242. } catch (Exception e) {
  243. return error(-1, e.getMessage());
  244. }
  245. }
  246. @RequestMapping(value = "chargeListByPatient", method = RequestMethod.POST)
  247. @ApiOperation("获取患者的支付记录")
  248. @ResponseBody
  249. public String chargeListByPatient(@ApiParam(name = "patient", value = "患者代码", defaultValue = "")
  250. @RequestParam String patient,
  251. @ApiParam(name = "page", value = "第几页,从1开始", defaultValue = "1")
  252. @RequestParam Integer page,
  253. @ApiParam(name = "size", value = "每页几行", defaultValue = "10")
  254. @RequestParam Integer size) throws Exception {
  255. try {
  256. List<WlyyCharge> charge = pay.chargeListByPatient(patient,getAccessToken(), page, size);
  257. return write(200, "获取患者的支付记录成功!", "data", charge);
  258. } catch (Exception e) {
  259. return error(-1, e.getMessage());
  260. }
  261. }
  262. /**
  263. * 解析URL参数串
  264. *
  265. * @param formContext
  266. * @param wordFirstsplitRegex
  267. * @param wordSecondsplitRegex
  268. * @return
  269. */
  270. private static Map<String, String> resolveFormContext(String formContext, String wordFirstsplitRegex, String wordSecondsplitRegex) {
  271. if (StringUtil.isEmpty(formContext)) {
  272. return null;
  273. }
  274. Map<String, String> targetMap = new HashMap<String, String>();
  275. String[] wordSeconds = formContext.split(wordSecondsplitRegex);
  276. for (String wordSecond : wordSeconds) {
  277. if (StringUtil.isEmpty(wordSecond)) {
  278. continue;
  279. }
  280. int idx = wordSecond.indexOf(wordFirstsplitRegex);
  281. targetMap.put(wordSecond.substring(0, idx), wordSecond.substring(idx + 1, wordSecond.length()));
  282. }
  283. return targetMap;
  284. }
  285. /**
  286. * 转换URL参数中为Map
  287. *
  288. * @param reqQueryString
  289. * @return
  290. * @throws PayException
  291. */
  292. private Map<String, String> getRequestMap(String reqQueryString) throws PayException {
  293. if (StringUtil.isEmpty(reqQueryString)) {
  294. throw new PayException("跳转参数为空");
  295. }
  296. Map<String, String> targetMap = null;
  297. try {
  298. reqQueryString = URLDecoder.decode(reqQueryString, "utf-8");
  299. targetMap = resolveFormContext(reqQueryString, "=", "&");
  300. } catch (Exception e) {
  301. throw new PayException("跳转参数处理异常," + reqQueryString);
  302. }
  303. return targetMap;
  304. }
  305. /**
  306. * 页面回调更新数据
  307. */
  308. @RequestMapping(value = "/returnUrl", method = RequestMethod.GET)
  309. @ApiOperation("商户页面跳转")
  310. public String testReturnUrl(@RequestParam String jsonData) throws IOException, PayException {
  311. try {
  312. JSONObject json = new JSONObject(jsonData);
  313. JSONObject requestParam = json.getJSONObject("param");//业务出参
  314. String chargeNo = requestParam.getString("chargeNo"); //支付平台流水号
  315. String chargeTime = requestParam.getString("chargeTime");//支付平台交易成功时间
  316. String outChargeNo = requestParam.getString("outChargeNo");//接入应用业务流水号
  317. String outChargeTime = requestParam.getString("outChargeTime");//接入应用时间
  318. String channel = requestParam.getString("channel");//支付方式
  319. String billNo = requestParam.getString("billNo");//待结算费用单据号
  320. String cardNo = requestParam.getString("cardNo");//医保卡号
  321. String totalAmount = requestParam.getString("totalAmount");//交易总金额
  322. String insuranceAmount = requestParam.getString("insuranceAmount");//医保支付金额
  323. String selfPayAmount = requestParam.getString("selfPayAmount");//自付金额
  324. String userId = requestParam.getString("userId");//用户openID
  325. String userName = requestParam.getString("userName");//用户名字
  326. String idType = requestParam.getString("idType");//证件类型
  327. String idNo = requestParam.getString("idNo");//证件号码
  328. String tradeStatus = requestParam.getString("tradeStatus");//交易状态
  329. JSONObject responseContents = json.getJSONObject("responseContent");//医保结构体
  330. String miRegisterNo = responseContents.getString("miRegisterNo");//医保签约号
  331. String miCollectDate = responseContents.getString("miCollectDate");//扣费日期
  332. String miCollectTime = responseContents.getString("miCollectTime");//扣费时间
  333. String miSettleNo = responseContents.getString("miSettleNo");//扣费单据号
  334. String miCollectStatus = responseContents.getString("miCollectStatus");//扣费状态
  335. String miRegisterStatus = responseContents.getString("miRegisterStatus");//登记状态
  336. String cadresPay = responseContents.getString("cadresPay");//政府补贴支付
  337. String miTotalFee = responseContents.getString("miTotalFee");//扣费总额
  338. String healthCarePay = responseContents.getString("healthCarePay");//医保统筹支付
  339. // responseContents.getString("healthPay");
  340. String heathPay = responseContents.getString("heathPay");//健康账户支付
  341. String accountPay = responseContents.getString("accountPay");//医保账户支付
  342. String selfPay = responseContents.getString("selfPay");//个人现金支付
  343. // 判断是否需要更新数据 needUpload为0不需要更新
  344. WlyyCharge charge = chargeDao.getUploadStatus(outChargeNo);
  345. if (charge!=null&&!("0".equals(charge.getNeedUpload()))){
  346. pay.updateData(outChargeNo, chargeNo,chargeTime,totalAmount,insuranceAmount,selfPayAmount,billNo,miRegisterNo);
  347. }
  348. return write(200, "请求成功!");
  349. } catch (Exception e) {
  350. return error(-1, e.getMessage());
  351. }
  352. }
  353. /**
  354. * 支付真正完成,异步回调返回支付参数 后台做数据操作
  355. *
  356. * @param request
  357. * @param response
  358. * @throws IOException
  359. * @throws PayException
  360. */
  361. @RequestMapping(value = "/receiveNotify", method = RequestMethod.POST)
  362. @ApiOperation("异步回调数据更改")
  363. public void receiveNotify(HttpServletRequest request, HttpServletResponse response) throws IOException, PayException {
  364. Boolean isSuccess = false;
  365. String error= "";
  366. String responses = "";
  367. response.setContentType("text/html;charset=utf-8");
  368. String appId = "1BHEOI11C00J7B2CA8C0000071FA53E1";
  369. String appSecret = "1BHEOH8HB0006E0A0A0A00002DB28BC5";
  370. InputStream inputStream = request.getInputStream();
  371. String params = StreamUtils.copyToString(inputStream, Charset.forName("UTF-8"));
  372. LOGGER.info("回调参数:{}", params);
  373. if (StringUtil.isEmpty(params)) {
  374. response.getWriter().write("empty");
  375. return;
  376. }
  377. // 参数转换
  378. ResponseParams<?> encryptRes = JSON.parseObject(params, ResponseParams.class);
  379. OnepayDefaultClient client = new OnepayDefaultClient("", appId, appSecret, encryptRes.getSignType(), encryptRes.getEncryptType());
  380. try {
  381. // 已经封装的加解密及签名验证
  382. RequestParams requestParams = JSON.parseObject(params, RequestParams.class);
  383. ResponseParams<com.alibaba.fastjson.JSONObject> res = client.execute(requestParams);
  384. responses = JSON.toJSONString(res);
  385. if (OnepayDefaultClient.isSuccessful(res)) {
  386. isSuccess = true;
  387. String param = request.getParameter("param");//业务出参
  388. JSONObject requestParam = new JSONObject(param);
  389. String chargeNo = requestParam.getString("chargeNo"); //支付平台流水号
  390. String chargeTime = requestParam.getString("chargeTime");//支付平台交易成功时间
  391. String outChargeNo = requestParam.getString("outChargeNo");//接入应用业务流水号
  392. String outChargeTime = requestParam.getString("outChargeTime");//接入应用时间
  393. String channel = requestParam.getString("channel");//支付方式
  394. String billNo = requestParam.getString("billNo");//待结算费用单据号
  395. String cardNo = requestParam.getString("cardNo");//医保卡号
  396. String totalAmount = requestParam.getString("totalAmount");//交易总金额
  397. String insuranceAmount = requestParam.getString("insuranceAmount");//医保支付金额
  398. String selfPayAmount = requestParam.getString("selfPayAmount");//自付金额
  399. String userId = requestParam.getString("userId");//用户openID
  400. String userName = requestParam.getString("userName");//用户名字
  401. String idType = requestParam.getString("idType");//证件类型
  402. String idNo = requestParam.getString("idNo");//证件号码
  403. String tradeStatus = requestParam.getString("tradeStatus");//交易状态
  404. String responseContent = request.getParameter("responseContent");//医保结构体
  405. JSONObject responseContents = new JSONObject(responseContent);
  406. String miRegisterNo = responseContents.getString("miRegisterNo");//医保签约号
  407. String miCollectDate = responseContents.getString("miCollectDate");//扣费日期
  408. String miCollectTime = responseContents.getString("miCollectTime");//扣费时间
  409. String miSettleNo = responseContents.getString("miSettleNo");//扣费单据号
  410. String miCollectStatus = responseContents.getString("miCollectStatus");//扣费状态
  411. String miRegisterStatus = responseContents.getString("miRegisterStatus");//登记状态
  412. String cadresPay = responseContents.getString("cadresPay");//政府补贴支付
  413. String miTotalFee = responseContents.getString("miTotalFee");//扣费总额
  414. String healthCarePay = responseContents.getString("healthCarePay");//医保统筹支付
  415. // responseContents.getString("healthPay");
  416. String heathPay = responseContents.getString("heathPay");//健康账户支付
  417. String accountPay = responseContents.getString("accountPay");//医保账户支付
  418. String selfPay = responseContents.getString("selfPay");//个人现金支付
  419. // 判断是否需要更新数据 needUpload为0不需要更新
  420. WlyyCharge charge = chargeDao.getUploadStatus(outChargeNo);
  421. if (charge!=null&&!("0".equals(charge.getNeedUpload()))){
  422. pay.updateData(outChargeNo, chargeNo,chargeTime,totalAmount,insuranceAmount,selfPayAmount,billNo,miRegisterNo);
  423. }
  424. }else {
  425. isSuccess = false;
  426. error = "请求失败,返回结果:" + res.getRespCode() + "," + res.getRespMsg();
  427. }
  428. } catch (Exception ex) {
  429. isSuccess = false;
  430. StringWriter sw = new StringWriter();
  431. PrintWriter pw = new PrintWriter(sw);
  432. ex.printStackTrace(pw);
  433. error = sw.toString();
  434. response.getWriter().write(ex.getMessage());
  435. }
  436. // 记录log日志到数据库
  437. logService.saveHttpLog(isSuccess, config.getReceiveNotify(), "异步支付通知", "POST", null, params, responses, error, logService.onepayType);
  438. }
  439. }