|
@@ -22,6 +22,7 @@ import org.springframework.stereotype.Service;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
@@ -453,7 +454,228 @@ public class MchServiceImpl extends BaseServiceImpl<Mch, Long> implements MchSer
|
|
|
|
|
|
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;
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 签名算法sign , MD5 签名
|