税务云开票成功后回写NCC销售发票表头发票号码字段并回写合同平台【合同开票申请】界面表头已开具发票号码
This commit is contained in:
		
							parent
							
								
									91e8981758
								
							
						
					
					
						commit
						ab85906ff7
					
				| 
						 | 
					@ -0,0 +1,548 @@
 | 
				
			||||||
 | 
					package nc.bs.uapbd.bip.workplugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.BufferedReader;
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.io.InputStream;
 | 
				
			||||||
 | 
					import java.io.InputStreamReader;
 | 
				
			||||||
 | 
					import java.io.OutputStream;
 | 
				
			||||||
 | 
					import java.net.HttpURLConnection;
 | 
				
			||||||
 | 
					import java.net.MalformedURLException;
 | 
				
			||||||
 | 
					import java.net.URL;
 | 
				
			||||||
 | 
					import java.net.URLEncoder;
 | 
				
			||||||
 | 
					import java.nio.charset.Charset;
 | 
				
			||||||
 | 
					import java.nio.charset.StandardCharsets;
 | 
				
			||||||
 | 
					import java.security.InvalidKeyException;
 | 
				
			||||||
 | 
					import java.security.NoSuchAlgorithmException;
 | 
				
			||||||
 | 
					import java.sql.SQLException;
 | 
				
			||||||
 | 
					import java.text.SimpleDateFormat;
 | 
				
			||||||
 | 
					import java.util.Base64;
 | 
				
			||||||
 | 
					import java.util.Date;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.TreeMap;
 | 
				
			||||||
 | 
					import java.util.zip.GZIPInputStream;
 | 
				
			||||||
 | 
					import javax.crypto.Mac;
 | 
				
			||||||
 | 
					import javax.crypto.spec.SecretKeySpec;
 | 
				
			||||||
 | 
					import org.apache.http.client.config.CookieSpecs;
 | 
				
			||||||
 | 
					import org.apache.http.client.config.RequestConfig;
 | 
				
			||||||
 | 
					import org.apache.http.client.methods.HttpPost;
 | 
				
			||||||
 | 
					import org.apache.http.entity.StringEntity;
 | 
				
			||||||
 | 
					import org.apache.http.impl.client.CloseableHttpClient;
 | 
				
			||||||
 | 
					import org.apache.http.impl.client.HttpClients;
 | 
				
			||||||
 | 
					import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 | 
				
			||||||
 | 
					import org.apache.http.util.EntityUtils;
 | 
				
			||||||
 | 
					import com.alibaba.fastjson.JSON;
 | 
				
			||||||
 | 
					import com.alibaba.fastjson.JSONObject;
 | 
				
			||||||
 | 
					import com.google.gson.Gson;
 | 
				
			||||||
 | 
					import com.yonyou.cloud.utils.StringUtils;
 | 
				
			||||||
 | 
					import nc.bs.dao.BaseDAO;
 | 
				
			||||||
 | 
					import nc.bs.dao.DAOException;
 | 
				
			||||||
 | 
					import nc.bs.pub.pa.PreAlertObject;
 | 
				
			||||||
 | 
					import nc.bs.pub.taskcenter.BgWorkingContext;
 | 
				
			||||||
 | 
					import nc.bs.pub.taskcenter.IBackgroundWorkPlugin;
 | 
				
			||||||
 | 
					import nc.bs.trade.business.HYSuperDMO;
 | 
				
			||||||
 | 
					import nc.jdbc.framework.processor.MapListProcessor;
 | 
				
			||||||
 | 
					import nc.util.mmf.framework.base.MMValueCheck;
 | 
				
			||||||
 | 
					import nc.vo.bd.defdoc.DefdocVO;
 | 
				
			||||||
 | 
					import nc.vo.pub.BusinessException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 税务云开票成功后回写NCC销售发票表头发票号码字段并回写合同平台【合同开票申请】界面表头已开具发票号码 zhangxinah 适配2312
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class ErpSaleInvoiceToBIPBackgroupWorkPlugin implements IBackgroundWorkPlugin {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private HYSuperDMO superDMO = null;
 | 
				
			||||||
 | 
						private String baseUrl = "https://www.tkkfbip.com";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public HYSuperDMO getSuperDMO() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (superDMO == null) {
 | 
				
			||||||
 | 
								superDMO = new HYSuperDMO();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return superDMO;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 检查bip参数是否完整
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @return
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private Map<String, String> checkBipParam() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Map<String, String> map = new HashMap<String, String>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							String strWhere = " pk_defdoclist in (select pk_defdoclist from bd_defdoclist where code='BIP-sq' and dr=0 )  and dr=0";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								DefdocVO[] defdocVOs = (DefdocVO[]) getSuperDMO().queryByWhereClause(DefdocVO.class, strWhere);
 | 
				
			||||||
 | 
								if (defdocVOs != null && defdocVOs.length > 0) {
 | 
				
			||||||
 | 
									for (DefdocVO defdocVO : defdocVOs) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										map.put(defdocVO.getCode().trim(), defdocVO.getName());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							} catch (DAOException e) {
 | 
				
			||||||
 | 
								// TODO Auto-generated catch block
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public PreAlertObject executeTask(BgWorkingContext arg0) throws BusinessException {
 | 
				
			||||||
 | 
							// TODO Auto-generated method stub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Date date = new Date();
 | 
				
			||||||
 | 
							SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 | 
				
			||||||
 | 
							Map<String, String> bipParamMap = checkBipParam();
 | 
				
			||||||
 | 
							if (bipParamMap.isEmpty()) {
 | 
				
			||||||
 | 
								return null;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							baseUrl = bipParamMap.get("baseUrl");
 | 
				
			||||||
 | 
							Map<String, Object> userMap = arg0.getKeyMap();
 | 
				
			||||||
 | 
							String usercustcode = "";
 | 
				
			||||||
 | 
							if (!userMap.isEmpty()) {
 | 
				
			||||||
 | 
								if (userMap.get("code") != null) {
 | 
				
			||||||
 | 
									usercustcode = userMap.get("code").toString();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							String invoiceReceiveUrl = bipParamMap.get("invoiceReceiveUrl");// 开票申请单回传
 | 
				
			||||||
 | 
							if (StringUtils.isEmpty(invoiceReceiveUrl)) {
 | 
				
			||||||
 | 
								return null;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// 获取开票成功后且为BIP推送过来的发票信息
 | 
				
			||||||
 | 
							String sql_saleinvoice = "select csaleinvoiceid,vdef13 as invoicingcode ,vdef17 as code from   so_saleinvoice  where fstatusflag=2 and nvl(vdef13,'~') not in ('~') and  nvl(vdef17,'~')!='~' and nvl(vdef34,'N') in ('N','~') and nvl(vdef20,'N') in ('Y') ";
 | 
				
			||||||
 | 
							List<Map<String, String>> ll_saleinvoice = (List<Map<String, String>>) new BaseDAO()
 | 
				
			||||||
 | 
									.executeQuery(sql_saleinvoice, new MapListProcessor());
 | 
				
			||||||
 | 
							Gson gson = new Gson();
 | 
				
			||||||
 | 
							if (ll_saleinvoice.isEmpty()) {
 | 
				
			||||||
 | 
								return null;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								String accessToken = getAccessToken(baseUrl, bipParamMap);
 | 
				
			||||||
 | 
								Map<String, String> tokenParam = new HashMap<>();
 | 
				
			||||||
 | 
								tokenParam.put("access_token", accessToken);
 | 
				
			||||||
 | 
								Map<String, String> headers = new HashMap<String, String>();
 | 
				
			||||||
 | 
								headers.put("Content-Type", "application/json");
 | 
				
			||||||
 | 
								String custUpdateUrl = baseUrl + invoiceReceiveUrl;
 | 
				
			||||||
 | 
								if (accessToken != "") {
 | 
				
			||||||
 | 
									for (Map<String, String> custpkmap : ll_saleinvoice) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										JSONObject js_apct_detail = new JSONObject();
 | 
				
			||||||
 | 
										js_apct_detail.put("code", custpkmap.get("code"));
 | 
				
			||||||
 | 
										js_apct_detail.put("invoicingCode", custpkmap.get("invoicingcode"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
										String resultString = doSendHttp(custUpdateUrl, "POST", tokenParam, "", headers,
 | 
				
			||||||
 | 
												js_apct_detail.toJSONString());
 | 
				
			||||||
 | 
										Map updateMap = gson.fromJson(resultString, Map.class);
 | 
				
			||||||
 | 
										String updateSql = "";
 | 
				
			||||||
 | 
										if (StringUtils.equals("200", updateMap.get("code").toString())) {// 保存更新成功后需要更新日志表
 | 
				
			||||||
 | 
											updateSql = "update so_saleinvoice set vdef34='Y' ,vdef35='' where csaleinvoiceid='"
 | 
				
			||||||
 | 
													+ custpkmap.get("csaleinvoiceid") + "'";
 | 
				
			||||||
 | 
										} else {
 | 
				
			||||||
 | 
											updateSql = "update so_saleinvoice set vdef34='N' ,vdef35='" + updateMap.get("message")
 | 
				
			||||||
 | 
													+ "' where csaleinvoiceid='" + custpkmap.get("csaleinvoiceid") + "'";
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										getSuperDMO().executeUpdateSQL(updateSql);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							} catch (InvalidKeyException e) {
 | 
				
			||||||
 | 
								// TODO Auto-generated catch block
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							} catch (NoSuchAlgorithmException e) {
 | 
				
			||||||
 | 
								// TODO Auto-generated catch block
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							} catch (IOException e) {
 | 
				
			||||||
 | 
								// TODO Auto-generated catch block
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							} // 获取BIP的token
 | 
				
			||||||
 | 
							catch (SQLException e) {
 | 
				
			||||||
 | 
								// TODO Auto-generated catch block
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * 查询bip 中开户行及银行类型id
 | 
				
			||||||
 | 
						 * 
 | 
				
			||||||
 | 
						 * @param map
 | 
				
			||||||
 | 
						 * @param bipUrl
 | 
				
			||||||
 | 
						 * @return
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						private static Map<String, String> getBIPBankID(HashMap<String, String> map, String bipUrl, String accessToken,
 | 
				
			||||||
 | 
								String bankdocname) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Gson gson = new Gson();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Map<String, String> tokenParam = new HashMap<>();
 | 
				
			||||||
 | 
							tokenParam.put("access_token", accessToken);
 | 
				
			||||||
 | 
							String jsonData = JSON.toJSONString(map);
 | 
				
			||||||
 | 
							String resultString = doSendHttp(bipUrl, "POST", tokenParam, "", new HashMap<>(), jsonData);
 | 
				
			||||||
 | 
					//			Map custDetailresult = gson.fromJson(resultString, Map.class);
 | 
				
			||||||
 | 
							JSONObject custDetailresult = JSON.parseObject(resultString);
 | 
				
			||||||
 | 
							if (StringUtils.equals("200", custDetailresult.get("code").toString())) {// 数据存在
 | 
				
			||||||
 | 
								Map<String, Object> dataInfo = (Map<String, Object>) custDetailresult.get("data");
 | 
				
			||||||
 | 
								if (!MMValueCheck.isEmpty(dataInfo.get("recordList"))) {
 | 
				
			||||||
 | 
									List<Map<String, String>> l_record = (List<Map<String, String>>) dataInfo.get("recordList");
 | 
				
			||||||
 | 
									return l_record.get(0);
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									map.remove("linenumber");
 | 
				
			||||||
 | 
									map.put("name", bankdocname);
 | 
				
			||||||
 | 
									jsonData = JSON.toJSONString(map);
 | 
				
			||||||
 | 
									resultString = doSendHttp(bipUrl, "POST", tokenParam, "", new HashMap<>(), jsonData);
 | 
				
			||||||
 | 
					//					 custDetailresult = gson.fromJson(resultString, Map.class);
 | 
				
			||||||
 | 
									custDetailresult = JSON.parseObject(resultString);
 | 
				
			||||||
 | 
									if (StringUtils.equals("200", custDetailresult.get("code").toString())) {// 数据存在
 | 
				
			||||||
 | 
										dataInfo = (Map<String, Object>) custDetailresult.get("data");
 | 
				
			||||||
 | 
										if (!MMValueCheck.isEmpty(dataInfo.get("recordList"))) {
 | 
				
			||||||
 | 
											List<Map<String, String>> l_record = (List<Map<String, String>>) dataInfo.get("recordList");
 | 
				
			||||||
 | 
											return l_record.get(0);
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static String doSendHttp(String baseUrl, String method, Map<String, String> paramMap, String mediaType,
 | 
				
			||||||
 | 
								Map<String, String> headers, String json) {
 | 
				
			||||||
 | 
							HttpURLConnection urlConnection = null;
 | 
				
			||||||
 | 
							InputStream in = null;
 | 
				
			||||||
 | 
							OutputStream out = null;
 | 
				
			||||||
 | 
							BufferedReader bufferedReader = null;
 | 
				
			||||||
 | 
							String result = null;
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								StringBuffer sb = new StringBuffer();
 | 
				
			||||||
 | 
								sb.append(baseUrl);
 | 
				
			||||||
 | 
								if (paramMap != null) {
 | 
				
			||||||
 | 
									sb.append("?");
 | 
				
			||||||
 | 
									for (Map.Entry<String, String> entry : paramMap.entrySet()) {
 | 
				
			||||||
 | 
										String key = entry.getKey();
 | 
				
			||||||
 | 
										String value = entry.getValue();
 | 
				
			||||||
 | 
										sb.append(key + "=" + value).append("&");
 | 
				
			||||||
 | 
										baseUrl = sb.toString().substring(0, sb.toString().length() - 1);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					//            log.error("uRL:" + baseUrl);
 | 
				
			||||||
 | 
					//            // 打印请求URL和方法
 | 
				
			||||||
 | 
					//            log.error("Request URL: " + baseUrl);
 | 
				
			||||||
 | 
					//            log.error("Request Method: " + method);
 | 
				
			||||||
 | 
								URL urlobj = new URL(baseUrl);
 | 
				
			||||||
 | 
								if ("https".equalsIgnoreCase(urlobj.getProtocol())) {// 判定网址是否信任,不信任则调用忽略信任工具类SslUtil
 | 
				
			||||||
 | 
									IgnoreSslUtil.ignoreSsl();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								urlConnection = (HttpURLConnection) urlobj.openConnection();
 | 
				
			||||||
 | 
								urlConnection.setConnectTimeout(50000);
 | 
				
			||||||
 | 
								urlConnection.setRequestMethod(method);
 | 
				
			||||||
 | 
								urlConnection.setDoInput(true);
 | 
				
			||||||
 | 
								urlConnection.setUseCaches(false);
 | 
				
			||||||
 | 
								// 如果设置了自定义头,则打印它们
 | 
				
			||||||
 | 
								if (headers != null && !headers.isEmpty()) {
 | 
				
			||||||
 | 
									for (Map.Entry<String, String> entry : headers.entrySet()) {
 | 
				
			||||||
 | 
										urlConnection.addRequestProperty(entry.getKey(), entry.getValue());
 | 
				
			||||||
 | 
					//                    log.error("Request Header: " + entry.getKey() + ": " + entry.getValue());
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if (json != null && json.length() > 0) {
 | 
				
			||||||
 | 
					//                log.error("Request Body: " + json);
 | 
				
			||||||
 | 
									urlConnection.setDoInput(true);
 | 
				
			||||||
 | 
									urlConnection.setDoOutput(true);
 | 
				
			||||||
 | 
									out = urlConnection.getOutputStream();
 | 
				
			||||||
 | 
									out.write(json.getBytes("utf-8"));
 | 
				
			||||||
 | 
									out.flush();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								int resCode = urlConnection.getResponseCode();
 | 
				
			||||||
 | 
								String ecod = urlConnection.getContentEncoding();
 | 
				
			||||||
 | 
								if (resCode == HttpURLConnection.HTTP_OK || resCode == HttpURLConnection.HTTP_CREATED
 | 
				
			||||||
 | 
										|| resCode == HttpURLConnection.HTTP_ACCEPTED) {
 | 
				
			||||||
 | 
									if (StringUtils.isNotEmpty(ecod) && ecod.equals("gzip")) {
 | 
				
			||||||
 | 
										in = new GZIPInputStream(urlConnection.getInputStream());
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										in = urlConnection.getInputStream();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									in = urlConnection.getErrorStream();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								bufferedReader = new BufferedReader(new InputStreamReader(in, "utf-8"));
 | 
				
			||||||
 | 
								StringBuffer temp = new StringBuffer();
 | 
				
			||||||
 | 
								String line = bufferedReader.readLine();
 | 
				
			||||||
 | 
								while (line != null) {
 | 
				
			||||||
 | 
									temp.append(line).append("\r\n");
 | 
				
			||||||
 | 
									line = bufferedReader.readLine();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if (ecod == null || ecod.equals("gzip")) {
 | 
				
			||||||
 | 
									ecod = Charset.forName("utf-8").name();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								result = new String(temp.toString().getBytes("utf-8"), ecod);
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								JSONObject js = new JSONObject();
 | 
				
			||||||
 | 
								js.put("", -1);
 | 
				
			||||||
 | 
								js.put("message", "调用外系统接口失败:" + e.getMessage());
 | 
				
			||||||
 | 
								result = js.toString();
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							} finally {
 | 
				
			||||||
 | 
								if (null != bufferedReader) {
 | 
				
			||||||
 | 
									try {
 | 
				
			||||||
 | 
										bufferedReader.close();
 | 
				
			||||||
 | 
									} catch (IOException e) {
 | 
				
			||||||
 | 
										e.printStackTrace();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if (null != out) {
 | 
				
			||||||
 | 
									try {
 | 
				
			||||||
 | 
										out.close();
 | 
				
			||||||
 | 
									} catch (IOException e) {
 | 
				
			||||||
 | 
										e.printStackTrace();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if (null != in) {
 | 
				
			||||||
 | 
									try {
 | 
				
			||||||
 | 
										in.close();
 | 
				
			||||||
 | 
									} catch (IOException e) {
 | 
				
			||||||
 | 
										e.printStackTrace();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								urlConnection.disconnect();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return result;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//	private String createCustBankMap(Map<String,String> map,String access_token) {
 | 
				
			||||||
 | 
					//		Gson gson = new Gson();
 | 
				
			||||||
 | 
					//		//获取BIP中的客户详情
 | 
				
			||||||
 | 
					//		String custcode=map.get("custcode");
 | 
				
			||||||
 | 
					//		String custurl=baseUrl+"/yonbip/digitalModel/merchant/detail?access_token="+access_token;
 | 
				
			||||||
 | 
					//		HashMap<String, String> custMap = new HashMap<String, String>();
 | 
				
			||||||
 | 
					//		custMap.put("code", custcode);
 | 
				
			||||||
 | 
					//		try {
 | 
				
			||||||
 | 
					//			String custdetailString=doGet(custurl,custMap);
 | 
				
			||||||
 | 
					//			
 | 
				
			||||||
 | 
					//			Map custDetailresult = gson.fromJson(custdetailString, Map.class);
 | 
				
			||||||
 | 
					//			if (StringUtils.equals("200", custDetailresult.get("code").toString())) {//客户存在
 | 
				
			||||||
 | 
					//				
 | 
				
			||||||
 | 
					//				Map<String, Object> dataInfo = (Map<String, Object>) custDetailresult.get("data");
 | 
				
			||||||
 | 
					//				
 | 
				
			||||||
 | 
					//				if (!MMValueCheck.isEmpty(dataInfo.get("merchantAgentFinancialInfos"))){//客户中已经存在银行账户
 | 
				
			||||||
 | 
					//					
 | 
				
			||||||
 | 
					//				}else {
 | 
				
			||||||
 | 
					//					
 | 
				
			||||||
 | 
					//				}
 | 
				
			||||||
 | 
					//				
 | 
				
			||||||
 | 
					//			}
 | 
				
			||||||
 | 
					//			
 | 
				
			||||||
 | 
					//			
 | 
				
			||||||
 | 
					//			//开户行
 | 
				
			||||||
 | 
					//			String bankdoccode=map.get("bankdoccode");
 | 
				
			||||||
 | 
					//			HashMap<String, Object> paramap  = new HashMap<String, Object>();
 | 
				
			||||||
 | 
					//			paramap.put("pageIndex", 0);
 | 
				
			||||||
 | 
					//			paramap.put("pageSize", 10);
 | 
				
			||||||
 | 
					//			paramap.put("linenumber", bankdoccode);
 | 
				
			||||||
 | 
					//			String url=baseUrl+"/yonbip/digitalModel/bankdot/list?access_token="+access_token;
 | 
				
			||||||
 | 
					//			
 | 
				
			||||||
 | 
					//			String responseString=doPost(url,paramap);
 | 
				
			||||||
 | 
					//			
 | 
				
			||||||
 | 
					//			Map result = gson.fromJson(responseString, Map.class);
 | 
				
			||||||
 | 
					//			
 | 
				
			||||||
 | 
					//		} catch (IOException e1) {
 | 
				
			||||||
 | 
					//			// TODO Auto-generated catch block
 | 
				
			||||||
 | 
					//			e1.printStackTrace();
 | 
				
			||||||
 | 
					//		}
 | 
				
			||||||
 | 
					//		
 | 
				
			||||||
 | 
					//	}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String getAccessToken(String baseUrl, Map<String, String> bipParamMap)
 | 
				
			||||||
 | 
								throws NoSuchAlgorithmException, InvalidKeyException, IOException {
 | 
				
			||||||
 | 
							String tokenUrl = baseUrl + "/iuap-api-auth/open-auth/selfAppAuth/getAccessToken";
 | 
				
			||||||
 | 
					//		String appKey = "f10c4bf17b1d4e1fb08eb82bf8540eab";
 | 
				
			||||||
 | 
							String appKey = bipParamMap.get("appKey");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//		String appSecret = "71dc2a58ca378c1a1143231a62e73e75a60e9236";
 | 
				
			||||||
 | 
							String appSecret = bipParamMap.get("appSecret");
 | 
				
			||||||
 | 
							String accessToken = "";
 | 
				
			||||||
 | 
							Map<String, String> params = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							params.put("appKey", appKey);
 | 
				
			||||||
 | 
							String timestamp = String.valueOf(System.currentTimeMillis());
 | 
				
			||||||
 | 
							params.put("timestamp", timestamp);
 | 
				
			||||||
 | 
							// 计算签名
 | 
				
			||||||
 | 
							Map<String, String> treeMap;
 | 
				
			||||||
 | 
							if (params instanceof TreeMap) {
 | 
				
			||||||
 | 
								treeMap = params;
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								treeMap = new TreeMap<>(params);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							StringBuilder stringBuilder = new StringBuilder();
 | 
				
			||||||
 | 
							for (Map.Entry<String, String> entry : treeMap.entrySet()) {
 | 
				
			||||||
 | 
								stringBuilder.append(entry.getKey()).append(entry.getValue());
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							Mac mac = Mac.getInstance("HmacSHA256");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mac.init(new SecretKeySpec(appSecret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"));
 | 
				
			||||||
 | 
							byte[] signData = mac.doFinal(stringBuilder.toString().getBytes(StandardCharsets.UTF_8));
 | 
				
			||||||
 | 
							String base64String = Base64.getEncoder().encodeToString(signData);
 | 
				
			||||||
 | 
							String signature = URLEncoder.encode(base64String, "UTF-8");
 | 
				
			||||||
 | 
							params.put("signature", signature);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							String responseString = doGet(tokenUrl, params);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Gson gson = new Gson();
 | 
				
			||||||
 | 
							Map result = gson.fromJson(responseString, Map.class);
 | 
				
			||||||
 | 
							if (StringUtils.equals("00000", result.get("code").toString())) {
 | 
				
			||||||
 | 
								Map<String, Object> tokenInfo = (Map<String, Object>) result.get("data");
 | 
				
			||||||
 | 
								accessToken = (String) tokenInfo.get("access_token");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return accessToken;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String doPost(String requestUrl, JSONObject jsonObject) throws IOException {
 | 
				
			||||||
 | 
							PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
 | 
				
			||||||
 | 
							cm.setMaxTotal(500);
 | 
				
			||||||
 | 
							cm.setDefaultMaxPerRoute(50);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							RequestConfig globalConfig = RequestConfig.custom().setConnectionRequestTimeout(5000) // 连接池获取连接超时
 | 
				
			||||||
 | 
									.setConnectTimeout(5000) // 连接建立超时
 | 
				
			||||||
 | 
									.setSocketTimeout(20000) // 等待响应超时
 | 
				
			||||||
 | 
									.setCookieSpec(CookieSpecs.IGNORE_COOKIES).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm)
 | 
				
			||||||
 | 
									.setDefaultRequestConfig(globalConfig).build();
 | 
				
			||||||
 | 
							HttpPost post = new HttpPost(requestUrl);
 | 
				
			||||||
 | 
							post.setHeader("Content-Type", "application/json;charset=UTF-8");
 | 
				
			||||||
 | 
							post.setEntity(new StringEntity(JSONObject.toJSONString(jsonObject), "utf-8"));
 | 
				
			||||||
 | 
							String responseString = httpClient.execute(post, response -> EntityUtils.toString(response.getEntity()));
 | 
				
			||||||
 | 
							return responseString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private String doPost(String requestUrl, Map<String, Object> param) throws IOException {
 | 
				
			||||||
 | 
							PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
 | 
				
			||||||
 | 
							cm.setMaxTotal(500);
 | 
				
			||||||
 | 
							cm.setDefaultMaxPerRoute(50);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							RequestConfig globalConfig = RequestConfig.custom().setConnectionRequestTimeout(5000) // 连接池获取连接超时
 | 
				
			||||||
 | 
									.setConnectTimeout(5000) // 连接建立超时
 | 
				
			||||||
 | 
									.setSocketTimeout(20000) // 等待响应超时
 | 
				
			||||||
 | 
									.setCookieSpec(CookieSpecs.IGNORE_COOKIES).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm)
 | 
				
			||||||
 | 
									.setDefaultRequestConfig(globalConfig).build();
 | 
				
			||||||
 | 
							HttpPost post = new HttpPost(requestUrl);
 | 
				
			||||||
 | 
							post.setHeader("Content-Type", "application/json;charset=UTF-8");
 | 
				
			||||||
 | 
							post.setEntity(new StringEntity(JSONObject.toJSONString(param), "utf-8"));
 | 
				
			||||||
 | 
							String responseString = httpClient.execute(post, response -> EntityUtils.toString(response.getEntity()));
 | 
				
			||||||
 | 
							return responseString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static String doGet(String path, Map<String, String> params) throws IOException {
 | 
				
			||||||
 | 
							HttpURLConnection conn = null;
 | 
				
			||||||
 | 
							InputStream is = null;
 | 
				
			||||||
 | 
							BufferedReader br = null;
 | 
				
			||||||
 | 
							StringBuilder result = new StringBuilder();
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								if (params != null) {
 | 
				
			||||||
 | 
									String paramStr = "";
 | 
				
			||||||
 | 
									for (String key : params.keySet()) {
 | 
				
			||||||
 | 
										if (!paramStr.isEmpty()) {
 | 
				
			||||||
 | 
											paramStr += '&';
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
										paramStr += key + '=' + params.get(key);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									if (path.indexOf('?') > 0) {
 | 
				
			||||||
 | 
										path += '&' + paramStr;
 | 
				
			||||||
 | 
									} else {
 | 
				
			||||||
 | 
										path += '?' + paramStr;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								// 创建远程url连接对象
 | 
				
			||||||
 | 
								URL url = new URL(path);
 | 
				
			||||||
 | 
								if ("https".equalsIgnoreCase(url.getProtocol())) {// 判定网址是否信任,不信任则调用忽略信任工具类SslUtil
 | 
				
			||||||
 | 
									IgnoreSslUtil.ignoreSsl();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								// 通过远程url连接对象打开一个连接,强转成HTTPURLConnection类
 | 
				
			||||||
 | 
								conn = (HttpURLConnection) url.openConnection();
 | 
				
			||||||
 | 
								conn.setRequestMethod("GET");
 | 
				
			||||||
 | 
								// 设置连接超时时间和读取超时时间
 | 
				
			||||||
 | 
								conn.setConnectTimeout(120000);
 | 
				
			||||||
 | 
								conn.setReadTimeout(120000);
 | 
				
			||||||
 | 
								conn.setRequestProperty("Accept", "application/json");
 | 
				
			||||||
 | 
								// 发送请求
 | 
				
			||||||
 | 
								conn.connect();
 | 
				
			||||||
 | 
								// 通过conn取得输入流,并使用Reader读取
 | 
				
			||||||
 | 
								if (200 == conn.getResponseCode()) {
 | 
				
			||||||
 | 
									is = conn.getInputStream();
 | 
				
			||||||
 | 
									br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
 | 
				
			||||||
 | 
									String line;
 | 
				
			||||||
 | 
									while ((line = br.readLine()) != null) {
 | 
				
			||||||
 | 
										result.append(line);
 | 
				
			||||||
 | 
										System.out.println(line);
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									System.out.println("ResponseCode is an error code:" + conn.getResponseCode());
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							} catch (MalformedURLException e) {
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							} catch (IOException e) {
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							} catch (Exception e) {
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					//        finally {
 | 
				
			||||||
 | 
					//            try {
 | 
				
			||||||
 | 
					//                if (br != null) {
 | 
				
			||||||
 | 
					//                    br.close();
 | 
				
			||||||
 | 
					//                }
 | 
				
			||||||
 | 
					//                if (is != null) {
 | 
				
			||||||
 | 
					//                    is.close();
 | 
				
			||||||
 | 
					//                }
 | 
				
			||||||
 | 
					//            } catch (IOException ioe) {
 | 
				
			||||||
 | 
					//                ioe.printStackTrace();
 | 
				
			||||||
 | 
					//            }
 | 
				
			||||||
 | 
					//            conn.disconnect();
 | 
				
			||||||
 | 
					//        }
 | 
				
			||||||
 | 
							return result.toString();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//    private String doGet(String requestUrl, Map<String, String> paramMap) throws IOException {
 | 
				
			||||||
 | 
					//		PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
 | 
				
			||||||
 | 
					//		cm.setMaxTotal(500);
 | 
				
			||||||
 | 
					//		cm.setDefaultMaxPerRoute(50);
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//		RequestConfig globalConfig = RequestConfig.custom().setConnectionRequestTimeout(5000) // 连接池获取连接超时
 | 
				
			||||||
 | 
					//				.setConnectTimeout(5000) // 连接建立超时
 | 
				
			||||||
 | 
					//				.setSocketTimeout(20000) // 等待响应超时
 | 
				
			||||||
 | 
					//				.setCookieSpec(CookieSpecs.IGNORE_COOKIES).build();
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//		CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm)
 | 
				
			||||||
 | 
					//				.setDefaultRequestConfig(globalConfig).build();
 | 
				
			||||||
 | 
					//		StringBuilder param = new StringBuilder("?");
 | 
				
			||||||
 | 
					//		if (paramMap != null) {
 | 
				
			||||||
 | 
					//			for (Map.Entry<String, String> entry : paramMap.entrySet()) {
 | 
				
			||||||
 | 
					//				param.append(entry.getKey());
 | 
				
			||||||
 | 
					//				param.append("=");
 | 
				
			||||||
 | 
					//				param.append(entry.getValue());
 | 
				
			||||||
 | 
					//				param.append("&");
 | 
				
			||||||
 | 
					//			}
 | 
				
			||||||
 | 
					//			param.deleteCharAt(param.length() - 1);
 | 
				
			||||||
 | 
					//		}
 | 
				
			||||||
 | 
					//		String url = requestUrl + param;
 | 
				
			||||||
 | 
					//		HttpGet get = new HttpGet(url);
 | 
				
			||||||
 | 
					//		String responseString = httpClient.execute(get, response -> EntityUtils.toString(response.getEntity()));
 | 
				
			||||||
 | 
					//		get.releaseConnection();
 | 
				
			||||||
 | 
					//		return responseString;
 | 
				
			||||||
 | 
					//	}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue