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 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 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); } }