| 
					
				 | 
			
			
				@@ -295,7 +295,8 @@ public class WxProviderServiceImpl implements WxProviderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public CloseableHttpClient httpClient() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .withMerchant(wechatPayServiceConfig.getSpMchId(), wechatPayServiceConfig.getSerialNo(), getPrivateKey(wechatPayServiceConfig.getKeyPemPath())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .withMerchant(wechatPayServiceConfig.getSpMchId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        wechatPayServiceConfig.getSerialNo(), getPrivateKey(wechatPayServiceConfig.getKeyPemPath())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .withValidator(new WechatPay2Validator(getVerifier())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 通过WechatPayHttpClientBuilder构造的HttpClient,会自动的处理签名和验签,并进行证书自动更新 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return builder.build(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -565,13 +566,13 @@ public class WxProviderServiceImpl implements WxProviderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //身份证信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         IdCardInfo idCardInfo = new IdCardInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        idCardInfo.setIdCardCopy("身份证人像面照片"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        idCardInfo.setIdCardNational("身份证国徽面照片"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        idCardInfo.setIdCardName("身份证姓名"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        idCardInfo.setIdCardNumber("身份证号码"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        idCardInfo.setIdCardAddress("身份证居住地址-主体类型为企业时,需要填写。其他主体类型,无需上传"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        idCardInfo.setCardPeriodBegin("身份证有效期开始时间"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        idCardInfo.setCardPeriodEnd("身份证有效期结束时间"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        idCardInfo.setIdCardCopy(wxUploadImg(form.getIdCardCopy())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        idCardInfo.setIdCardNational(wxUploadImg(form.getIdCardNational())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        idCardInfo.setIdCardName(rsaEncryptData(form.getIdCardName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        idCardInfo.setIdCardNumber(rsaEncryptData(form.getIdCardNumber())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        idCardInfo.setIdCardAddress(rsaEncryptData(form.getIdCardAddress())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        idCardInfo.setCardPeriodBegin(form.getCardPeriodBegin()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        idCardInfo.setCardPeriodEnd(form.getCardPeriodEnd()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         identityInfo.setIdCardInfo(idCardInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         subjectInfo.setIdentityInfo(identityInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<UBOInfoList> uboInfoList = Lists.newArrayList(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -579,54 +580,67 @@ public class WxProviderServiceImpl implements WxProviderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //最终受益人信息列表(UBO) 主体类型为企业时,需填写 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         UBOInfoList uboInfo = new UBOInfoList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         uboInfo.setUboIdDocType("IDENTIFICATION_TYPE_IDCARD"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        uboInfo.setUboIdDocCopy("证件正面照片"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        uboInfo.setUboIdDocCopyBack("证件反面照片"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        uboInfo.setUboIdDocName("证件姓名"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        uboInfo.setUboIdDocNumber("证件号码"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        uboInfo.setUboIdDocAddress("证件居住地址"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        uboInfo.setUboPeriodBegin("证件有效期开始时间"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        uboInfo.setUboPeriodEnd("证件有效期结束时间"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        uboInfo.setUboIdDocCopy(wxUploadImg(form.getIdCardCopy())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        uboInfo.setUboIdDocCopyBack(wxUploadImg(form.getIdCardNational())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        uboInfo.setUboIdDocName(rsaEncryptData(form.getIdCardName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        uboInfo.setUboIdDocNumber(rsaEncryptData(form.getIdCardNumber())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        uboInfo.setUboIdDocAddress(rsaEncryptData(form.getIdCardAddress())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        uboInfo.setUboPeriodBegin(form.getCardPeriodBegin()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        uboInfo.setUboPeriodEnd(form.getCardPeriodEnd()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         uboInfoList.add(uboInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         subjectInfo.setUboInfoList(uboInfoList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         submitInfo.setSubjectInfo(subjectInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //经营资料 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BusinessInfo businessInfo = new BusinessInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        businessInfo.setMerchantShortname("商户简称"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        businessInfo.setServicePhone("客服电话"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        businessInfo.setMerchantShortname(form.getMerchantShortname()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        businessInfo.setServicePhone(form.getServicePhone()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //经营场景 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SalesInfo salesInfo = new SalesInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        salesInfo.setSalesScenesType(Lists.newArrayList("SALES_SCENES_STORE","SALES_SCENES_MINI_PROGRAM")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //线下场所场景 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         StoreInfo storeInfo = new StoreInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        storeInfo.setBizStoreName("线下场所名称"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        storeInfo.setBizAddressCode("线下场所省市编码"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        storeInfo.setBizStoreAddress("线下场所地址"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        storeInfo.setStoreEntrancePic(Lists.newArrayList("线下场所门头照片")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        storeInfo.setIndoorPic(Lists.newArrayList("线下场所内部照片")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        storeInfo.setBizSubAppid("线下场所对应的商家AppID"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        storeInfo.setBizStoreName(form.getBizStoreName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        storeInfo.setBizAddressCode(form.getBizAddressCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        storeInfo.setBizStoreAddress(form.getBizStoreAddress()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        storeInfo.setStoreEntrancePic(wxUploadImgList(Lists.newArrayList(form.getStoreEntrancePic()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        storeInfo.setIndoorPic(wxUploadImgList(Lists.newArrayList(form.getIndoorPic()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        storeInfo.setBizSubAppid("wx472b8557b46b80c2"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         salesInfo.setBizStoreInfo(storeInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //小程序场景 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         MiniProgramInfo miniProgramInfo = new MiniProgramInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        miniProgramInfo.setMiniProgramAppid("服务商小程序AppID"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        miniProgramInfo.setMiniProgramSubAppid("商家小程序AppID"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        miniProgramInfo.setMiniProgramPics(Lists.newArrayList("小程序截图")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        miniProgramInfo.setMiniProgramAppid("wx84ac4c97670ae96f"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        miniProgramInfo.setMiniProgramSubAppid("wx472b8557b46b80c2"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        miniProgramInfo.setMiniProgramPics(wxUploadImgList(Lists.newArrayList("小程序截图"))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         salesInfo.setMiniProgramInfo(miniProgramInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         businessInfo.setSalesInfo(salesInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         submitInfo.setBusinessInfo(businessInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //结算规则 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SettlementInfo settlementInfo = new SettlementInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        settlementInfo.setSettlementId("入驻结算规则ID"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        settlementInfo.setQualificationType("所属行业-填写指定行业名称"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        settlementInfo.setSettlementId(form.getSubjectType().equals("SUBJECT_TYPE_INDIVIDUAL") ? "719" : "716"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        settlementInfo.setQualificationType(form.getQualificationType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         submitInfo.setSettlementInfo(settlementInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //结算银行账户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BankAccountInfo bankAccountInfo = new BankAccountInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        bankAccountInfo.setBankAccountType("对公银行账户/经营者个人银行卡"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        bankAccountInfo.setAccountName("开户名称"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        bankAccountInfo.setAccountBank("开户银行"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        bankAccountInfo.setBankAddressCode("开户银行省市编码"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        bankAccountInfo.setBankBranchId("开户银行银行号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        bankAccountInfo.setBankName("开户银行全称(含支行)"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        bankAccountInfo.setAccountNumber("银行账号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bankAccountInfo.setBankAccountType(form.getBankAccountType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bankAccountInfo.setAccountName(rsaEncryptData(form.getAccountName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //开户银行-对私银行列表-对公银行列表-查看是否需要填写支行字段-bank_alias_code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bankAccountInfo.setAccountBank(form.getAccountBank()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //查询接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (form.getBankBranchId()!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bankAccountInfo.setBankBranchId(form.getBankBranchId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bankAccountInfo.setAccountNumber(rsaEncryptData(form.getAccountNumber())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         submitInfo.setBankAccountInfo(bankAccountInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Gson gson = new Gson(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        String json = gson.toJson(submitInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String json = new Gson().toJson(submitInfo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         System.out.println(json); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -638,6 +652,20 @@ public class WxProviderServiceImpl implements WxProviderService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static List<String> wxUploadImgList(List<String> imgList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> wxImgList = Lists.newArrayList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (String img : imgList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            wxImgList.add(wxUploadImg(img)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return wxImgList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static String toDataImgList(List<String> imgList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return String.join(",", imgList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public static void main(String[] args) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |