Просмотр исходного кода

[支付][添加]:分账接收方注册接口

release_toaliyun_real
hupeng 7 лет назад
Родитель
Сommit
47d36aa34f
7 измененных файлов: 232 добавлений и 15 удалений
  1. +2
    -0
      mallinkService/src/main/java/com/simple/common/ErrorCode.java
  2. +35
    -0
      mallinkService/src/main/java/com/simple/enums/EnumProfitSharingType.java
  3. +14
    -0
      mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java
  4. +73
    -0
      mallinkService/src/main/java/com/simple/pay/WxProfitSharingReceiverP.java
  5. +8
    -6
      mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java
  6. +2
    -1
      mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java
  7. +98
    -8
      mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java

+ 2
- 0
mallinkService/src/main/java/com/simple/common/ErrorCode.java Просмотреть файл

@@ -157,6 +157,8 @@ public enum ErrorCode{
PROFIT_SHARING_QUERY_REQUEST_FAILED(12034, "分账查询请求失败"),
PROFIT_SHARING_QUERY_APPLY_FAILED(12035, "分账查询业务失败"),
PROFIT_SHARING_QUERY_RETURN_INVALID(12036, "分账查询返回校验失败"),
PROFIT_SHARING_RECEIVER_ADD_FAILED(12037, "分账账户添加失败"),

/**
* 核销
*/


+ 35
- 0
mallinkService/src/main/java/com/simple/enums/EnumProfitSharingType.java Просмотреть файл

@@ -0,0 +1,35 @@
package com.simple.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumProfitSharingType {
PROFIT_SHARING_TYPE_WEICHAT(1, "MERCHANT_ID"),
PROFIT_SHARING_TYPE_BANK(2, "PERSONAL_WECHATID"),
;

public static EnumProfitSharingType getEnum(Integer code) {
for (EnumProfitSharingType value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumProfitSharingType(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 14
- 0
mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java Просмотреть файл

@@ -42,6 +42,20 @@ public class WxProfitSharing {
}


/**
* 分账接收方添加
* @param params
* @return
*/
public static String addReceiver(Map<String, String> params) {return doPost(RPOFIT_SHARING_ADD_RECEIVER_URL, params); }

/**
* 分账接收方删除
* @param params
* @return
*/
public static String delReceiver(Map<String, String> params) {return doPost(RPOFIT_SHARING_REMOVE_RECEIVER_URL, params); }

public static String doPost(String url, Map<String, String> params) {
return HttpUtil.payPost(url, WxPayment.toXml(params));
}


+ 73
- 0
mallinkService/src/main/java/com/simple/pay/WxProfitSharingReceiverP.java Просмотреть файл

@@ -0,0 +1,73 @@
package com.simple.pay;

import java.io.Serializable;

/**
* Created by Peng on 2018/8/10.
*/
public class WxProfitSharingReceiverP implements Serializable {
private static final long serialVersionUID = 1L;

private String mch_id; // 商户号
private String sub_mch_id; // 子商户号
private String appid; // 公众账号ID
private String sub_appid; // 子公众账号ID
private String nonce_str; // 随机字符串
private String sign; // 签名
private String receiver; // 分账接收方

public String getMch_id() {
return mch_id;
}

public void setMch_id(String mch_id) {
this.mch_id = mch_id;
}

public String getSub_mch_id() { return sub_mch_id; }

public void setSub_mch_id(String sub_mch_id) {
this.sub_mch_id = sub_mch_id;
}

public String getAppid() {
return appid;
}

public void setAppid(String appid) {
this.appid = appid;
}

public String getSub_appid() {
return sub_appid;
}

public void setSub_appid(String sub_appid) {
this.sub_appid = sub_appid;
}

public String getNonce_str() {
return nonce_str;
}

public void setNonce_str(String nonce_str) {
this.nonce_str = nonce_str;
}

public String getSign() {
return sign;
}

public void setSign(String sign) {
this.sign = sign;
}

public String getReceiver() {
return receiver;
}

public void setReceiver(String receiver) {
this.receiver = receiver;
}

}

+ 8
- 6
mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java Просмотреть файл

@@ -2,6 +2,8 @@ package com.simple.service;

import java.util.*;
import com.github.pagehelper.PageInfo;
import com.simple.common.ResultData;
import com.simple.domain.po.WxMerchant;
import com.simple.domain.po.WxProfitSharingReceiver;

public interface WxProfitSharingReceiverService {
@@ -37,12 +39,12 @@ public interface WxProfitSharingReceiverService {
* @param id
*/
void deleteById(Long id);



ResultData addReceiver(WxMerchant merchant);


ResultData delReceiver(WxMerchant merchant);
}

+ 2
- 1
mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java Просмотреть файл

@@ -13,6 +13,7 @@ import com.simple.domain.po.*;
import com.simple.enums.EnumPayDomain;
import com.simple.enums.EnumProfitSharingReceiverType;
import com.simple.enums.EnumProfitSharingStatus;
import com.simple.enums.EnumProfitSharingType;
import com.simple.exception.MallinkException;
import com.simple.mapper.*;
import com.simple.pay.WxPayment;
@@ -185,7 +186,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
//添加分账接受方
WxProfitSharingReceiver wxProfitSharingReceiver = new WxProfitSharingReceiver();
wxProfitSharingReceiver.setMerchantId(wxOrder.getMerchantId().toString());
wxProfitSharingReceiver.setSharingType(1);
wxProfitSharingReceiver.setSharingType(EnumProfitSharingType.PROFIT_SHARING_TYPE_WEICHAT.getCode());
List<WxProfitSharingReceiver> wxProfitSharingReceiverList = wxProfitSharingReceiverMapper.findList(wxProfitSharingReceiver);
if (wxProfitSharingReceiverList.size()<=0 || wxProfitSharingReceiverList.size() > 50) {
throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getMessage());


+ 98
- 8
mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java Просмотреть файл

@@ -1,11 +1,30 @@
package com.simple.service.impl;

import java.util.*;

import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.simple.common.ErrorCode;
import com.simple.common.ResultData;
import com.simple.domain.po.WxAppinfo;
import com.simple.domain.po.WxMerchant;
import com.simple.domain.po.WxPayAccount;
import com.simple.domain.po.WxProfitSharingReceiver;
import com.simple.enums.EnumAppType;
import com.simple.enums.EnumProfitSharingReceiverType;
import com.simple.enums.EnumProfitSharingStatus;
import com.simple.enums.EnumProfitSharingType;
import com.simple.mapper.WxAppinfoMapper;
import com.simple.mapper.WxPayAccountMapper;
import com.simple.mapper.WxProfitSharingReceiverMapper;
import com.simple.pay.WxPayment;
import com.simple.pay.WxProfitSharing;
import com.simple.pay.WxProfitSharingP;
import com.simple.pay.WxProfitSharingReceiverP;
import com.simple.service.WxProfitSharingReceiverService;
import com.simple.utils.BeanUtils;
import com.simple.utils.Utility;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.simple.common.IdWorker;
@@ -15,7 +34,10 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv
@Autowired
WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper;

@Autowired
WxAppinfoMapper wxAppinfoMapper;
@Autowired
WxPayAccountMapper wxPayAccountMapper;

@Override
public PageInfo<WxProfitSharingReceiver> listAsPage(WxProfitSharingReceiver record, Integer pageIndex, Integer pageSize) {
@@ -43,12 +65,80 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv
public void deleteById(Long id) {
wxProfitSharingReceiverMapper.deleteByPrimaryKey(id);
}



@Override
public ResultData addReceiver(WxMerchant merchant) {

WxAppinfo subAppInfo = new WxAppinfo();
subAppInfo.setTenantId(merchant.getTenantId());
subAppInfo.setType(EnumAppType.C.getCode());

subAppInfo = wxAppinfoMapper.findList(subAppInfo).get(0);
WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(subAppInfo.getPayId());
//WxPayAccount mainPayAccount = wxPayAccountMapper.selectByPrimaryKey(new Long(EnumPayDomain.PAY_DOMAIN_MASTER_ACCOUNT_ID.getCode()));
//WxAppinfo mainAppInfo = wxAppinfoMapper.selectByPrimaryKey(new Long(EnumPayDomain.PAY_DOMAIN_MASTER_APPINFO_ID.getCode()));


WxProfitSharingReceiver receiver = new WxProfitSharingReceiver();
receiver.setMerchantId(merchant.getId().toString());
receiver.setSharingType(EnumProfitSharingType.PROFIT_SHARING_TYPE_WEICHAT.getCode());
receiver.setId(IdWorker.get().nextId());
receiver.setCreateTime(new Date());
receiver.setUpdateTime(new Date());
receiver.setReceiverAccount(merchant.getReceiverAccount().toString());
receiver.setReceiverComments(merchant.getName());
receiver.setReceiverType(EnumProfitSharingReceiverType.PROFIT_SHARING_RECEIVER_MERCHANT_ID.getCode());
receiver.setTrueName(merchant.getName());

//分账提交
WxProfitSharingReceiverP wxProfitSharingReceiverP = new WxProfitSharingReceiverP();
//wxProfitSharingP.setAppid(mainAppInfo.getAppId());
//wxProfitSharingP.setMch_id(mainPayAccount.getMchId());
wxProfitSharingReceiverP.setAppid(subAppInfo.getAppId());
wxProfitSharingReceiverP.setMch_id(payAccount.getMchId());
wxProfitSharingReceiverP.setSub_appid(subAppInfo.getAppId());
wxProfitSharingReceiverP.setSub_mch_id(payAccount.getMchId());
wxProfitSharingReceiverP.setNonce_str(Utility.generate32UUID());


JSONObject receiverJSON = new JSONObject();
receiverJSON.put("type",EnumProfitSharingReceiverType.PROFIT_SHARING_RECEIVER_MERCHANT_ID.getMessage());
receiverJSON.put("acount",merchant.getReceiverAccount());
receiverJSON.put("name",merchant.getName());

wxProfitSharingReceiverP.setReceiver(receiverJSON.toJSONString());
String response;
try {
wxProfitSharingReceiverP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxProfitSharingReceiverP), payAccount.getApiKey()));
response = WxProfitSharing.addReceiver(BeanUtils.toStringMap(wxProfitSharingReceiverP));
}catch (Exception e) {
return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED, e.getMessage());
}
Map<String, String> returnMap = WxPayment.xmlToMap(response);
String return_code = returnMap.get("return_code");
if (!"SUCCESS".equals(return_code)) {
return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), returnMap.get("return_msg"));
}

if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){
return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage());
}

String result_code = returnMap.get("result_code");
if (!"SUCCESS".equals(result_code)) {
return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), returnMap.get("result_msg"));
}

wxProfitSharingReceiverMapper.insertSelective(receiver);
return new ResultData(returnMap);
}

@Override
public ResultData delReceiver(WxMerchant merchant) {
return new ResultData();
}

}

Загрузка…
Отмена
Сохранить