12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346 |
- package com.szwl.service.impl;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.RandomUtil;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.szwl.constant.JoinpayConstant;
- import com.szwl.feign.bean.PayFeign;
- import com.szwl.mapper.TJoinpayMchMapper;
- import com.szwl.model.bo.BalanceBo;
- import com.szwl.model.bo.SettlementRecordBo;
- import com.szwl.model.entity.TAdmin;
- import com.szwl.model.entity.THuifuMch;
- import com.szwl.model.entity.TJoinpayMch;
- import com.szwl.model.entity.WithdrawalRecord;
- 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.szwl.service.WithdrawalRecordService;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.codec.digest.DigestUtils;
- import org.apache.commons.lang.StringUtils;
- import org.apache.http.message.BasicNameValuePair;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.net.URLDecoder;
- import java.net.URLEncoder;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * <p>
- * 汇聚支付用户收款信息表 服务实现类
- * </p>
- *
- * @author wuhs
- * @since 2022-04-29
- */
- @Slf4j
- @Service
- public class TJoinpayMchServiceImpl extends ServiceImpl<TJoinpayMchMapper, TJoinpayMch> implements TJoinpayMchService {
- @Autowired
- WithdrawalRecordService withdrawalRecordService;
- @Autowired
- PayFeign payFeign;
- @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";
- mch.setLoginName(login_name);
- String alt_mch_name = mch.getBankAccountName();
- mch.setAltMchName(alt_mch_name);
- mch.setAltMchShortName("");
- // 格式为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));
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- 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"));
- }
- }
- /**
- * 更新一下分销商户的 各种响应码 & login_name
- */
- mch.setCreateDate(new Date());
- mch.setModifyDate(new Date());
- mch.setType("1");
- if (StringUtils.isNotEmpty(mch.getAltMchNo())) {
- 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();
- }
- if (StringUtils.isNotEmpty(mch.getAltMchNo())) {
- return Constant.correct_code;
- } else {
- return "注册失败";
- }
- }
- @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());
- if (StringUtils.isNotEmpty(mch.getApproveStatus())) {
- if (!mch.getApproveStatus().equals("审核通过")) {
- requestData.put("legal_person", mch.getLegalPerson());
- 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();
- if (StringUtils.isNotEmpty(mch.getApproveStatus()) && !mch.getApproveStatus().equals("审核通过")) {
- 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_no", mch.getBankAccountNo());
- 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);
- }
- if (mch.getAltMerchantType() == 12) {
- String alt_mch_name = mch.getBankAccountName();
- }
- 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));
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- 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;
- }
- // 协议内容签约接口
- @Override
- public String altMchSign(TJoinpayMch mch) {
- String url = "https://www.joinpay.com/allocFunds";
- if (StringUtils.isEmpty(mch.getAltMchNo())) {
- 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.getAltMchNo());
- 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());
- String back = null;
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- // 判断请求是否正确,受理成功
- 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");
- } 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.setSignStatus(sign_status);
- mch.setSignTrxNo(sign_trx_no);
- back = sign_status;
- }
- updateById(mch);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return back;
- }
- /**
- * 传送身份证图片
- *
- * @param
- * @return
- */
- @Override
- public String sendCard(TJoinpayMch mch, String cardPositive, String cardNegative, String staus) {
- // String url = "https://www.joinpay.com/allocFunds";
- String url = "https://upload.joinpay.com/allocFunds";
- if (StringUtils.isEmpty(mch.getAltMchNo())) {
- 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.getAltMchNo());
- requestData.put("card_positive", card_positive);
- requestData.put("card_negative", card_negative);
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- if (staus.equals("0")) {
- requestJson.put("method", "altMchPics.uploadPic");
- } else {
- requestJson.put("method", "altMchPics.modifyPic");
- }
- 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.setRespCode(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.setApproveStatus(approve_status);
- mch.setApproveNote("");
- mch.setStep("1");
- back = approve_status;
- }
- if (biz_code.equals("B100002")) {
- String approve_status = "上传失败";
- String approve_note = data.getString("biz_msg");
- mch.setApproveNote(approve_note);
- mch.setApproveStatus(approve_status);
- back = approve_status;
- }
- if (biz_code.equals("B101017")) {
- String approve_status = "上传失败";
- String approve_note = data.getString("biz_msg");
- mch.setApproveNote(approve_note);
- mch.setApproveStatus(approve_status);
- back = approve_status;
- }
- String approve_note = data.getString("biz_msg");
- mch.setApproveNote(approve_note);
- if (StringUtils.isEmpty(back)) {
- back = approve_note;
- }
- updateById(mch);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return back;
- }
- /**
- * 传送身份证图片
- *
- * @param
- * @return
- */
- @Override
- public String sendCardBusiness(TJoinpayMch mch, String cardPositive, String cardNegative, String tradeLicence, String openAccountLicence, String staus) {
- // String url = "https://www.joinpay.com/allocFunds";
- String url = "https://upload.joinpay.com/allocFunds";
- if (StringUtils.isEmpty(mch.getAltMchNo())) {
- 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.getAltMchNo());
- 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>());
- if (staus.equals("0")) {
- requestJson.put("method", "altMchPics.uploadPic");
- } else {
- requestJson.put("method", "altMchPics.modifyPic");
- }
- 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());
- String s = requestJson.toString();
- String back = null;
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- // 判断请求是否正确,受理成功
- if (jsonObject.has("resp_code")) {
- String resp_code = jsonObject.getString("resp_code");
- mch.setRespCode(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.setApproveStatus(approve_status);
- mch.setApproveNote("");
- back = approve_status;
- mch.setStep("1");
- }
- if (biz_code.equals("B100002")) {
- String approve_status = "上传失败";
- String approve_note = data.getString("biz_msg");
- mch.setApproveNote(approve_note);
- mch.setApproveStatus(approve_status);
- back = approve_status;
- }
- if (biz_code.equals("B101017")) {
- String approve_status = "上传失败";
- String approve_note = data.getString("biz_msg");
- mch.setApproveNote(approve_note);
- mch.setApproveStatus(approve_status);
- back = approve_status;
- }
- updateById(mch);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return back;
- }
- @Override
- public String updateApproveStatus(TJoinpayMch mch) {
- String url = "https://www.joinpay.com/allocFunds";
- if (StringUtils.isEmpty(mch.getAltMchNo())) {
- return "找不到商家编号";
- }
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- requestData.put("alt_mch_no", mch.getAltMchNo());
- 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());
- System.out.println(jsonObject.getJSONObject("data"));
- // 判断请求是否正确,受理成功
- if (jsonObject.has("resp_code")) {
- String resp_code = jsonObject.getString("resp_code");
- mch.setRespCode(resp_code);
- } else {
- return "请求失败";
- }
- // 处理data
- if (jsonObject.has("data")) {
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- String biz_code = data.getString("biz_code");
- String approve_status = data.getString("approve_status");
- String approve_note = data.getString("approve_note");
- if (biz_code.equals("B100000")) {
- if (approve_status.equals("P1000")) {
- mch.setApproveStatus("审核通过");
- mch.setApproveNote("");
- back = approve_status;
- } else if (approve_status.equals("P2000")) {
- mch.setApproveStatus("审核不通过");
- mch.setApproveNote(approve_note);
- back = approve_status;
- }
- }
- updateById(mch);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return back;
- }
- @Override
- public BalanceBo getBalance(TJoinpayMch mch) {
- String url = "https://www.joinpay.com/allocFunds";
- BalanceBo balanceBo = new BalanceBo();
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- requestData.put("alt_mch_no", mch.getAltMchNo());
- 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());
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- log.info("查询余额返回数据:{}", jsonObject);
- // 判断请求是否正确,受理成功
- if (jsonObject.has("resp_code")) {
- String resp_code = jsonObject.getString("resp_code");
- if (JoinpayConstant.resp_code1.equals(resp_code)) {
- // 处理data
- if (jsonObject.has("data")) {
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- // 更新账户的金额
- if (data.has("alt_avil_balance")) {
- // 可提现金额
- BigDecimal altAvilBalance = new BigDecimal(data.getString("alt_avil_balance")).divide(new BigDecimal(100));
- balanceBo.setWithdrawableBalance(altAvilBalance);
- if (data.has("alt_main_balance")) {
- BigDecimal altMainBalance = new BigDecimal(data.getString("alt_main_balance")).divide(new BigDecimal(100));
- balanceBo.setReceivableBalance(altMainBalance.subtract(altAvilBalance));
- }
- }
- }
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return balanceBo;
- }
- @Override
- public String withdraw(TJoinpayMch mch, WithdrawalRecord withdrawalRecord) {
- String url = "https://www.joinpay.com/allocFunds";
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- //分账方编号
- requestData.put("alt_mch_no", mch.getAltMchNo());
- //结算金额
- requestData.put("settle_amount", String.valueOf(withdrawalRecord.getAmount()));
- //结算请求号
- String mch_order_no = RandomUtil.randomNumbers(18);
- requestData.put("mch_order_no", mch_order_no);
- requestData.put("product_code", "2");
- //通知地址
- requestData.put("callback_url",JoinpayConstant.Jiesuan_Url);
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altSettle.launch");
- 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());
- log.info("提现参数:{}", requestJson);
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- log.info("提现结果:{}", jsonObject);
- // 判断请求是否正确,受理成功
- if(jsonObject.has("resp_code")){
- String respCode = jsonObject.getString("resp_code");
- if(JoinpayConstant.resp_code1.equals(respCode)){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- String bizCode = data.getString("biz_code");
- if(JoinpayConstant.biz_code1.equals(bizCode)){
- // 申请提现成功,保存记录
- withdrawalRecord.setCreateDate(new Date());
- withdrawalRecord.setOrderNo(mch_order_no);
- withdrawalRecord.setStatus(0);
- withdrawalRecordService.save(withdrawalRecord);
- return bizCode;
- }else{
- // 提现失败
- String bizMsg = data.getString("biz_msg");
- return bizMsg;
- }
- } else {
- // 受理失败
- String respMsg = jsonObject.getString("resp_msg");
- return respMsg;
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return "提现失败";
- }
- @Override
- public List<SettlementRecordBo> getAutoSettlement(TJoinpayMch joinpayMch, String date) {
- String url = "https://www.joinpay.com/allocFunds";
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- //分账方编号
- requestData.put("alt_mch_no", joinpayMch.getAltMchNo());
- //结算日期
- requestData.put("settle_date", date);
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altSettle.getAutoSettle");
- 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());
- List<SettlementRecordBo> recordBos = new ArrayList<>();
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- // 判断请求是否正确,受理成功
- if(jsonObject.has("resp_code")){
- String respCode = jsonObject.getString("resp_code");
- if(JoinpayConstant.resp_code1.equals(respCode)){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- String bizCode = data.getString("biz_code");
- if(JoinpayConstant.biz_code1.equals(bizCode)){
- org.json.JSONArray recordList = data.getJSONArray("record_list");
- for (int i = 0; i < recordList.length(); i++) {
- org.json.JSONObject record = recordList.getJSONObject(i);
- if(record.has("order_status")) {
- // 结算状态
- String orderStatus = record.getString("order_status");
- // 结算时间
- String settleDate = record.getString("settle_date");
- // 结算流水号
- String serialNo = record.getString("settle_trx_no");
- // 银行账户
- String altMchName = record.getString("alt_mch_name");
- // 银行账号
- String bankAccountNo = record.getString("bank_account_no");
- // 结算金额
- String settleAmount = record.getString("settle_amount");
- // 结算描述
- String bizMsg = record.getString("biz_msg");
- SettlementRecordBo recordBo = new SettlementRecordBo();
- if(JoinpayConstant.order_status2.equals(orderStatus)){
- // 结算成功
- recordBo.setAdminId(joinpayMch.getAdminId());
- recordBo.setSerialNo(serialNo);
- recordBo.setBankAccountNo(bankAccountNo);
- recordBo.setBankAccountName(altMchName);
- recordBo.setAmount(new BigDecimal(settleAmount));
- recordBo.setDate(settleDate);
- recordBo.setStatus(1);
- } else if(JoinpayConstant.order_status3.equals(orderStatus)){
- // 结算失败
- recordBo.setAdminId(joinpayMch.getAdminId());
- recordBo.setSerialNo(serialNo);
- recordBo.setBankAccountNo(bankAccountNo);
- recordBo.setBankAccountName(altMchName);
- recordBo.setAmount(new BigDecimal(settleAmount));
- recordBo.setDate(settleDate);
- recordBo.setStatus(2);
- recordBo.setFailReason(bizMsg);
- } else if(JoinpayConstant.order_status4.equals(orderStatus)){
- // 结算中
- recordBo.setAdminId(joinpayMch.getAdminId());
- recordBo.setSerialNo(serialNo);
- recordBo.setBankAccountNo(bankAccountNo);
- recordBo.setBankAccountName(altMchName);
- recordBo.setAmount(new BigDecimal(settleAmount));
- recordBo.setDate(settleDate);
- recordBo.setStatus(0);
- }
- recordBos.add(recordBo);
- }
- }
- }
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return recordBos;
- }
- @Override
- public void withdrawStatus(TAdmin admin, WithdrawalRecord withdrawalRecord) {
- String url = "https://www.joinpay.com/allocFunds";
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- // 结算订单号
- requestData.put("mch_order_no", withdrawalRecord.getOrderNo());
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altSettle.get");
- 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());
- log.info("提现参数:{}", requestJson);
- org.json.JSONObject jsonObject;
- try {
- jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- log.info("提现结果:{}", jsonObject);
- // 判断请求是否正确,受理成功
- if(jsonObject.has("resp_code")){
- String respCode = jsonObject.getString("resp_code");
- if(JoinpayConstant.resp_code1.equals(respCode)){
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- String bizCode = data.getString("biz_code");
- if(JoinpayConstant.biz_code1.equals(bizCode)){
- // 申请提现成功,保存记录
- String orderStatus = data.getString("order_status");
- if (JoinpayConstant.order_status2.equals(orderStatus)) {
- withdrawalRecord.setStatus(1);
- withdrawalRecord.setArrivalDate(new Date());
- } else if (JoinpayConstant.order_status3.equals(orderStatus)) {
- withdrawalRecord.setStatus(2);
- withdrawalRecord.setResultMsg(data.getString("biz_msg"));
- }
- withdrawalRecordService.updateById(withdrawalRecord);
- }
- }
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @Override
- public String newCreateMch(TJoinpayMch joinpayMch) {
- Integer altMerchantType = joinpayMch.getAltMerchantType();
- String url = "https://www.joinpay.com/allocFunds";
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- String loginName = "sunzee" + RandomUtil.randomNumbers(10) + "@mianhuatang.com";
- joinpayMch.setLoginName(loginName);
- String altMchName = joinpayMch.getBankAccountName();
- joinpayMch.setAltMchName(altMchName);
- // 格式为16 位随机字符串:16 位随机字符串
- // String aeskey1 = getRandomString(16);
- // String aeskey2 = getRandomString(16);
- requestData.put("login_name", loginName);
- requestData.put("alt_mch_name", altMchName);
- requestData.put("alt_merchant_type", altMerchantType);
- requestData.put("busi_contact_name", joinpayMch.getBusiContactName());
- requestData.put("busi_contact_mobile_no", joinpayMch.getBusiContactMobileNo());
- requestData.put("phone_no", joinpayMch.getPhoneNo());
- // requestData.put("legal_person", AESUtil.encrypt(joinpayMch.getLegalPerson(), aeskey1, aeskey2));
- // requestData.put("id_card_no", AESUtil.encrypt(joinpayMch.getIdCardNo(), aeskey1, aeskey2));
- requestData.put("legal_person", joinpayMch.getLegalPerson());
- requestData.put("id_card_no", joinpayMch.getIdCardNo());
- requestData.put("id_card_expiry", joinpayMch.getIdCardExpiry());
- // 企业必填:营业执照编号 / 营业执照有效期
- if (JoinpayConstant.ALT_MERCHANT_TYPE_ENTERPRISE == altMerchantType) {
- requestData.put("license_no", joinpayMch.getLicenseNo());
- requestData.put("license_expiry", joinpayMch.getLicenseExpiry());
- }
- if (joinpayMch.getSettMode() != null) {
- requestData.put("sett_mode", joinpayMch.getSettMode());
- } else {
- // 由汇聚自动结算
- requestData.put("sett_mode", JoinpayConstant.SETT_MODE_ONE);
- }
- // 结算周期类型:自然日
- requestData.put("sett_date_type", JoinpayConstant.SETT_DATE_DAY);
- if (joinpayMch.getRiskDay() != null) {
- requestData.put("risk_day", joinpayMch.getRiskDay());
- } else {
- // 结算周期:1
- requestData.put("risk_day", 1);
- }
- if (JoinpayConstant.ALT_MERCHANT_TYPE_ENTERPRISE == altMerchantType) {
- // 企业用对公账户
- requestData.put("bank_account_type", JoinpayConstant.BANK_ACCOUNT_TYPE_FOUR);
- requestData.put("bank_channel_no", joinpayMch.getBankChannelNo());
- } else if (JoinpayConstant.ALT_MERCHANT_TYPE_PERSON == altMerchantType) {
- // 个人用借记卡
- requestData.put("bank_account_type", JoinpayConstant.BANK_ACCOUNT_TYPE_ONE);
- }
- // requestData.put("bank_account_name", AESUtil.encrypt(joinpayMch.getBankAccountName(), aeskey1, aeskey2));
- // requestData.put("bank_account_no", AESUtil.encrypt(joinpayMch.getBankAccountNo(), aeskey1, aeskey2));
- requestData.put("bank_account_name", joinpayMch.getBankAccountName());
- requestData.put("bank_account_no", joinpayMch.getBankAccountNo());
- requestData.put("notify_url", JoinpayConstant.MERCHANT_URL);
- JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
- requestJson.put("method", "altmch.create");
- 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());
- String result = "";
- try {
- org.json.JSONObject jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
- String respCode = jsonObject.getString("resp_code");
- String respMsg = jsonObject.getString("resp_msg");
- joinpayMch.setRespCode(respCode);
- if (JoinpayConstant.resp_code1.equals(respCode)) {
- // 受理成功
- if (jsonObject.has("data")) {
- org.json.JSONObject data = jsonObject.getJSONObject("data");
- if (data.has("biz_code")) {
- joinpayMch.setBizCode(data.getString("biz_code"));
- }
- if (data.has("alt_mch_no")) {
- joinpayMch.setAltMchNo(data.getString("alt_mch_no"));
- }
- if (data.has("order_status")) {
- joinpayMch.setOrderStatus(data.getString("order_status"));
- }
- }
- }
- return respMsg;
- /**
- * 更新一下分销商户的 各种响应码 & login_name
- */
- // joinpayMch.setCreateDate(new Date());
- // joinpayMch.setModifyDate(new Date());
- // joinpayMch.setType("1");
- // if (StringUtils.isNotEmpty(joinpayMch.getAltMchNo())) {
- // save(joinpayMch);
- // }
- //
- // 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();
- }
- // if (StringUtils.isNotEmpty(mch.getAltMchNo())) {
- // return Constant.correct_code;
- // } else {
- // return "注册失败";
- // }
- return "";
- }
- /**
- * 获取随机字符串
- *
- * @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;
- }
- @Override
- public String uniPay(String sn, BigDecimal amount, String productName, String productDesc, String commonParameter,
- String returnUrl, String notifyUrl, String frpCode, String isShowPic, String openId, String authCode,
- String appid, String transactionModel, String tradeMerchantNo, String buyerId, String isAlt, String altType,
- JSONArray altInfo, String altUrl, BigDecimal marketingAmount) throws UnsupportedEncodingException {
- String url = "https://www.joinpay.com/trade/uniPayApi.action";
- List<BasicNameValuePair> data = new ArrayList<BasicNameValuePair>();
- data.add(new BasicNameValuePair("p0_Version", JoinpayConstant.pay_version));
- data.add(new BasicNameValuePair("p1_MerchantNo", JoinpayConstant.mch_no));
- data.add(new BasicNameValuePair("p2_OrderNo", sn));
- data.add(new BasicNameValuePair("p3_Amount", amount.setScale(2, RoundingMode.HALF_DOWN).toString()));
- data.add(new BasicNameValuePair("p4_Cur", JoinpayConstant.Cur_RMB));
- data.add(new BasicNameValuePair("p5_ProductName", URLEncoder.encode(productName, "utf-8")));
- data.add(new BasicNameValuePair("p6_ProductDesc", URLEncoder.encode(productDesc, "utf-8")));
- data.add(new BasicNameValuePair("p7_Mp", URLEncoder.encode(commonParameter, "utf-8")));
- data.add(new BasicNameValuePair("p8_ReturnUrl", returnUrl));
- data.add(new BasicNameValuePair("p9_NotifyUrl", notifyUrl));
- data.add(new BasicNameValuePair("q1_FrpCode", frpCode));
- data.add(new BasicNameValuePair("q2_MerchantBankCode", ""));
- data.add(new BasicNameValuePair("q4_IsShowPic", isShowPic));
- data.add(new BasicNameValuePair("q5_OpenId", openId));
- data.add(new BasicNameValuePair("q6_AuthCode", authCode));
- data.add(new BasicNameValuePair("q7_AppId", appid));
- data.add(new BasicNameValuePair("q8_TerminalNo", ""));
- data.add(new BasicNameValuePair("q9_TransactionModel", transactionModel));
- if (!StringUtils.isEmpty(tradeMerchantNo)) {
- data.add(new BasicNameValuePair("qa_TradeMerchantNo", tradeMerchantNo));
- }
- // data.add(new BasicNameValuePair("qa_TradeMerchantNo", tradeMerchantNo));
- data.add(new BasicNameValuePair("qb_buyerId", buyerId));
- data.add(new BasicNameValuePair("qc_IsAlt", isAlt));
- data.add(new BasicNameValuePair("qd_AltType", altType));
- data.add(new BasicNameValuePair("qe_AltInfo", altInfo == null ? null : altInfo.toString()));
- data.add(new BasicNameValuePair("qf_AltUrl", altUrl));
- data.add(new BasicNameValuePair("qg_MarketingAmount", marketingAmount == null ? null : marketingAmount.setScale(2, RoundingMode.HALF_DOWN).toString()));
- // TODO: 2019-04-01 空值不参与签名!!!!!!!!!!!!!!!!!!
- String hmac = createHmacSign(data, JoinpayConstant.key);
- data.add(new BasicNameValuePair("hmac", hmac));
- // logger.info("请求参数:" + data);
- String result = HttpClientUtils.postKeyValue(url, data);
- // logger.info("响应参数:" + result);
- return result;
- }
- @Override
- public String refreshMch(TJoinpayMch mch) {
- String login_name = mch.getLoginName();
- 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");
- requestData.put("alt_login_name", mch.getLoginName());
- 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.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 (data.has("alt_main_balance")) {
- mch.setAltMainBalance(new BigDecimal(data.getString("alt_main_balance")));
- }
- }
- // 判断请求是否正确,受理成功
- 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");
- } else {
- return JoinpayConstant.resp_code.get(resp_code);
- }
- }
- } else {
- return "请求失败";
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- updateById(mch);
- return Constant.correct_code;
- }
- @Override
- public String refreshMyAccount(TJoinpayMch mch) {
- String url = "https://www.joinpay.com/allocFunds";
- if (StringUtils.isEmpty(mch.getAltMchNo())) {
- return "找不到商家编号";
- }
- JSONObject requestData = new JSONObject(new LinkedHashMap());
- requestData.put("alt_mch_no", mch.getAltMchNo());
- 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.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");
- } 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.setAltMainBalance(new BigDecimal(data.getString("alt_main_balance")).divide(new BigDecimal(100)));
- }
- if (data.has("alt_guar_balance")) {
- mch.setAltGuarBalance(new BigDecimal(data.getString("alt_guar_balance")).divide(new BigDecimal(100)));
- }
- if (data.has("alt_avil_balance")) {
- mch.setAltAvilBalance(new BigDecimal(data.getString("alt_avil_balance")).divide(new BigDecimal(100)));
- }
- updateById(mch);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return Constant.correct_code;
- }
- /**
- * 签名算法sign , hmac 签名
- *
- * @param data
- * @return
- */
- public static String createHmacSign(List<BasicNameValuePair> data, String key) throws UnsupportedEncodingException {
- StringBuffer sb = new StringBuffer();
- Iterator<BasicNameValuePair> es = data.iterator();
- while (es.hasNext()) {
- BasicNameValuePair entry = (BasicNameValuePair) es.next();
- String k = (String) entry.getName();
- String v = (String) entry.getValue();
- if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
- sb.append(URLDecoder.decode(String.valueOf(v), "utf-8"));
- }
- }
- sb.append(key);
- // logger.info("签名字符串:" + sb.toString());
- String sign = DigestUtils.md5Hex(sb.toString());
- return sign;
- }
- }
|