无关风月
2024-07-11 eb6b6dbb35a9f029e0b7d269773685c19fd40976
cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/WeChatUtil.java
@@ -1,168 +1,168 @@
package com.dsh.guns.modular.system.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.domain.Shop;
import com.dsh.course.util.UUIDUtil;
import com.dsh.guns.core.util.ToolUtil;
import com.dsh.guns.modular.system.controller.util.UploadUtil;
import com.dsh.guns.modular.system.model.OperatorAuth;
import com.dsh.guns.modular.system.model.TOperator;
import com.dsh.guns.modular.system.model.User;
import com.dsh.guns.modular.system.service.IUserService;
import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsRequest;
import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsResult;
import com.github.binarywang.wxpay.bean.media.ImageUploadResult;
import com.github.binarywang.wxpay.service.EcommerceService;
import com.github.binarywang.wxpay.service.MerchantMediaService;
import com.github.binarywang.wxpay.service.WxPayService;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 微信工具类
 */
@Component
public class WeChatUtil {
    private  WxPayService wxService;
    /**
     * @description  电商二级商户进件(提交申请单)
     * @author  jqs
     * @date    2023/8/11 10:04
     * @param shopAuthentication
     * @param applyNumber
     * @param operator
     * @return  ApplymentsResult
     */
    public  ApplymentsResult ecommerceApply(OperatorAuth shopAuthentication, String applyNumber, TOperator operator) throws Exception {
        EcommerceService ecommerceService = wxService.getEcommerceService();
        MerchantMediaService merchantMediaService = wxService.getMerchantMediaService();
        ApplymentsRequest request = new ApplymentsRequest();
        //生成提交类
        request.setOutRequestNo(applyNumber);
        if("ENTERPRISE".equals(shopAuthentication.getBodyType())){
            request.setOrganizationType("2");
        }else{
            request.setOrganizationType("4");
        }
        //营业执照
        ApplymentsRequest.BusinessLicenseInfo business_license_info = new ApplymentsRequest.BusinessLicenseInfo();
        InputStream blImageIO = OBSUploadUtil.getOBSStream(shopAuthentication.getBusinessPicture().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
        ImageUploadResult blImageIR = merchantMediaService.imageUploadV3(blImageIO,applyNumber+"blimage.jpg");
        business_license_info.setBusinessLicenseCopy(blImageIR.getMediaId());
        blImageIO.close();
        business_license_info.setBusinessLicenseNumber(shopAuthentication.getBusinessNumber());
        business_license_info.setMerchantName(shopAuthentication.getBusinessName());
        business_license_info.setLegalPerson(shopAuthentication.getLegalPerson());
        business_license_info.setCompanyAddress(shopAuthentication.getRegisterAddress());
        List<String> businessTimeList = new ArrayList<>();
        businessTimeList.add(0,shopAuthentication.getBusinessTerm());
        businessTimeList.add(1,shopAuthentication.getBusinessEnd());
        if(businessTimeList!=null&&businessTimeList.size()>1){
            String businessTime = JSONObject.toJSONString(businessTimeList);
            business_license_info.setBusinessTime(businessTime);
        }
        request.setBusinessLicenseInfo(business_license_info);
        //法人证件
        request.setIdDocType("IDENTIFICATION_TYPE_MAINLAND_IDCARD");
        ApplymentsRequest.IdCardInfo id_card_info = new ApplymentsRequest.IdCardInfo();
        InputStream lpIcFrontIO = OBSUploadUtil.getOBSStream(shopAuthentication.getLegalFront().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
        ImageUploadResult lpIcFrontIR = merchantMediaService.imageUploadV3(lpIcFrontIO,applyNumber+"lpIcFront.jpg");
        id_card_info.setIdCardCopy(lpIcFrontIR.getMediaId());
        lpIcFrontIO.close();
        InputStream lpIcBackIO = OBSUploadUtil.getOBSStream(shopAuthentication.getLegalBack().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
        ImageUploadResult lpIcBackIR = merchantMediaService.imageUploadV3(lpIcBackIO,applyNumber+"lpIcBack.jpg");
        id_card_info.setIdCardNational(lpIcBackIR.getMediaId());
        lpIcBackIO.close();
        id_card_info.setIdCardName(shopAuthentication.getLegalPerson());
        id_card_info.setIdCardNumber(shopAuthentication.getLeagleNumber());
        if("ENTERPRISE".equals(shopAuthentication.getBodyType())){
            id_card_info.setIdCardAddress(shopAuthentication.getLegalAddress());
        }
        id_card_info.setIdCardValidTimeBegin(shopAuthentication.getLegalTerm());
        id_card_info.setIdCardValidTime(shopAuthentication.getLegalEnd());
        request.setIdCardInfo(id_card_info);
        //企业填写
        if("ENTERPRISE".equals(shopAuthentication.getBodyType())){
            //受益人
            if("true".equals(shopAuthentication.getIsBeneficiary())){
                request.setOwner(true);
            }else{
                request.setOwner(false);
                List<ApplymentsRequest.UboInfo> ubo_info_list = new ArrayList<>();
                ApplymentsRequest.UboInfo uboInfo = new ApplymentsRequest.UboInfo();
                uboInfo.setUboIdDocType("IDENTIFICATION_TYPE_MAINLAND_IDCARD");
                InputStream uboIcFrontIO = OBSUploadUtil.getOBSStream(shopAuthentication.getBeneficiaryFront().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
                ImageUploadResult uboIcFrontIR = merchantMediaService.imageUploadV3(uboIcFrontIO,applyNumber+"uboIcFront.jpg");
                uboInfo.setUboIdDocCopy(uboIcFrontIR.getMediaId());
                uboIcFrontIO.close();
                InputStream uboIcBackIO = OBSUploadUtil.getOBSStream(shopAuthentication.getBeneficiaryBack().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
                ImageUploadResult uboIcBackIR = merchantMediaService.imageUploadV3(uboIcBackIO,applyNumber+"uboIcBack.jpg");
                uboInfo.setUboIdDocCopyBack(uboIcBackIR.getMediaId());
                uboIcBackIO.close();
                uboInfo.setUboIdDocName(shopAuthentication.getBeneficiary());
                uboInfo.setUboIdDocNumber(shopAuthentication.getBeneficiaryNumber());
                uboInfo.setUboIdDocAddress(shopAuthentication.getBeneficiaryAddress());
                uboInfo.setUboIdDocPeriodBegin(shopAuthentication.getBeneficiaryTerm());
                ubo_info_list.add(uboInfo);
                request.setUboInfoList(ubo_info_list);
            }
        }
        //结算账户信息
        ApplymentsRequest.AccountInfo accountInfo = new ApplymentsRequest.AccountInfo();
        if(shopAuthentication.getAccountType().equals(1)){
            accountInfo.setBankAccountType("74");
        }else{
            accountInfo.setBankAccountType("75");
        }
        accountInfo.setAccountBank(shopAuthentication.getBank());
        accountInfo.setAccountName(shopAuthentication.getAccountName());
        accountInfo.setBankAddressCode(shopAuthentication.getCityCode());
        accountInfo.setBankName(shopAuthentication.getBankName());
        accountInfo.setAccountNumber(shopAuthentication.getBankNumber());
        request.setAccountInfo(accountInfo);
        ApplymentsRequest.ContactInfo contactInfo = new ApplymentsRequest.ContactInfo();
        contactInfo.setContactType("65");
        contactInfo.setContactName(shopAuthentication.getLegalPerson());
        contactInfo.setContactIdCardNumber(shopAuthentication.getLeagleNumber());
        contactInfo.setMobilePhone(shopAuthentication.getLegalPhone());
        contactInfo.setContactEmail(shopAuthentication.getLegalEmail());
        request.setContactInfo(contactInfo);
        //店铺信息
        ApplymentsRequest.SalesSceneInfo salesSceneInfo = new ApplymentsRequest.SalesSceneInfo();
        salesSceneInfo.setStoreName(operator.getName());
//        InputStream storeQrCodeIO = OBSUploadUtils.getOSSInputStream(operator.getShopCode().replace("https://hongruitang.oss-cn-beijing.aliyuncs.com/",""));
//        ImageUploadResult storeQrCodeIR = merchantMediaService.imageUploadV3(storeQrCodeIO,applyNumber+"storeQrCode.jpg");
//        salesSceneInfo.setStoreQrCode(storeQrCodeIR.getMediaId());
//        storeQrCodeIO.close();
        request.setSalesSceneInfo(salesSceneInfo);
        request.setMerchantShortname(operator.getName());
//        request.setBusinessAdditionPics(shopAuthentication.getBaPics());
//        request.setBusinessAdditionDesc(shopAuthentication.getBaDesc());
        return ecommerceService.createApply(request);
    }
}
//package com.dsh.guns.modular.system.util;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import com.alipay.api.domain.Shop;
//import com.dsh.course.util.UUIDUtil;
//import com.dsh.guns.core.util.ToolUtil;
//import com.dsh.guns.modular.system.controller.util.UploadUtil;
//import com.dsh.guns.modular.system.model.OperatorAuth;
//import com.dsh.guns.modular.system.model.TOperator;
//import com.dsh.guns.modular.system.model.User;
//import com.dsh.guns.modular.system.service.IUserService;
//import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsRequest;
//import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsResult;
//import com.github.binarywang.wxpay.bean.media.ImageUploadResult;
//import com.github.binarywang.wxpay.service.EcommerceService;
//import com.github.binarywang.wxpay.service.MerchantMediaService;
//import com.github.binarywang.wxpay.service.WxPayService;
//import lombok.AllArgsConstructor;
//import lombok.NoArgsConstructor;
//import org.apache.commons.codec.digest.DigestUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.http.*;
//import org.springframework.stereotype.Component;
//import org.springframework.web.client.RestTemplate;
//
//import java.io.ByteArrayInputStream;
//import java.io.InputStream;
//import java.io.UnsupportedEncodingException;
//import java.net.URLDecoder;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * 微信工具类
// */
//@Component
//public class WeChatUtil {
//
//    private  WxPayService wxService;
//
//
//
//    /**
//     * @description  电商二级商户进件(提交申请单)
//     * @author  jqs
//     * @date    2023/8/11 10:04
//     * @param shopAuthentication
//     * @param applyNumber
//     * @param operator
//     * @return  ApplymentsResult
//     */
//
//
//    public  ApplymentsResult ecommerceApply(OperatorAuth shopAuthentication, String applyNumber, TOperator operator) throws Exception {
//
//        EcommerceService ecommerceService = wxService.getEcommerceService();
//        MerchantMediaService merchantMediaService = wxService.getMerchantMediaService();
//        ApplymentsRequest request = new ApplymentsRequest();
//        //生成提交类
//        request.setOutRequestNo(applyNumber);
//        if("ENTERPRISE".equals(shopAuthentication.getBodyType())){
//            request.setOrganizationType("2");
//        }else{
//            request.setOrganizationType("4");
//        }
//        //营业执照
//        ApplymentsRequest.BusinessLicenseInfo business_license_info = new ApplymentsRequest.BusinessLicenseInfo();
//        InputStream blImageIO = OBSUploadUtil.getOBSStream(shopAuthentication.getBusinessPicture().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
//        ImageUploadResult blImageIR = merchantMediaService.imageUploadV3(blImageIO,applyNumber+"blimage.jpg");
//        business_license_info.setBusinessLicenseCopy(blImageIR.getMediaId());
//        blImageIO.close();
//        business_license_info.setBusinessLicenseNumber(shopAuthentication.getBusinessNumber());
//        business_license_info.setMerchantName(shopAuthentication.getBusinessName());
//        business_license_info.setLegalPerson(shopAuthentication.getLegalPerson());
//        business_license_info.setCompanyAddress(shopAuthentication.getRegisterAddress());
//        List<String> businessTimeList = new ArrayList<>();
//        businessTimeList.add(0,shopAuthentication.getBusinessTerm());
//        businessTimeList.add(1,shopAuthentication.getBusinessEnd());
//        if(businessTimeList!=null&&businessTimeList.size()>1){
//            String businessTime = JSONObject.toJSONString(businessTimeList);
//            business_license_info.setBusinessTime(businessTime);
//        }
//        request.setBusinessLicenseInfo(business_license_info);
//        //法人证件
//        request.setIdDocType("IDENTIFICATION_TYPE_MAINLAND_IDCARD");
//        ApplymentsRequest.IdCardInfo id_card_info = new ApplymentsRequest.IdCardInfo();
//        InputStream lpIcFrontIO = OBSUploadUtil.getOBSStream(shopAuthentication.getLegalFront().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
//        ImageUploadResult lpIcFrontIR = merchantMediaService.imageUploadV3(lpIcFrontIO,applyNumber+"lpIcFront.jpg");
//        id_card_info.setIdCardCopy(lpIcFrontIR.getMediaId());
//        lpIcFrontIO.close();
//        InputStream lpIcBackIO = OBSUploadUtil.getOBSStream(shopAuthentication.getLegalBack().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
//        ImageUploadResult lpIcBackIR = merchantMediaService.imageUploadV3(lpIcBackIO,applyNumber+"lpIcBack.jpg");
//        id_card_info.setIdCardNational(lpIcBackIR.getMediaId());
//        lpIcBackIO.close();
//        id_card_info.setIdCardName(shopAuthentication.getLegalPerson());
//        id_card_info.setIdCardNumber(shopAuthentication.getLeagleNumber());
//        if("ENTERPRISE".equals(shopAuthentication.getBodyType())){
//            id_card_info.setIdCardAddress(shopAuthentication.getLegalAddress());
//        }
//        id_card_info.setIdCardValidTimeBegin(shopAuthentication.getLegalTerm());
//        id_card_info.setIdCardValidTime(shopAuthentication.getLegalEnd());
//        request.setIdCardInfo(id_card_info);
//        //企业填写
//        if("ENTERPRISE".equals(shopAuthentication.getBodyType())){
//            //受益人
//            if("true".equals(shopAuthentication.getIsBeneficiary())){
//                request.setOwner(true);
//            }else{
//                request.setOwner(false);
//                List<ApplymentsRequest.UboInfo> ubo_info_list = new ArrayList<>();
//                ApplymentsRequest.UboInfo uboInfo = new ApplymentsRequest.UboInfo();
//                uboInfo.setUboIdDocType("IDENTIFICATION_TYPE_MAINLAND_IDCARD");
//                InputStream uboIcFrontIO = OBSUploadUtil.getOBSStream(shopAuthentication.getBeneficiaryFront().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
//                ImageUploadResult uboIcFrontIR = merchantMediaService.imageUploadV3(uboIcFrontIO,applyNumber+"uboIcFront.jpg");
//                uboInfo.setUboIdDocCopy(uboIcFrontIR.getMediaId());
//                uboIcFrontIO.close();
//                InputStream uboIcBackIO = OBSUploadUtil.getOBSStream(shopAuthentication.getBeneficiaryBack().replace("https://obs.ap-southeast-4.myhuaweicloud.com/",""));
//                ImageUploadResult uboIcBackIR = merchantMediaService.imageUploadV3(uboIcBackIO,applyNumber+"uboIcBack.jpg");
//                uboInfo.setUboIdDocCopyBack(uboIcBackIR.getMediaId());
//                uboIcBackIO.close();
//                uboInfo.setUboIdDocName(shopAuthentication.getBeneficiary());
//                uboInfo.setUboIdDocNumber(shopAuthentication.getBeneficiaryNumber());
//                uboInfo.setUboIdDocAddress(shopAuthentication.getBeneficiaryAddress());
//                uboInfo.setUboIdDocPeriodBegin(shopAuthentication.getBeneficiaryTerm());
//                ubo_info_list.add(uboInfo);
//                request.setUboInfoList(ubo_info_list);
//            }
//        }
//        //结算账户信息
//        ApplymentsRequest.AccountInfo accountInfo = new ApplymentsRequest.AccountInfo();
//        if(shopAuthentication.getAccountType().equals(1)){
//            accountInfo.setBankAccountType("74");
//        }else{
//            accountInfo.setBankAccountType("75");
//        }
//        accountInfo.setAccountBank(shopAuthentication.getBank());
//        accountInfo.setAccountName(shopAuthentication.getAccountName());
//        accountInfo.setBankAddressCode(shopAuthentication.getCityCode());
//        accountInfo.setBankName(shopAuthentication.getBankName());
//        accountInfo.setAccountNumber(shopAuthentication.getBankNumber());
//        request.setAccountInfo(accountInfo);
//        ApplymentsRequest.ContactInfo contactInfo = new ApplymentsRequest.ContactInfo();
//        contactInfo.setContactType("65");
//        contactInfo.setContactName(shopAuthentication.getLegalPerson());
//        contactInfo.setContactIdCardNumber(shopAuthentication.getLeagleNumber());
//        contactInfo.setMobilePhone(shopAuthentication.getLegalPhone());
//        contactInfo.setContactEmail(shopAuthentication.getLegalEmail());
//        request.setContactInfo(contactInfo);
//        //店铺信息
//        ApplymentsRequest.SalesSceneInfo salesSceneInfo = new ApplymentsRequest.SalesSceneInfo();
//        salesSceneInfo.setStoreName(operator.getName());
////        InputStream storeQrCodeIO = OBSUploadUtils.getOSSInputStream(operator.getShopCode().replace("https://hongruitang.oss-cn-beijing.aliyuncs.com/",""));
////        ImageUploadResult storeQrCodeIR = merchantMediaService.imageUploadV3(storeQrCodeIO,applyNumber+"storeQrCode.jpg");
////        salesSceneInfo.setStoreQrCode(storeQrCodeIR.getMediaId());
////        storeQrCodeIO.close();
//        request.setSalesSceneInfo(salesSceneInfo);
//        request.setMerchantShortname(operator.getName());
////        request.setBusinessAdditionPics(shopAuthentication.getBaPics());
////        request.setBusinessAdditionDesc(shopAuthentication.getBaDesc());
//        return ecommerceService.createApply(request);
//    }
//
//}