Browse Source

add deliver

wangming 1 day ago
parent
commit
464da9f31e

+ 39 - 0
yami-shop-wx/src/main/java/com/yami/shop/wx/form/BankAccountInfo.java

@@ -0,0 +1,39 @@
+package com.yami.shop.wx.form;
+
+import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "结算银行账户")
+public class BankAccountInfo {
+
+    @SerializedName("bank_account_type")
+    @ApiModelProperty(value = "账户类型 BANK_ACCOUNT_TYPE_CORPORATE-对公银行账户 BANK_ACCOUNT_TYPE_PERSONAL- 经营者个人银行卡")
+    public String bankAccountType;
+
+    @SerializedName("account_name")
+    @ApiModelProperty(value = "开户名称")
+    public String accountName;
+
+    @SerializedName("account_bank")
+    @ApiModelProperty(value = "开户银行")
+    public String accountBank;
+
+    @SerializedName("bank_address_code")
+    @ApiModelProperty(value = "开户银行省市编码")
+    public String bankAddressCode;
+
+    @SerializedName("bank_branch_id")
+    @ApiModelProperty(value = "开户银行银行号")
+    public String bankBranchId;
+
+    @SerializedName("bank_name")
+    @ApiModelProperty(value = "开户银行全称(含支行)")
+    public String bankName;
+
+    @SerializedName("account_number")
+    @ApiModelProperty(value = "银行账号")
+    public String accountNumber;
+}

+ 23 - 0
yami-shop-wx/src/main/java/com/yami/shop/wx/form/BusinessInfo.java

@@ -0,0 +1,23 @@
+package com.yami.shop.wx.form;
+
+import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "经营资料")
+public class BusinessInfo {
+
+    @SerializedName("merchant_shortname")
+    @ApiModelProperty(value = "商户简称")
+    public String merchantShortname;
+
+    @SerializedName("service_phone")
+    @ApiModelProperty(value = "客服电话")
+    public String servicePhone;
+
+    @SerializedName("sales_info")
+    @ApiModelProperty(value = "经营场景")
+    public SalesInfo salesInfo;
+}

+ 39 - 0
yami-shop-wx/src/main/java/com/yami/shop/wx/form/BusinessLicense.java

@@ -0,0 +1,39 @@
+package com.yami.shop.wx.form;
+
+import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+@ApiModel(value = "营业执照")
+public class BusinessLicense {
+    @SerializedName("license_copy")
+    @ApiModelProperty(value = "营业执照照片")
+    public String licenseCopy;
+
+    @SerializedName("license_number")
+    @ApiModelProperty(value = "注册号/统一社会信用代码")
+    public String licenseNumber;
+
+    @SerializedName("merchant_name")
+    @ApiModelProperty(value = "商户名称")
+    public String merchantName;
+
+    @SerializedName("legal_person")
+    @ApiModelProperty(value = "个体户经营者/法定代表人姓名")
+    public String legalPerson;
+
+    @SerializedName("license_address")
+    @ApiModelProperty(value = "注册地址")
+    public String licenseAddress;
+
+    @SerializedName("period_begin")
+    @ApiModelProperty(value = "有效期限开始日期")
+    public String periodBegin;
+
+    @SerializedName("period_end")
+    @ApiModelProperty(value = "有效期限结束日期")
+    public String periodEnd;
+}

+ 8 - 3
yami-shop-wx/src/main/java/com/yami/shop/wx/po/ContactInfoDto.java → yami-shop-wx/src/main/java/com/yami/shop/wx/form/ContactInfo.java

@@ -1,5 +1,6 @@
-package com.yami.shop.wx.po;
+package com.yami.shop.wx.form;
 
+import com.google.gson.annotations.SerializedName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -9,17 +10,21 @@ import lombok.Data;
  */
 @Data
 @ApiModel(value = "超级管理员信息")
-public class ContactInfoDto {
+public class ContactInfo {
 
-    @ApiModelProperty(value = "超级管理员类型 1.LEGAL-经营者/法定代表人  2.SUPER-经办人")
+    @SerializedName("contact_type")
+    @ApiModelProperty(value = "超级管理员类型 LEGAL-经营者/法定代表人")
     private String contactType;
 
+    @SerializedName("contact_name")
     @ApiModelProperty(value = "超级管理员姓名-需加密")
     private String contactName;
 
+    @SerializedName("mobile_phone")
     @ApiModelProperty(value = "联系手机-需加密")
     private String mobilePhone;
 
+    @SerializedName("contact_email")
     @ApiModelProperty(value = "联系邮箱-需加密")
     private String contactEmail;
 

+ 38 - 0
yami-shop-wx/src/main/java/com/yami/shop/wx/form/IdCardInfo.java

@@ -0,0 +1,38 @@
+package com.yami.shop.wx.form;
+
+import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "身份证信息")
+public class IdCardInfo {
+    @SerializedName("id_card_copy")
+    @ApiModelProperty(value = "身份证人像面照片")
+    public String idCardCopy;
+
+    @SerializedName("id_card_national")
+    @ApiModelProperty(value = "身份证国徽面照片")
+    public String idCardNational;
+
+    @SerializedName("id_card_name")
+    @ApiModelProperty(value = "身份证姓名")
+    public String idCardName;
+
+    @SerializedName("id_card_number")
+    @ApiModelProperty(value = "身份证号码")
+    public String idCardNumber;
+
+    @SerializedName("id_card_address")
+    @ApiModelProperty(value = "身份证居住地址-主体类型为企业时,需要填写。其他主体类型,无需上传")
+    public String idCardAddress;
+
+    @SerializedName("card_period_begin")
+    @ApiModelProperty(value = "身份证有效期开始时间")
+    public String cardPeriodBegin;
+
+    @SerializedName("card_period_end")
+    @ApiModelProperty(value = "身份证有效期结束时间")
+    public String cardPeriodEnd;
+}

+ 19 - 0
yami-shop-wx/src/main/java/com/yami/shop/wx/form/IdentityInfo.java

@@ -0,0 +1,19 @@
+package com.yami.shop.wx.form;
+
+import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "经营者/法定代表人身份证件")
+public class IdentityInfo {
+
+    @SerializedName("id_doc_type")
+    @ApiModelProperty(value = "IDENTIFICATION_TYPE_IDCARD-中国大陆居民-身份证")
+    public String idDocType;
+
+    @SerializedName("id_card_info")
+    @ApiModelProperty(value = "身份证信息")
+    public IdCardInfo idCardInfo;
+}

+ 24 - 0
yami-shop-wx/src/main/java/com/yami/shop/wx/form/MiniProgramInfo.java

@@ -0,0 +1,24 @@
+package com.yami.shop.wx.form;
+
+import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "小程序场景")
+public class MiniProgramInfo {
+    @SerializedName("mini_program_appid")
+    @ApiModelProperty(value = "服务商小程序AppID")
+    public String miniProgramAppid;
+
+    @SerializedName("mini_program_sub_appid")
+    @ApiModelProperty(value = "商家小程序AppID")
+    public String miniProgramSubAppid;
+
+    @SerializedName("mini_program_pics")
+    @ApiModelProperty(value = "小程序截图")
+    public List<String> miniProgramPics;
+}

+ 25 - 0
yami-shop-wx/src/main/java/com/yami/shop/wx/form/SalesInfo.java

@@ -0,0 +1,25 @@
+package com.yami.shop.wx.form;
+
+import com.google.common.collect.Lists;
+import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "经营场景")
+public class SalesInfo {
+    @SerializedName("sales_scenes_type")
+    @ApiModelProperty(value = "经营场景类型")
+    public List<String> salesScenesType = Lists.newArrayList("SALES_SCENES_STORE","SALES_SCENES_MINI_PROGRAM");
+
+    @SerializedName("biz_store_info")
+    @ApiModelProperty(value = "线下场所场景")
+    public StoreInfo bizStoreInfo;
+
+    @SerializedName("mini_program_info")
+    @ApiModelProperty(value = "小程序场景")
+    public MiniProgramInfo miniProgramInfo;
+}

+ 20 - 0
yami-shop-wx/src/main/java/com/yami/shop/wx/form/SettlementInfo.java

@@ -0,0 +1,20 @@
+package com.yami.shop.wx.form;
+
+import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "结算规则")
+public class SettlementInfo {
+
+    @SerializedName("settlement_id")
+    @ApiModelProperty(value = "入驻结算规则ID")
+    public String settlementId;
+
+    @SerializedName("qualification_type")
+    @ApiModelProperty(value = "所属行业-填写指定行业名称")
+    public String qualificationType;
+
+}

+ 37 - 0
yami-shop-wx/src/main/java/com/yami/shop/wx/form/StoreInfo.java

@@ -0,0 +1,37 @@
+package com.yami.shop.wx.form;
+
+import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "线下场所场景")
+public class StoreInfo {
+
+    @SerializedName("biz_store_name")
+    @ApiModelProperty(value = "线下场所名称")
+    public String bizStoreName;
+
+    @SerializedName("biz_address_code")
+    @ApiModelProperty(value = "线下场所省市编码")
+    public String bizAddressCode;
+
+    @SerializedName("biz_store_address")
+    @ApiModelProperty(value = "线下场所地址")
+    public String bizStoreAddress;
+
+    @SerializedName("store_entrance_pic")
+    @ApiModelProperty(value = "线下场所门头照片")
+    public List<String> storeEntrancePic;
+
+    @SerializedName("indoor_pic")
+    @ApiModelProperty(value = "线下场所内部照片")
+    public List<String> indoorPic;
+
+    @SerializedName("biz_sub_appid")
+    @ApiModelProperty(value = "线下场所对应的商家AppID")
+    public String bizSubAppid;
+}

+ 34 - 0
yami-shop-wx/src/main/java/com/yami/shop/wx/form/SubjectInfo.java

@@ -0,0 +1,34 @@
+package com.yami.shop.wx.form;
+
+import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "主体资料")
+public class SubjectInfo {
+
+    @SerializedName("subject_type")
+    @ApiModelProperty(value = "主体类型 SUBJECT_TYPE_INDIVIDUAL-个体户 SUBJECT_TYPE_ENTERPRISE-企业")
+    public String subjectType;
+
+    @SerializedName("finance_institution")
+    @ApiModelProperty(value = "是否金融机构")
+    public Boolean financeInstitution;
+
+    @SerializedName("business_license_info")
+    @ApiModelProperty(value = "营业执照")
+    public BusinessLicense businessLicenseInfo;
+
+    @SerializedName("identity_info")
+    @ApiModelProperty(value = "经营者/法定代表人身份证件")
+    public IdentityInfo identityInfo;
+
+    @SerializedName("ubo_info_list")
+    @ApiModelProperty(value = "最终受益人信息列表(UBO) 主体类型为企业时,需填写")
+    public List<UBOInfoList> uboInfoList;
+
+}

+ 39 - 0
yami-shop-wx/src/main/java/com/yami/shop/wx/form/SubmitInfo.java

@@ -0,0 +1,39 @@
+package com.yami.shop.wx.form;
+
+import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author kaur
+ */
+@Data
+@ApiModel(value = "超级管理员信息")
+public class SubmitInfo {
+
+    @SerializedName("business_code")
+    @ApiModelProperty(value = "业务申请编号")
+    public String businessCode;
+
+    @SerializedName("contact_info")
+    @ApiModelProperty(value = "超级管理员信息")
+    public ContactInfo contactInfo;
+
+    @SerializedName("subject_info")
+    @ApiModelProperty(value = "主体资料")
+    public SubjectInfo subjectInfo;
+
+    @SerializedName("business_info")
+    @ApiModelProperty(value = "经营资料")
+    public BusinessInfo businessInfo;
+
+    @SerializedName("settlement_info")
+    @ApiModelProperty(value = "结算规则")
+    public SettlementInfo settlementInfo;
+
+    @SerializedName("bank_account_info")
+    @ApiModelProperty(value = "结算银行账户")
+    public BankAccountInfo bankAccountInfo;
+
+}

+ 42 - 0
yami-shop-wx/src/main/java/com/yami/shop/wx/form/UBOInfoList.java

@@ -0,0 +1,42 @@
+package com.yami.shop.wx.form;
+
+import com.google.gson.annotations.SerializedName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "最终受益人信息列表(UBO) 主体类型为企业时,需填写")
+public class UBOInfoList {
+    @SerializedName("ubo_id_doc_type")
+    @ApiModelProperty(value = "IDENTIFICATION_TYPE_IDCARD- 中国大陆居民-身份证")
+    public String uboIdDocType;
+
+    @SerializedName("ubo_id_doc_copy")
+    @ApiModelProperty(value = "证件正面照片")
+    public String uboIdDocCopy;
+
+    @SerializedName("ubo_id_doc_copy_back")
+    @ApiModelProperty(value = "证件反面照片")
+    public String uboIdDocCopyBack;
+
+    @SerializedName("ubo_id_doc_name")
+    @ApiModelProperty(value = "证件姓名")
+    public String uboIdDocName;
+
+    @SerializedName("ubo_id_doc_number")
+    @ApiModelProperty(value = "证件号码")
+    public String uboIdDocNumber;
+
+    @SerializedName("ubo_id_doc_address")
+    @ApiModelProperty(value = "证件居住地址")
+    public String uboIdDocAddress;
+
+    @SerializedName("ubo_period_begin")
+    @ApiModelProperty(value = "证件有效期开始时间")
+    public String uboPeriodBegin;
+
+    @SerializedName("ubo_period_end")
+    @ApiModelProperty(value = "证件有效期结束时间")
+    public String uboPeriodEnd;
+}

+ 0 - 21
yami-shop-wx/src/main/java/com/yami/shop/wx/po/SubjectInfoDto.java

@@ -1,21 +0,0 @@
-package com.yami.shop.wx.po;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * @author kaur
- */
-@Data
-@ApiModel(value = "主体资料")
-public class SubjectInfoDto {
-
-    @ApiModelProperty(value = "主体类型 1.SUBJECT_TYPE_INDIVIDUAL-(个体户) " +
-            "2.SUBJECT_TYPE_ENTERPRISE-(企业)" +
-            "3.SUBJECT_TYPE_GOVERNMENT-(政府机关)" +
-            "4.SUBJECT_TYPE_INSTITUTIONS-(事业单位)" +
-            "5.SUBJECT_TYPE_OTHERS-(社会组织)")
-    private String subjectType;
-
-}

+ 94 - 13
yami-shop-wx/src/main/java/com/yami/shop/wx/service/impl/WxProviderServiceImpl.java

@@ -1,4 +1,9 @@
 package com.yami.shop.wx.service.impl;
+import com.yami.shop.wx.form.MiniProgramInfo;
+import com.yami.shop.wx.form.StoreInfo;
+import com.yami.shop.wx.form.SalesInfo;
+import com.yami.shop.wx.form.*;
+import com.google.common.collect.Lists;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
@@ -504,28 +509,104 @@ public class WxProviderServiceImpl implements WxProviderService {
         }
     }
 
+    private static String rsaEncryptData(String data) {
+        return data;
+    }
+
+
     //测试
     public static void serviceAddMerchant() {
-        Map<String, Object> parameters = new TreeMap<>();
-        //业务申请编号
-        parameters.put("business_code", "业务申请编号");
+        SubmitInfo submitInfo = new SubmitInfo();
+        submitInfo.setBusinessCode("业务申请编号");
 
         //超级管理员信息
-        parameters.put("contact_info", "");
+        ContactInfo contactInfo = new ContactInfo();
+        contactInfo.setContactType("LEGAL");
+        contactInfo.setContactName(rsaEncryptData("超级管理员姓名"));
+        contactInfo.setMobilePhone(rsaEncryptData("联系手机"));
+        contactInfo.setContactEmail(rsaEncryptData("联系邮箱"));
+        submitInfo.setContactInfo(contactInfo);
 
         //主体资料
-        parameters.put("subject_info", "");
+        SubjectInfo subjectInfo = new SubjectInfo();
+        subjectInfo.setSubjectType("个体户/企业");
+        subjectInfo.setFinanceInstitution(false);
+        BusinessLicense businessLicense = new BusinessLicense();
+        businessLicense.setLicenseCopy("营业执照照片");
+        businessLicense.setLicenseNumber("统一社会信用代码");
+        businessLicense.setMerchantName("商户名称");
+        businessLicense.setLegalPerson("个体户经营者/法定代表人姓名");
+        businessLicense.setLicenseAddress("注册地址");
+        businessLicense.setPeriodBegin("有效期限开始日期");
+        businessLicense.setPeriodEnd("有效期限结束日期");
+
+        subjectInfo.setBusinessLicenseInfo(businessLicense);
+        IdentityInfo identityInfo = new IdentityInfo();
+        identityInfo.setIdDocType("IDENTIFICATION_TYPE_IDCARD");
+        IdCardInfo idCardInfo = new IdCardInfo();
+        idCardInfo.setIdCardCopy("身份证人像面照片");
+        idCardInfo.setIdCardNational("身份证国徽面照片");
+        idCardInfo.setIdCardName("身份证姓名");
+        idCardInfo.setIdCardNumber("身份证号码");
+        idCardInfo.setIdCardAddress("身份证居住地址-主体类型为企业时,需要填写。其他主体类型,无需上传");
+        idCardInfo.setCardPeriodBegin("身份证有效期开始时间");
+        idCardInfo.setCardPeriodEnd("身份证有效期结束时间");
+        identityInfo.setIdCardInfo(idCardInfo);
+        subjectInfo.setIdentityInfo(identityInfo);
+        List<UBOInfoList> uboInfoList = Lists.newArrayList();
+        UBOInfoList uboInfo = new UBOInfoList();
+        uboInfo.setUboIdDocType("IDENTIFICATION_TYPE_IDCARD");
+        uboInfo.setUboIdDocCopy("证件正面照片");
+        uboInfo.setUboIdDocCopyBack("证件反面照片");
+        uboInfo.setUboIdDocName("证件姓名");
+        uboInfo.setUboIdDocNumber("证件号码");
+        uboInfo.setUboIdDocAddress("证件居住地址");
+        uboInfo.setUboPeriodBegin("证件有效期开始时间");
+        uboInfo.setUboPeriodEnd("证件有效期结束时间");
+        uboInfoList.add(uboInfo);
+        subjectInfo.setUboInfoList(uboInfoList);
+        submitInfo.setSubjectInfo(subjectInfo);
 
         //经营资料
-        parameters.put("business_info", "");
-
-        //结算规则
-        parameters.put("settlement_info", "");
+        BusinessInfo businessInfo = new BusinessInfo();
+        businessInfo.setMerchantShortname("商户简称");
+        businessInfo.setServicePhone("客服电话");
+        SalesInfo salesInfo = new SalesInfo();
+        StoreInfo storeInfo = new StoreInfo();
+        storeInfo.setBizStoreName("线下场所名称");
+        storeInfo.setBizAddressCode("线下场所省市编码");
+        storeInfo.setBizStoreAddress("线下场所地址");
+        storeInfo.setStoreEntrancePic(Lists.newArrayList("线下场所门头照片"));
+        storeInfo.setIndoorPic(Lists.newArrayList("线下场所内部照片"));
+        storeInfo.setBizSubAppid("线下场所对应的商家AppID");
+        salesInfo.setBizStoreInfo(storeInfo);
+        MiniProgramInfo miniProgramInfo = new MiniProgramInfo();
+        miniProgramInfo.setMiniProgramAppid("服务商小程序AppID");
+        miniProgramInfo.setMiniProgramSubAppid("商家小程序AppID");
+        miniProgramInfo.setMiniProgramPics(Lists.newArrayList("小程序截图"));
+        salesInfo.setMiniProgramInfo(miniProgramInfo);
+        businessInfo.setSalesInfo(salesInfo);
+        submitInfo.setBusinessInfo(businessInfo);
+
+        SettlementInfo settlementInfo = new SettlementInfo();
+        settlementInfo.setSettlementId("入驻结算规则ID");
+        settlementInfo.setQualificationType("所属行业-填写指定行业名称");
+        submitInfo.setSettlementInfo(settlementInfo);
+
+        BankAccountInfo bankAccountInfo = new BankAccountInfo();
+        bankAccountInfo.setBankAccountType("对公银行账户/经营者个人银行卡");
+        bankAccountInfo.setAccountName("开户名称");
+        bankAccountInfo.setAccountBank("开户银行");
+        bankAccountInfo.setBankAddressCode("开户银行省市编码");
+        bankAccountInfo.setBankBranchId("开户银行银行号");
+        bankAccountInfo.setBankName("开户银行全称(含支行)");
+        bankAccountInfo.setAccountNumber("银行账号");
+        submitInfo.setBankAccountInfo(bankAccountInfo);
+        System.out.println(JSON.toJSON(submitInfo));
+    }
 
-        //结算银行账户
-        parameters.put("bank_account_info", "");
 
-        System.out.println(parameters);
+    public static void main(String[] args) {
+        serviceAddMerchant();
     }
-
 }