|
|
@@ -0,0 +1,304 @@
|
|
|
+package org.jeecg.modules.util;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import org.jeecg.common.utils.PayConst;
|
|
|
+import org.jeecg.common.utils.PayRequest;
|
|
|
+import org.jeecg.modules.hlgpayaccount.entity.HlgPayAccount;
|
|
|
+import org.jeecg.modules.hlgpayaccount.entity.HlgPayRecord;
|
|
|
+import org.jeecg.modules.hlgpayaccount.service.IHlgPayAccountService;
|
|
|
+import org.jeecg.modules.hlgpayment.entity.HlgPaymentDetail;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import javax.annotation.PostConstruct;
|
|
|
+import java.text.DecimalFormat;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Random;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Author: zwq
|
|
|
+ * @Description:
|
|
|
+ * @Date: Create in 12:58 2019/10/9
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class PayCommon {
|
|
|
+ @Autowired
|
|
|
+ private IHlgPayAccountService hlgPayAccountService;
|
|
|
+
|
|
|
+ public static PayCommon payCommon;
|
|
|
+
|
|
|
+ public static IHlgPayAccountService iHlgPayAccountService;
|
|
|
+
|
|
|
+ @PostConstruct
|
|
|
+ public void init() {
|
|
|
+ payCommon = this;
|
|
|
+ iHlgPayAccountService = hlgPayAccountService;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 账户信息查询
|
|
|
+ */
|
|
|
+ public static List<HlgPayAccount> DCDACCYE() {
|
|
|
+ // body
|
|
|
+ JSONObject obj_body = new JSONObject();
|
|
|
+ //funcode接口名称
|
|
|
+ String funcode = PayConst.DCDACCYE;
|
|
|
+ obj_body.put("ctnkey", "");
|
|
|
+ String result = PayRequest.doRequest(obj_body, funcode);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ JSONObject jsonObject1 = jsonObject.getJSONObject("response");
|
|
|
+ JSONObject jsonObjectHead = jsonObject1.getJSONObject("head");
|
|
|
+ String resultcode = jsonObjectHead.getString("resultcode");
|
|
|
+ List<HlgPayAccount> hlgPayAccountList = new ArrayList<>();
|
|
|
+ //正常响应为SUC0000
|
|
|
+ if ("SUC0000".equals(resultcode)) {
|
|
|
+ JSONObject jsonObjectBody = jsonObject1.getJSONObject("body");
|
|
|
+ JSONArray jsonArray = jsonObjectBody.getJSONArray("actlis");
|
|
|
+ for (int i = 0; i < jsonArray.size(); i++) {
|
|
|
+ JSONObject jsonObject2 = jsonArray.getJSONObject(i);
|
|
|
+ System.out.println("户口号========" + jsonObject2.get("eacnbr"));
|
|
|
+ System.out.println("账号========" + jsonObject2.get("actnbr"));
|
|
|
+ HlgPayAccount hlgPayAccount = iHlgPayAccountService.saveAccout(jsonObject2);
|
|
|
+ hlgPayAccountList.add(hlgPayAccount);
|
|
|
+ }
|
|
|
+ System.out.println("head========" + jsonObjectHead.getString("resultcode"));
|
|
|
+ System.out.println("body========" + jsonArray);
|
|
|
+ } else {
|
|
|
+ System.out.println("resultcode========" + jsonObjectHead.getString("resultcode"));
|
|
|
+ System.out.println("resultmsg========" + jsonObjectHead.getString("resultmsg"));
|
|
|
+ }
|
|
|
+ return hlgPayAccountList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 移动代发查询协议号
|
|
|
+ */
|
|
|
+ public static void DCAGPCNV() {
|
|
|
+ // body
|
|
|
+ JSONObject obj_body = new JSONObject();
|
|
|
+ //funcode接口名称
|
|
|
+ String funcode = PayConst.DCAGPCNV;
|
|
|
+ String eacnbr = "";
|
|
|
+ //获取支付账户信息
|
|
|
+ List<HlgPayAccount> hlgPayAccoutList = iHlgPayAccountService.findAccountList();
|
|
|
+ if (hlgPayAccoutList != null && hlgPayAccoutList.size() > 0) {
|
|
|
+ eacnbr = hlgPayAccoutList.get(0).getEacnbr();
|
|
|
+ } else {
|
|
|
+ //没有支付账户信息,则调用获取账户信息接口
|
|
|
+ List<HlgPayAccount> hlgPayAccoutList1 = DCDACCYE();
|
|
|
+ if (hlgPayAccoutList1 != null && hlgPayAccoutList1.size() > 0) {
|
|
|
+ eacnbr = hlgPayAccoutList1.get(0).getEacnbr();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ obj_body.put("dbtacc", eacnbr);
|
|
|
+ obj_body.put("ccynbr", PayConst.ccynbr);
|
|
|
+ String result = PayRequest.doRequest(obj_body, funcode);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ JSONObject jsonObject1 = jsonObject.getJSONObject("response");
|
|
|
+ JSONObject jsonObjectHead = jsonObject1.getJSONObject("head");
|
|
|
+ String resultcode = jsonObjectHead.getString("resultcode");
|
|
|
+ //正常响应为SUC0000
|
|
|
+ if ("SUC0000".equals(resultcode)) {
|
|
|
+ JSONObject jsonObjectBody = jsonObject1.getJSONObject("body");
|
|
|
+ JSONArray jsonArray = jsonObjectBody.getJSONArray("cnvlist");
|
|
|
+ for (int i = 0; i < jsonArray.size(); i++) {
|
|
|
+ JSONObject jsonObject2 = jsonArray.getJSONObject(i);
|
|
|
+ }
|
|
|
+ System.out.println("head========" + jsonObjectHead.getString("resultcode"));
|
|
|
+ System.out.println("body========" + jsonArray);
|
|
|
+ } else {
|
|
|
+ System.out.println("resultcode========" + jsonObjectHead.getString("resultcode"));
|
|
|
+ System.out.println("resultmsg========" + jsonObjectHead.getString("resultmsg"));
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 代发经办
|
|
|
+ *
|
|
|
+ * @param hlgPaymentDetailList
|
|
|
+ * @param totalPayment
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static JSONObject DCAGPOPR(List<HlgPaymentDetail> hlgPaymentDetailList, String totalPayment) {
|
|
|
+ //支付总量
|
|
|
+ int payLength = hlgPaymentDetailList.size();
|
|
|
+ // body
|
|
|
+ JSONObject obj_body = new JSONObject();
|
|
|
+ //funcode接口名称
|
|
|
+ String funcode = PayConst.DCAGPOPR;
|
|
|
+ String eacnbr = "";
|
|
|
+ //获取支付账户信息
|
|
|
+ List<HlgPayAccount> hlgPayAccoutList = iHlgPayAccountService.findAccountList();
|
|
|
+ if (hlgPayAccoutList != null && hlgPayAccoutList.size() > 0) {
|
|
|
+ eacnbr = hlgPayAccoutList.get(0).getEacnbr();
|
|
|
+ } else {
|
|
|
+ //没有支付账户信息,则调用获取账户信息接口
|
|
|
+ List<HlgPayAccount> hlgPayAccoutList1 = DCDACCYE();
|
|
|
+ if (hlgPayAccoutList1 != null && hlgPayAccoutList1.size() > 0) {
|
|
|
+ eacnbr = hlgPayAccoutList1.get(0).getEacnbr();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //付款账号
|
|
|
+ obj_body.put("dbtacc", eacnbr);
|
|
|
+ //业务模式(测试固定:F00003)注意:测试环境/正式环境区分开
|
|
|
+ obj_body.put("busmod", PayConst.busmod);
|
|
|
+ //业务参考号采用时间戳+三位随机数
|
|
|
+ Random random = new Random();
|
|
|
+ String code = "";
|
|
|
+ for (int i = 0; i < 3; i++) {
|
|
|
+ code += random.nextInt(10);
|
|
|
+ }
|
|
|
+ String trsref = System.currentTimeMillis() + code;
|
|
|
+ obj_body.put("trsref", trsref); //业务参考号
|
|
|
+ obj_body.put("ttlamt", totalPayment); //总金额
|
|
|
+ obj_body.put("ttlcnt", payLength); //总笔数
|
|
|
+ obj_body.put("ccynbr", PayConst.ccynbr); //货币类型(人民币,默认为10)
|
|
|
+ obj_body.put("trstyp", PayConst.trstyp); //交易代码(代发类型),默认代发其他
|
|
|
+ obj_body.put("paycnv", PayConst.paycnv); //代发协议,默认
|
|
|
+ obj_body.put("trxrmk", "代发"); //用途
|
|
|
+ //代发明细
|
|
|
+ JSONArray trsreq = new JSONArray();
|
|
|
+ //四舍五入,保留俩位小数
|
|
|
+ DecimalFormat df = new DecimalFormat("#.00");
|
|
|
+ for (int i = 0; i < payLength; i++) {
|
|
|
+ JSONObject trs = new JSONObject();
|
|
|
+ HlgPaymentDetail hlgPaymentDetail = hlgPaymentDetailList.get(i);
|
|
|
+ trs.put("eacnbr", hlgPaymentDetail.getCardNumber()); //账号
|
|
|
+ trs.put("eacnam", hlgPaymentDetail.getUserName()); //户名
|
|
|
+ trs.put("trxamt", df.format(hlgPaymentDetail.getPayment())); //金额
|
|
|
+ trs.put("bnkflg", hlgPaymentDetail.getBnkflg()); //系统内标志(Y:开户行是招商银行;N:开户行是他行)
|
|
|
+ if ("N".equals(hlgPaymentDetail.getBnkflg())) {
|
|
|
+ trs.put("eacbnk", hlgPaymentDetail.getEacbnk()); //他行开户行
|
|
|
+ trs.put("rcveaa", hlgPaymentDetail.getRcveaa()); //他行开户地址
|
|
|
+ } else {
|
|
|
+ trs.put("eacbnk", ""); //他行开户行
|
|
|
+ trs.put("rcveaa", ""); //他行开户地址
|
|
|
+ }
|
|
|
+ trs.put("trsdsp", "代发"); //收方备注
|
|
|
+ trsreq.add(trs);
|
|
|
+ }
|
|
|
+ obj_body.put("trsreq", trsreq); //代发明细信息
|
|
|
+ String result = PayRequest.doRequest(obj_body, funcode);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ JSONObject jsonObject1 = jsonObject.getJSONObject("response");
|
|
|
+ JSONObject jsonObjectHead = jsonObject1.getJSONObject("head");
|
|
|
+ String resultcode = jsonObjectHead.getString("resultcode");
|
|
|
+ JSONObject jsonObjectBody = null;
|
|
|
+ //正常响应为SUC0000
|
|
|
+ if ("SUC0000".equals(resultcode)) {
|
|
|
+ jsonObjectBody = jsonObject1.getJSONObject("body");
|
|
|
+ } else {
|
|
|
+ System.out.println("resultcode========" + jsonObjectHead.getString("resultcode"));
|
|
|
+ System.out.println("resultmsg========" + jsonObjectHead.getString("resultmsg"));
|
|
|
+ }
|
|
|
+ return jsonObjectBody;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 移动代发每笔明细查询
|
|
|
+ */
|
|
|
+ public static JSONObject DCAGPDTL(HlgPayRecord hlgPayRecord) {
|
|
|
+ // body
|
|
|
+ JSONObject obj_body = new JSONObject();
|
|
|
+ //funcode接口名称
|
|
|
+ String funcode = PayConst.DCAGPDTL;
|
|
|
+ obj_body.put("flwsid", hlgPayRecord.getAgpseq()); //批次号码
|
|
|
+ obj_body.put("trssts", ""); //W:待交易S:成功E:失败,为空返回所有明细
|
|
|
+ obj_body.put("ctnkey", ""); //第一次传空,后续传响应报文中ctnkey字段值
|
|
|
+ String result = PayRequest.doRequest(obj_body, funcode);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ JSONObject jsonObject1 = jsonObject.getJSONObject("response");
|
|
|
+ JSONObject jsonObjectHead = jsonObject1.getJSONObject("head");
|
|
|
+ String resultcode = jsonObjectHead.getString("resultcode");
|
|
|
+ JSONObject jsonObjectBody = null;
|
|
|
+ //正常响应为SUC0000
|
|
|
+ if ("SUC0000".equals(resultcode)) {
|
|
|
+ jsonObjectBody = jsonObject1.getJSONObject("body");
|
|
|
+ } else {
|
|
|
+ System.out.println("resultcode========" + jsonObjectHead.getString("resultcode"));
|
|
|
+ System.out.println("resultmsg========" + jsonObjectHead.getString("resultmsg"));
|
|
|
+
|
|
|
+ }
|
|
|
+ return jsonObjectBody;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 代发经办(测试前置机)
|
|
|
+ *
|
|
|
+ * @param hlgPaymentDetailList
|
|
|
+ * @param totalPayment
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static JSONObject DCAGPOPRForSpecial(List<HlgPaymentDetail> hlgPaymentDetailList, String totalPayment) {
|
|
|
+ //支付总量
|
|
|
+ int payLength = hlgPaymentDetailList.size();
|
|
|
+ // body
|
|
|
+ JSONObject obj_body = new JSONObject();
|
|
|
+ //funcode接口名称
|
|
|
+ String funcode = PayConst.DCAGPOPR;
|
|
|
+ String eacnbr = "";
|
|
|
+ //获取支付账户信息
|
|
|
+ List<HlgPayAccount> hlgPayAccoutList = new ArrayList<>();
|
|
|
+ HlgPayAccount hlgPayAccount = new HlgPayAccount();
|
|
|
+ hlgPayAccount.setEacnbr("755915675610802");//测试前置机付款账号
|
|
|
+ hlgPayAccoutList.add(hlgPayAccount);
|
|
|
+ if (hlgPayAccoutList != null && hlgPayAccoutList.size() > 0) {
|
|
|
+ eacnbr = hlgPayAccoutList.get(0).getEacnbr();
|
|
|
+ }
|
|
|
+ obj_body.put("dbtacc", eacnbr); //付款账号
|
|
|
+ obj_body.put("busmod", PayConst.busmod); //业务模式(测试固定:F00003)注意:测试环境/正式环境区分开
|
|
|
+ //业务参考号采用时间戳+三位随机数
|
|
|
+ Random random = new Random();
|
|
|
+ String code = "";
|
|
|
+ for (int i = 0; i < 3; i++) {
|
|
|
+ code += random.nextInt(10);
|
|
|
+ }
|
|
|
+ String trsref = System.currentTimeMillis() + code;
|
|
|
+ obj_body.put("trsref", trsref); //业务参考号
|
|
|
+ obj_body.put("ttlamt", totalPayment); //总金额
|
|
|
+ obj_body.put("ttlcnt", payLength); //总笔数
|
|
|
+ obj_body.put("ccynbr", PayConst.ccynbr); //货币类型(人民币,默认为10)
|
|
|
+ obj_body.put("trstyp", PayConst.trstyp); //交易代码(代发类型),默认代发其他
|
|
|
+ obj_body.put("paycnv", PayConst.paycnv); //代发协议,默认
|
|
|
+ obj_body.put("trxrmk", "代发"); //用途
|
|
|
+ //代发明细
|
|
|
+ JSONArray trsreq = new JSONArray();
|
|
|
+ //四舍五入,保留俩位小数
|
|
|
+ DecimalFormat df = new DecimalFormat("#.00");
|
|
|
+ for (int i = 0; i < payLength; i++) {
|
|
|
+ JSONObject trs = new JSONObject();
|
|
|
+ HlgPaymentDetail hlgPaymentDetail = hlgPaymentDetailList.get(i);
|
|
|
+ trs.put("eacnbr", "6225880280120198"); //账号
|
|
|
+ trs.put("eacnam", "喵星人"); //户名
|
|
|
+ trs.put("trxamt", df.format(hlgPaymentDetail.getPayment())); //金额
|
|
|
+ trs.put("bnkflg", hlgPaymentDetail.getBnkflg()); //系统内标志(Y:开户行是招商银行;N:开户行是他行)
|
|
|
+ if ("N".equals(hlgPaymentDetail.getBnkflg())) {
|
|
|
+ trs.put("eacbnk", hlgPaymentDetail.getEacbnk()); //他行开户行
|
|
|
+ trs.put("rcveaa", hlgPaymentDetail.getRcveaa()); //他行开户地址
|
|
|
+ } else {
|
|
|
+ trs.put("eacbnk", ""); //他行开户行
|
|
|
+ trs.put("rcveaa", ""); //他行开户地址
|
|
|
+ }
|
|
|
+ trs.put("trsdsp", "代发"); //收方备注
|
|
|
+ trsreq.add(trs);
|
|
|
+ }
|
|
|
+ obj_body.put("trsreq", trsreq); //代发明细信息
|
|
|
+ String result = PayRequest.doRequest(obj_body, funcode);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(result);
|
|
|
+ JSONObject jsonObject1 = jsonObject.getJSONObject("response");
|
|
|
+ JSONObject jsonObjectHead = jsonObject1.getJSONObject("head");
|
|
|
+ String resultcode = jsonObjectHead.getString("resultcode");
|
|
|
+ JSONObject jsonObjectBody = null;
|
|
|
+ //正常响应为SUC0000
|
|
|
+ if ("SUC0000".equals(resultcode)) {
|
|
|
+ jsonObjectBody = jsonObject1.getJSONObject("body");
|
|
|
+ } else {
|
|
|
+ System.out.println("resultcode========" + jsonObjectHead.getString("resultcode"));
|
|
|
+ System.out.println("resultmsg========" + jsonObjectHead.getString("resultmsg"));
|
|
|
+ }
|
|
|
+ return jsonObjectBody;
|
|
|
+ }
|
|
|
+}
|