123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919 |
- /*
- *
- * 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();
- 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);
- }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);
- 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";
- 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 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();
- }
- }
|