1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015 |
- /*
- *
- * MchServiceImpl
- *
- */
- package com.hboxs.service.impl;
- import com.alibaba.fastjson.JSONObject;
- import com.hboxs.common.Constant;
- import com.hboxs.common.JoinpayConstant;
- import com.hboxs.common.utils.HttpClientUtils;
- import com.hboxs.common.utils.joinpay.utils.AESUtil;
- import com.hboxs.common.utils.joinpay.utils.RSAUtil;
- import com.hboxs.dao.MchDao;
- import com.hboxs.joinpay.entity.Mch;
- import com.hboxs.service.MchService;
- import org.apache.commons.codec.digest.DigestUtils;
- import org.apache.commons.lang.StringUtils;
- import org.apache.log4j.Logger;
- import org.springframework.stereotype.Service;
- import org.springframework.util.Base64Utils;
- import sun.misc.BASE64Encoder;
- import sun.net.www.content.image.png;
- import javax.annotation.Resource;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.math.BigDecimal;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * Service - 汇聚支付 - 分销商
- * @author dinfeng jimo
- * @version 1.0
- *
- */
- @Service("mchServiceImpl")
- public class MchServiceImpl extends BaseServiceImpl<Mch, Long> implements MchService {
- @Resource(name = "mchDaoImpl")
- private MchDao mchDao;
- @Resource(name = "mchDaoImpl")
- public void setBaseDao(MchDao mchDao) {
- super.setBaseDao(mchDao);
- }
- protected static Logger logger = Logger.getLogger(MchServiceImpl.class);
- @Override
- public Mch getUniqueness(Long adminId) {
- return mchDao.getUniqueness(adminId);
- }
- @Override
- public String createMch(Mch mch) {
- Long adminId = mch.getAdminId();
- if(null == adminId){
- return "找不到对应的管理员";
- }
- Integer alt_merchant_type = mch.getAlt_merchant_type();
- if(JoinpayConstant.alt_merchant_type1!=alt_merchant_type
- && JoinpayConstant.alt_merchant_type2!= alt_merchant_type
- && JoinpayConstant.alt_merchant_type3!= alt_merchant_type){
- return "商家类型不正确";
- }
- String url = "https://www.joinpay.com/allocFunds";
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- String login_name = "test1_" + adminId + "@mianhuatang.com";
- // String login_name = mch.getLegal_person();
- mch.setLogin_name(login_name);
- // String alt_mch_name = "test1_" + adminId + "@mianhuatang.com";
- // String alt_mch_name = mch.getLegal_person();
- String alt_mch_name = mch.getBank_account_name();
- mch.setAlt_mch_name(alt_mch_name);
- mch.setAlt_mch_short_name("");
- // 格式为16 位随机字符串:16 位随机字符串
- String aes_key1 = getRandomString(16);
- String aes_key2 = getRandomString(16);
- requestData.put("login_name", login_name);
- requestData.put("alt_mch_name", alt_mch_name);
- requestData.put("alt_mch_short_name", "");
- requestData.put("alt_merchant_type", mch.getAlt_merchant_type());
- requestData.put("busi_contact_name", mch.getBusi_contact_name());
- requestData.put("busi_contact_mobile_no", mch.getBusi_contact_mobile_no());
- requestData.put("phone_no", mch.getPhone_no());
- requestData.put("manage_scope", mch.getManage_scope());
- requestData.put("manage_addr", mch.getManage_addr());
- requestData.put("legal_person", AESUtil.encrypt(mch.getLegal_person() , aes_key1 , aes_key2 ));
- requestData.put("id_card_no", AESUtil.encrypt(mch.getId_card_no(), aes_key1 , aes_key2 ));
- requestData.put("id_card_expiry", mch.getId_card_expiry());
- // 个体工商户和企业必填:营业执照编号 / 营业执照有效期
- if(JoinpayConstant.alt_merchant_type2== alt_merchant_type || JoinpayConstant.alt_merchant_type3== alt_merchant_type){
- requestData.put("license_no", mch.getLicense_no());
- requestData.put("license_expiry", mch.getLicense_expiry());
- }
- // 由汇聚自动结算
- requestData.put("sett_mode", JoinpayConstant.sett_mode1);
- // 结算周期类型:自然日
- requestData.put("sett_date_type", JoinpayConstant.sett_date_type2);
- // 结算周期:1
- requestData.put("risk_day", 1);
- if(JoinpayConstant.alt_merchant_type2== alt_merchant_type || JoinpayConstant.alt_merchant_type3== alt_merchant_type){
- // 企业用对公账户
- requestData.put("bank_account_type", JoinpayConstant.bank_account_type4);
- }else if(JoinpayConstant.alt_merchant_type1== alt_merchant_type){
- // 个人用借记卡
- requestData.put("bank_account_type", JoinpayConstant.bank_account_type1);
- }
- requestData.put("bank_account_name", AESUtil.encrypt(mch.getBank_account_name(), aes_key1 , aes_key2 ));
- requestData.put("bank_account_no", AESUtil.encrypt(mch.getBank_account_no(), aes_key1 , aes_key2 ));
- requestData.put("bank_channel_no", mch.getBank_channel_no());
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altmch.add");
- requestJson.put("version", "2.0");
- requestJson.put("data", requestData);
- // 32位随机字符串
- String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
- requestJson.put("rand_str", uuid);
- requestJson.put("sign_type", JoinpayConstant.sign_type_MD5);
- requestJson.put("mch_no", JoinpayConstant.mch_no);
- String sign = createMD5Sign(requestJson , JoinpayConstant.key);
- requestJson.put("sign", sign.toUpperCase());
- requestJson.put("aes_key", RSAUtil.encrypt(aes_key1+":"+aes_key2 , JoinpayConstant.publickey ));
- logger.info("请求参数:" + requestJson);
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- logger.info("响应参数:" + jsonObject);
- if(jsonObject.has("resp_code")){
- mch.setResp_code(jsonObject.getString("resp_code"));
- }
- if(jsonObject.has("data")){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if(data.has("biz_code")){
- mch.setBiz_code(data.getString("biz_code"));
- }
- if (data.has("alt_mch_no")){
- mch.setAlt_mch_no(data.getString("alt_mch_no"));
- }
- if(data.has("order_status")){
- mch.setOrder_status(data.getString("order_status"));
- }
- }
- /**
- * 更新一下分销商户的 各种响应码 & login_name
- */
- update(mch);
- if(jsonObject.has("resp_code")){
- String resp_code = jsonObject.getString("resp_code");
- mch.setResp_code(resp_code);
- if(JoinpayConstant.resp_code2.equals(resp_code)){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if(data.has("biz_msg")){
- return data.getString("biz_msg");
- }
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return Constant.correct_code;
- }
- @Override
- public String updateMch(Mch mch , String legal_person , String id_card_no ,
- Integer alt_merchant_type , String bank_account_name , String bank_account_no , String bank_channel_no) {
- Long adminId = mch.getAdminId();
- if(null == adminId){
- return "找不到对应的管理员";
- }
- if(JoinpayConstant.alt_merchant_type1!=alt_merchant_type
- && JoinpayConstant.alt_merchant_type2!= alt_merchant_type
- && JoinpayConstant.alt_merchant_type3!= alt_merchant_type){
- return "商家类型不正确";
- }
- String url = "https://www.joinpay.com/allocFunds";
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- // 格式为16 位随机字符串:16 位随机字符串
- String aes_key1 = getRandomString(16);
- String aes_key2 = getRandomString(16);
- requestData.put("alt_mch_no", mch.getAlt_mch_no());
- requestData.put("legal_person", AESUtil.encrypt(legal_person, aes_key1 , aes_key2 ));
- requestData.put("id_card_no", AESUtil.encrypt(id_card_no, aes_key1 , aes_key2 ));
- if(JoinpayConstant.alt_merchant_type2== alt_merchant_type || JoinpayConstant.alt_merchant_type3== alt_merchant_type){
- // 企业用对公账户
- requestData.put("bank_account_type", JoinpayConstant.bank_account_type4);
- mch.setBank_account_type(JoinpayConstant.bank_account_type4);
- String alt_mch_name = bank_account_name;
- requestData.put("alt_mch_name", alt_mch_name);
- // requestData.put("alt_mch_name", AESUtil.encrypt(alt_mch_name, aes_key1 , aes_key2 ));
- }else if(JoinpayConstant.alt_merchant_type1== alt_merchant_type){
- // 个人用借记卡
- requestData.put("bank_account_type", JoinpayConstant.bank_account_type1);
- mch.setBank_account_type(JoinpayConstant.bank_account_type1);
- }
- requestData.put("bank_account_name", AESUtil.encrypt(bank_account_name, aes_key1 , aes_key2 ));
- requestData.put("bank_account_no", AESUtil.encrypt(bank_account_no, aes_key1 , aes_key2 ));
- requestData.put("bank_channel_no", bank_channel_no);
- mch.setLegal_person(legal_person);
- mch.setId_card_no(id_card_no);
- mch.setAlt_merchant_type(alt_merchant_type);
- mch.setBank_account_name(bank_account_name);
- mch.setBank_account_no(bank_account_no);
- mch.setBank_channel_no(bank_channel_no);
- if(alt_merchant_type==12){
- String alt_mch_name = bank_account_name;
- mch.setAlt_mch_name(alt_mch_name);
- }
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altmch.modify");
- requestJson.put("version", "1.0");
- requestJson.put("data", requestData);
- // 32位随机字符串
- String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
- requestJson.put("rand_str", uuid);
- requestJson.put("sign_type", JoinpayConstant.sign_type_MD5);
- requestJson.put("mch_no", JoinpayConstant.mch_no);
- String sign = createMD5Sign(requestJson , JoinpayConstant.key);
- requestJson.put("sign", sign.toUpperCase());
- requestJson.put("aes_key", RSAUtil.encrypt(aes_key1+":"+aes_key2 , JoinpayConstant.publickey ));
- logger.info("请求参数:" + requestJson);
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- logger.info("响应参数:" + jsonObject);
- if(jsonObject.has("resp_code")){
- mch.setResp_code(jsonObject.getString("resp_code"));
- }
- if(jsonObject.has("data")){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if(data.has("biz_code")){
- mch.setBiz_code(data.getString("biz_code"));
- }
- if (data.has("alt_mch_no")){
- mch.setAlt_mch_no(data.getString("alt_mch_no"));
- }
- if(data.has("order_status")){
- mch.setOrder_status(data.getString("order_status"));
- }
- }
- if(jsonObject.has("resp_code")){
- String resp_code = jsonObject.getString("resp_code");
- mch.setResp_code(resp_code);
- if(JoinpayConstant.resp_code2.equals(resp_code)){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if(data.has("biz_msg")){
- return data.getString("biz_msg");
- }
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return Constant.correct_code;
- }
- @Override
- public String refreshMch(Mch mch) {
- String login_name = mch.getLogin_name();
- if(StringUtils.isEmpty(login_name)){
- return "账户不存在";
- }
- String url = "https://www.joinpay.com/allocFunds";
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- requestData.put("alt_login_name", "test1_" + mch.getAdminId() + "@mianhuatang.com");
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altmch.query");
- requestJson.put("version", "1.0");
- requestJson.put("data", requestData);
- // 32位随机字符串
- String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
- requestJson.put("rand_str", uuid);
- requestJson.put("sign_type", JoinpayConstant.sign_type_MD5);
- requestJson.put("mch_no", JoinpayConstant.mch_no);
- String sign = createMD5Sign(requestJson , JoinpayConstant.key);
- requestJson.put("sign", sign.toUpperCase());
- logger.info("请求参数:" + requestJson);
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- logger.info("响应参数:" + jsonObject);
- if(jsonObject.has("resp_code")){
- mch.setResp_code(jsonObject.getString("resp_code"));
- }
- if(jsonObject.has("data")){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if(data.has("biz_code")){
- mch.setBiz_code(data.getString("biz_code"));
- }
- if (data.has("alt_mch_no")){
- mch.setAlt_mch_no(data.getString("alt_mch_no"));
- }
- if(data.has("order_status")){
- mch.setOrder_status(data.getString("order_status"));
- }
- }
- // 判断请求是否正确,受理成功
- if(jsonObject.has("resp_code")){
- String resp_code = jsonObject.getString("resp_code");
- mch.setResp_code(resp_code);
- if(JoinpayConstant.resp_code2.equals(resp_code)){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if(data.has("biz_msg")){
- return data.getString("biz_msg");
- }else{
- return JoinpayConstant.resp_code.get(resp_code);
- }
- }
- }else{
- return "请求失败";
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- update(mch);
- return Constant.correct_code;
- }
- @Override
- public String refreshMyAccount(Mch mch) {
- String url = "https://www.joinpay.com/allocFunds";
- if(StringUtils.isEmpty(mch.getAlt_mch_no())){
- return "找不到商家编号";
- }
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- requestData.put("alt_mch_no" , mch.getAlt_mch_no());
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altAccount.get");
- requestJson.put("version", "1.0");
- requestJson.put("data", requestData);
- // 32位随机字符串
- String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
- requestJson.put("rand_str", uuid);
- requestJson.put("sign_type", JoinpayConstant.sign_type_MD5);
- requestJson.put("mch_no", JoinpayConstant.mch_no);
- String sign = createMD5Sign(requestJson , JoinpayConstant.key);
- requestJson.put("sign", sign.toUpperCase());
- logger.info("请求参数:" + requestJson);
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- logger.info("响应参数:" + jsonObject);
- // 判断请求是否正确,受理成功
- if(jsonObject.has("resp_code")){
- String resp_code = jsonObject.getString("resp_code");
- mch.setResp_code(resp_code);
- if(JoinpayConstant.resp_code2.equals(resp_code)){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if(data.has("biz_msg")){
- return data.getString("biz_msg");
- }else{
- return JoinpayConstant.resp_code.get(resp_code);
- }
- }
- }else{
- return "请求失败";
- }
- // 处理data
- if(jsonObject.has("data")){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- // 更新账户的金额
- if(data.has("alt_main_balance")){
- mch.setAlt_main_balance(new BigDecimal(data.getString("alt_main_balance")).divide(new BigDecimal(100)));
- }
- if(data.has("alt_guar_balance")){
- mch.setAlt_guar_balance(new BigDecimal(data.getString("alt_guar_balance")).divide(new BigDecimal(100)));
- }
- if(data.has("alt_avil_balance")){
- mch.setAlt_avil_balance(new BigDecimal(data.getString("alt_avil_balance")).divide(new BigDecimal(100)));
- }
- update(mch);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return Constant.correct_code;
- }
- // 协议内容获取接口
- @Override
- public String getQuerySignContent(Mch mch) {
- String url = "https://www.joinpay.com/allocFunds";
- if(StringUtils.isEmpty(mch.getAlt_mch_no())){
- return "找不到商家编号";
- }
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- requestData.put("alt_mch_no" , mch.getAlt_mch_no());
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altMchSign.querySignContent");
- requestJson.put("version", "1.0");
- requestJson.put("data", requestData);
- // 32位随机字符串
- String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
- requestJson.put("rand_str", uuid);
- requestJson.put("sign_type", JoinpayConstant.sign_type_MD5);
- requestJson.put("mch_no", JoinpayConstant.mch_no);
- String sign = createMD5Sign(requestJson , JoinpayConstant.key);
- requestJson.put("sign", sign.toUpperCase());
- logger.info("请求参数:" + requestJson);
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- logger.info("响应参数:" + jsonObject);
- // 判断请求是否正确,受理成功
- if(jsonObject.has("resp_code")){
- String resp_code = jsonObject.getString("resp_code");
- mch.setResp_code(resp_code);
- if(JoinpayConstant.resp_code2.equals(resp_code)){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if(data.has("biz_msg")){
- return data.getString("biz_msg");
- }else{
- return JoinpayConstant.resp_code.get(resp_code);
- }
- }
- }else{
- return "请求失败";
- }
- // 处理data
- if(jsonObject.has("data")){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- //update(mch);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return Constant.correct_code;
- }
- // 协议内容签约接口
- @Override
- public String altMchSign(Mch mch) {
- String url = "https://www.joinpay.com/allocFunds";
- if(StringUtils.isEmpty(mch.getAlt_mch_no())){
- return "找不到商家编号";
- }
- Date currentTime = new Date();
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String dateString = formatter.format(currentTime);
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- requestData.put("alt_mch_no" , mch.getAlt_mch_no());
- requestData.put("sign_status" , "P1000");
- requestData.put("sign_time" , dateString);
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altMchSign.sign");
- requestJson.put("version", "1.0");
- requestJson.put("data", requestData);
- // 32位随机字符串
- String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
- requestJson.put("rand_str", uuid);
- requestJson.put("sign_type", JoinpayConstant.sign_type_MD5);
- requestJson.put("mch_no", JoinpayConstant.mch_no);
- String sign = createMD5Sign(requestJson , JoinpayConstant.key);
- requestJson.put("sign", sign.toUpperCase());
- logger.info("请求参数:" + requestJson);
- String back=null;
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- logger.info("响应参数:" + jsonObject);
- // 判断请求是否正确,受理成功
- if(jsonObject.has("resp_code")){
- String resp_code = jsonObject.getString("resp_code");
- mch.setResp_code(resp_code);
- if(JoinpayConstant.resp_code2.equals(resp_code)){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if(data.has("biz_msg")){
- return data.getString("biz_msg");
- }else{
- return JoinpayConstant.resp_code.get(resp_code);
- }
- }
- }else{
- return "请求失败";
- }
- // 处理data
- if(jsonObject.has("data")){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- String biz_code = data.getString("biz_code");
- if(biz_code.equals("B100000")){
- String sign_trx_no = data.getString("sign_trx_no");
- String sign_status = data.getString("sign_status");
- if(sign_status.equals("P1000")){
- sign_status="签约成功";
- }else {
- sign_status="签约失败";
- }
- mch.setSign_status(sign_status);
- mch.setSign_trx_no(sign_trx_no);
- back = sign_status;
- }
- update(mch);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return back;
- }
- // 协议签约查询接口
- @Override
- public String querySignRecord(Mch mch) {
- String url = "https://www.joinpay.com/allocFunds";
- if(StringUtils.isEmpty(mch.getAlt_mch_no())){
- return "找不到商家编号";
- }
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- requestData.put("alt_mch_no" , mch.getAlt_mch_no());
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altMchSign.querySignRecord");
- requestJson.put("version", "1.0");
- requestJson.put("data", requestData);
- // 32位随机字符串
- String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
- requestJson.put("rand_str", uuid);
- requestJson.put("sign_type", JoinpayConstant.sign_type_MD5);
- requestJson.put("mch_no", JoinpayConstant.mch_no);
- String sign = createMD5Sign(requestJson , JoinpayConstant.key);
- requestJson.put("sign", sign.toUpperCase());
- logger.info("请求参数:" + requestJson);
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- logger.info("响应参数:" + jsonObject);
- // 判断请求是否正确,受理成功
- if(jsonObject.has("resp_code")){
- String resp_code = jsonObject.getString("resp_code");
- mch.setResp_code(resp_code);
- if(JoinpayConstant.resp_code2.equals(resp_code)){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if(data.has("biz_msg")){
- return data.getString("biz_msg");
- }else{
- return JoinpayConstant.resp_code.get(resp_code);
- }
- }
- }else{
- return "请求失败";
- }
- // 处理data
- if(jsonObject.has("data")){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- String biz_code = data.getString("biz_code");
- if(biz_code.equals("B100000")){
- String sign_trx_no = data.getString("sign_trx_no");
- String sign_status = data.getString("sign_status");
- if(sign_status.equals("P1000")){
- sign_status="签约成功";
- }else {
- sign_status="签约失败";
- }
- mch.setSign_status(sign_status);
- mch.setSign_trx_no(sign_trx_no);
- update(mch);
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return Constant.correct_code;
- }
- /**
- * 传送身份证图片
- * @param
- * @return
- */
- @Override
- public String sendCard(Mch mch,String cardPositive,String cardNegative) {
- // String url = "https://www.joinpay.com/allocFunds";
- String url = "https://upload.joinpay.com/allocFunds";
- if(StringUtils.isEmpty(mch.getAlt_mch_no())){
- return "找不到商家编号";
- }
- // String card_positive = ImageToBase64ByLocal(cardPositive);
- String card_positive = cardPositive;
- // String card_negative = ImageToBase64ByLocal(cardNegative);
- String card_negative = cardNegative;
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- requestData.put("alt_mch_no" , mch.getAlt_mch_no());
- requestData.put("card_positive" , card_positive);
- requestData.put("card_negative" , card_negative);
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altMchPics.uploadPic");
- requestJson.put("version", "1.0");
- requestJson.put("data", requestData);
- // 32位随机字符串
- String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
- requestJson.put("rand_str", uuid);
- requestJson.put("sign_type", JoinpayConstant.sign_type_MD5);
- requestJson.put("mch_no", JoinpayConstant.mch_no);
- String sign = createMD5Sign(requestJson , JoinpayConstant.key);
- requestJson.put("sign", sign.toUpperCase());
- logger.info("请求参数:" + requestJson);
- String back=null;
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- logger.info("响应参数:" + jsonObject);
- // 判断请求是否正确,受理成功
- if(jsonObject.has("resp_code")){
- String resp_code = jsonObject.getString("resp_code");
- mch.setResp_code(resp_code);
- }else{
- return "请求失败";
- }
- // 处理data
- if(jsonObject.has("data")){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- String biz_code = data.getString("biz_code");
- if(biz_code.equals("B100000")){
- String approve_status = "审核中";
- mch.setApprove_status(approve_status);
- mch.setApprove_note("");
- back = approve_status;
- }
- if(biz_code.equals("B100002")){
- String approve_status = "上传失败";
- String approve_note = data.getString("biz_msg");
- mch.setApprove_note(approve_note);
- mch.setApprove_status(approve_status);
- back = approve_status;
- }
- if(biz_code.equals("B101017")){
- String approve_status = "上传失败";
- String approve_note = data.getString("biz_msg");
- mch.setApprove_note(approve_note);
- mch.setApprove_status(approve_status);
- back = approve_status;
- }
- update(mch);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return back;
- }
- /**
- * 传送身份证图片
- * @param
- * @return
- */
- @Override
- public String sendCardBusiness(Mch mch, String cardPositive, String cardNegative, String tradeLicence, String openAccountLicence) {
- // String url = "https://www.joinpay.com/allocFunds";
- String url = "https://upload.joinpay.com/allocFunds";
- if(StringUtils.isEmpty(mch.getAlt_mch_no())){
- return "找不到商家编号";
- }
- // String card_positive = ImageToBase64ByLocal(cardPositive);
- String card_positive = cardPositive;
- // String card_negative = ImageToBase64ByLocal(cardNegative);
- String card_negative = cardNegative;
- String trade_licence = tradeLicence;
- String open_account_licence = openAccountLicence;
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- requestData.put("alt_mch_no" , mch.getAlt_mch_no());
- requestData.put("card_positive" , card_positive);
- requestData.put("card_negative" , card_negative);
- requestData.put("trade_licence" , trade_licence);
- requestData.put("open_account_licence" , open_account_licence);
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altMchPics.uploadPic");
- requestJson.put("version", "1.0");
- requestJson.put("data", requestData);
- // 32位随机字符串
- String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
- requestJson.put("rand_str", uuid);
- requestJson.put("sign_type", JoinpayConstant.sign_type_MD5);
- requestJson.put("mch_no", JoinpayConstant.mch_no);
- String sign = createMD5Sign(requestJson , JoinpayConstant.key);
- requestJson.put("sign", sign.toUpperCase());
- logger.info("请求参数:" + requestJson);
- String back=null;
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- logger.info("响应参数:" + jsonObject);
- // 判断请求是否正确,受理成功
- if(jsonObject.has("resp_code")){
- String resp_code = jsonObject.getString("resp_code");
- mch.setResp_code(resp_code);
- }else{
- return "请求失败";
- }
- // 处理data
- if(jsonObject.has("data")){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- String biz_code = data.getString("biz_code");
- if(biz_code.equals("B100000")){
- String approve_status = "审核中";
- mch.setApprove_status(approve_status);
- mch.setApprove_note("");
- back = approve_status;
- }
- if(biz_code.equals("B100002")){
- String approve_status = "上传失败";
- String approve_note = data.getString("biz_msg");
- mch.setApprove_note(approve_note);
- mch.setApprove_status(approve_status);
- back = approve_status;
- }
- if(biz_code.equals("B101017")){
- String approve_status = "上传失败";
- String approve_note = data.getString("biz_msg");
- mch.setApprove_note(approve_note);
- mch.setApprove_status(approve_status);
- back = approve_status;
- }
- update(mch);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return back;
- }
- /**
- * 查询身份证照片审核状态
- * @param
- * @return
- */
- @Override
- public String searchApprove(Mch mch) {
- String url = "https://www.joinpay.com/allocFunds";
- if(StringUtils.isEmpty(mch.getAlt_mch_no())){
- return "找不到商家编号";
- }
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- requestData.put("alt_mch_no" , mch.getAlt_mch_no());
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altMchPics.queryPicsInfo");
- requestJson.put("version", "1.0");
- requestJson.put("data", requestData);
- // 32位随机字符串
- String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
- requestJson.put("rand_str", uuid);
- requestJson.put("sign_type", JoinpayConstant.sign_type_MD5);
- requestJson.put("mch_no", JoinpayConstant.mch_no);
- String sign = createMD5Sign(requestJson , JoinpayConstant.key);
- requestJson.put("sign", sign.toUpperCase());
- logger.info("请求参数:" + requestJson);
- String back=null;
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- logger.info("响应参数:" + jsonObject);
- // 判断请求是否正确,受理成功
- if(jsonObject.has("resp_code")){
- String resp_code = jsonObject.getString("resp_code");
- mch.setResp_code(resp_code);
- }else{
- return "请求失败";
- }
- // 处理data
- if(jsonObject.has("data")){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- String biz_code = data.getString("biz_code");
- if(biz_code.equals("B100000")){
- String approve_status = "审核通过";
- String approve_note = data.getString("approve_note");
- mch.setApprove_note(approve_note);
- mch.setApprove_status(approve_status);
- back = approve_status;
- }
- if(biz_code.equals("B110008")){
- String approve_status = "审核未通过";
- String approve_note = data.getString("biz_msg");
- mch.setApprove_note(approve_note);
- mch.setApprove_status(approve_status);
- back = approve_status;
- }
- if(biz_code.equals("B101018")){
- String approve_status = "审核未通过";
- String approve_note = data.getString("biz_msg");
- mch.setApprove_note(approve_note);
- mch.setApprove_status(approve_status);
- back = approve_status;
- }
- update(mch);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return back;
- }
- /**
- * 本地图片转换成base64字符串
- *
- * @param imgFile 图片本地路径
- * @return
- */
- public static String ImageToBase64ByLocal(String imgFile) {// 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
- InputStream in = null;
- byte[] data = null;
- // 读取图片字节数组
- try {
- in = new FileInputStream(imgFile);
- data = new byte[in.available()];
- in.read(data);
- in.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- // 对字节数组Base64编码
- BASE64Encoder encoder = new BASE64Encoder();
- String[] strings = imgFile.split("\\.");
- if(strings.length>1){
- String str = strings[strings.length-1];
- String title = "data:image/"+str+";base64,";
- return title+encoder.encode(data);// 返回Base64编码过的字节数组字符串
- }else {
- return null;
- }
- }
- /**
- * 签名算法sign , MD5 签名
- * @param requestJson
- * @return
- */
- public static String createMD5Sign(JSONObject requestJson , String key){
- StringBuffer sb = new StringBuffer();
- Set es = requestJson.entrySet();
- Iterator it = es.iterator();
- while(it.hasNext()) {
- Map.Entry entry = (Map.Entry)it.next();
- String k = (String)entry.getKey();
- Object v = entry.getValue();
- if(null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
- sb.append(k + "=" + v + "&");
- }
- }
- sb.append("key=" + key);
- logger.info("签名字符串:"+sb.toString());
- String sign = DigestUtils.md5Hex(sb.toString());
- return sign;
- }
- /**
- * 获取随机字符串
- * @return
- */
- public static String getRandomString(int length){
- String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
- Random random=new Random();
- StringBuffer sb=new StringBuffer();
- for(int i=0;i<length;i++){
- int number=random.nextInt(62);
- sb.append(str.charAt(number));
- }
- return sb.toString();
- }
- }
|