123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- package com.szwl.service.impl;
- import com.alibaba.fastjson.JSONObject;
- import com.szwl.model.bo.JoinpayConstant;
- import com.szwl.model.entity.TJoinpayMch;
- import com.szwl.mapper.TJoinpayMchMapper;
- import com.szwl.model.entity.TJoinpayMchCheck;
- import com.szwl.model.utils.AESUtil;
- import com.szwl.model.utils.Constant;
- import com.szwl.model.utils.HttpClientUtils;
- import com.szwl.model.utils.RSAUtil;
- import com.szwl.service.TJoinpayMchService;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import org.apache.commons.codec.digest.DigestUtils;
- import org.springframework.stereotype.Service;
- import java.io.IOException;
- import java.util.*;
- /**
- * <p>
- * 汇聚支付用户收款信息表 服务实现类
- * </p>
- *
- * @author wuhs
- * @since 2022-04-29
- */
- @Service
- public class TJoinpayMchServiceImpl extends ServiceImpl<TJoinpayMchMapper, TJoinpayMch> implements TJoinpayMchService {
- @Override
- public String createMch(TJoinpayMch mch) {
- Long adminId = mch.getAdminId();
- if(null == adminId){
- return "找不到对应的管理员";
- }
- Integer alt_merchant_type = mch.getAltMerchantType();
- 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.setLoginName(login_name);
- // String alt_mch_name = "test1_" + adminId + "@mianhuatang.com";
- // String alt_mch_name = mch.getLegal_person();
- String alt_mch_name = mch.getBankAccountName();
- mch.setAltMchName(alt_mch_name);
- mch.setAltMchShortName("");
- // 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.getAltMerchantType());
- requestData.put("busi_contact_name", mch.getBusiContactName());
- requestData.put("busi_contact_mobile_no", mch.getBusiContactMobileNo());
- requestData.put("phone_no", mch.getPhoneNo());
- requestData.put("manage_scope", mch.getManageScope());
- requestData.put("manage_addr", mch.getManageAddr());
- requestData.put("legal_person", AESUtil.encrypt(mch.getLegalPerson() , aes_key1 , aes_key2 ));
- requestData.put("id_card_no", AESUtil.encrypt(mch.getIdCardNo(), aes_key1 , aes_key2 ));
- requestData.put("id_card_expiry", mch.getIdCardExpiry());
- // 个体工商户和企业必填:营业执照编号 / 营业执照有效期
- if(JoinpayConstant.alt_merchant_type2== alt_merchant_type || JoinpayConstant.alt_merchant_type3== alt_merchant_type){
- requestData.put("license_no", mch.getLicenseNo());
- requestData.put("license_expiry", mch.getLicenseExpiry());
- }
- if(mch.getSettMode()!=null){
- requestData.put("sett_mode", mch.getSettMode());
- }else {
- // 由汇聚自动结算
- requestData.put("sett_mode", JoinpayConstant.sett_mode1);
- }
- // 结算周期类型:自然日
- requestData.put("sett_date_type", JoinpayConstant.sett_date_type2);
- if(mch.getRiskDay()!=null){
- requestData.put("risk_day", mch.getRiskDay());
- }else{
- // 结算周期: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.getBankAccountName(), aes_key1 , aes_key2 ));
- requestData.put("bank_account_no", AESUtil.encrypt(mch.getBankAccountNo(), aes_key1 , aes_key2 ));
- requestData.put("bank_channel_no", mch.getBankChannelNo());
- 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.setRespCode(jsonObject.getString("resp_code"));
- }
- if(jsonObject.has("data")){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if(data.has("biz_code")){
- mch.setBizCode(data.getString("biz_code"));
- }
- if (data.has("alt_mch_no")){
- mch.setAltMchName(data.getString("alt_mch_no"));
- }
- if(data.has("order_status")){
- mch.setOrderStatus(data.getString("order_status"));
- }
- }
- /**
- * 更新一下分销商户的 各种响应码 & login_name
- */
- mch.setCreateDate(new Date());
- mch.setModifyDate(new Date());
- save(mch);
- if(jsonObject.has("resp_code")){
- String resp_code = jsonObject.getString("resp_code");
- mch.setRespCode(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(TJoinpayMch mch) {
- Long adminId = mch.getAdminId();
- if(null == adminId){
- return "找不到对应的管理员";
- }
- if(JoinpayConstant.alt_merchant_type1!=mch.getAltMerchantType()
- && JoinpayConstant.alt_merchant_type2!= mch.getAltMerchantType()
- && JoinpayConstant.alt_merchant_type3!= mch.getAltMerchantType()){
- 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.getAltMchNo());
- // requestData.put("legal_person", AESUtil.encrypt(legal_person, aes_key1 , aes_key2 ));
- requestData.put("legal_person", mch.getLegalPerson());
- // requestData.put("id_card_no", AESUtil.encrypt(id_card_no, aes_key1 , aes_key2 ));
- requestData.put("id_card_no", mch.getIdCardNo());
- if(JoinpayConstant.alt_merchant_type2== mch.getAltMerchantType() || JoinpayConstant.alt_merchant_type3== mch.getAltMerchantType()){
- // 企业用对公账户
- requestData.put("bank_account_type", JoinpayConstant.bank_account_type4);
- mch.setBankAccountType(JoinpayConstant.bank_account_type4);
- String alt_mch_name = mch.getBankAccountName();
- requestData.put("alt_mch_name", alt_mch_name);
- requestData.put("license_no", mch.getLicenseNo());
- // requestData.put("alt_mch_name", AESUtil.encrypt(alt_mch_name, aes_key1 , aes_key2 ));/**/
- }else if(JoinpayConstant.alt_merchant_type1== mch.getAltMerchantType()){
- // 个人用借记卡
- requestData.put("bank_account_type", JoinpayConstant.bank_account_type1);
- mch.setBankAccountType(JoinpayConstant.bank_account_type1);
- }
- requestData.put("bank_account_name", mch.getBankAccountName());
- // requestData.put("bank_account_name", AESUtil.encrypt(bank_account_name, aes_key1 , aes_key2 ));
- requestData.put("bank_account_no", mch.getBankAccountNo());
- // requestData.put("bank_account_no", AESUtil.encrypt(bank_account_no, aes_key1 , aes_key2 ));
- // requestData.put("bank_channel_no", AESUtil.encrypt(bank_channel_no, aes_key1 , aes_key2 ));
- requestData.put("bank_channel_no", mch.getBankChannelNo());
- if(mch.getSettMode()!=null){
- requestData.put("sett_mode", mch.getSettMode());
- }else {
- // 由汇聚自动结算
- requestData.put("sett_mode", JoinpayConstant.sett_mode1);
- }
- // 结算周期类型:自然日
- requestData.put("sett_date_type", JoinpayConstant.sett_date_type2);
- if(mch.getRiskDay()!=null){
- requestData.put("risk_day", mch.getRiskDay());
- }else{
- // 结算周期:1
- requestData.put("risk_day", 1);
- }
- // 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(mch.getAltMerchantType()==12){
- String alt_mch_name = mch.getBankAccountName();
- // mch.setAlt_mch_name(alt_mch_name);
- }
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altmch.modify");
- requestJson.put("version", "1.1");
- 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.setRespCode(jsonObject.getString("resp_code"));
- }
- if(jsonObject.has("data")){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if(data.has("biz_code")){
- mch.setBizCode(data.getString("biz_code"));
- }
- if (data.has("alt_mch_no")){
- mch.setAltMchNo(data.getString("alt_mch_no"));
- }
- if(data.has("order_status")){
- mch.setOrderStatus(data.getString("order_status"));
- }
- }
- if(jsonObject.has("resp_code")){
- String resp_code = jsonObject.getString("resp_code");
- mch.setRespCode(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;
- }
- /**
- * 获取随机字符串
- * @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();
- }
- /**
- * 签名算法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;
- }
- }
|