|
@@ -1,12 +1,14 @@
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using Library;
|
|
|
+using LitJson;
|
|
|
+using System.Linq;
|
|
|
using System.Security.Cryptography.X509Certificates;
|
|
|
using System.Security.Cryptography;
|
|
|
using System.Text;
|
|
|
using System.IO;
|
|
|
-using LitJson;
|
|
|
using System.Net;
|
|
|
+using MySystem.Models;
|
|
|
|
|
|
namespace MySystem
|
|
|
{
|
|
@@ -16,6 +18,188 @@ namespace MySystem
|
|
|
{
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ #region 服务商平台商户进件提交申请单API
|
|
|
+
|
|
|
+ public string MerchantCreate(MerchantAddInfo info, MerchantInfo merchant)
|
|
|
+ {
|
|
|
+ // pubkey = GetPublicKey();
|
|
|
+
|
|
|
+ Dictionary<string, object> result = new Dictionary<string, object>();
|
|
|
+ result.Add("business_code", info.BusinessCode); //业务申请编号
|
|
|
+
|
|
|
+ PxcModels.WebCMSEntities dbpxc = new PxcModels.WebCMSEntities();
|
|
|
+ //超级管理员信息
|
|
|
+ Dictionary<string, object> contact_info = new Dictionary<string, object>();
|
|
|
+ contact_info.Add("contact_name", RSAEncrypt(info.ContactName)); //超级管理员姓名
|
|
|
+ contact_info.Add("contact_id_number", RSAEncrypt(info.ContactIdNumber)); //超级管理员身份证件号码
|
|
|
+ // contact_info.Add("openid", info.OpenId); //超级管理员微信openid
|
|
|
+ contact_info.Add("mobile_phone", RSAEncrypt(info.MobilePhone)); //联系手机
|
|
|
+ contact_info.Add("contact_email", RSAEncrypt(info.ContactEmail)); //联系邮箱
|
|
|
+ result.Add("contact_info", contact_info);
|
|
|
+
|
|
|
+ //主体资料
|
|
|
+ Dictionary<string, object> subject_info = new Dictionary<string, object>();
|
|
|
+ subject_info.Add("subject_type", info.SubjectType); //主体类型
|
|
|
+
|
|
|
+ Dictionary<string, object> business_license_info = new Dictionary<string, object>();
|
|
|
+ business_license_info.Add("license_copy", GetMediaId("/bsserver_com" + info.LicenseCopy)); //营业执照照片
|
|
|
+ business_license_info.Add("license_number", info.LicenseNumber); //注册号/统一社会信用代码
|
|
|
+ business_license_info.Add("merchant_name", merchant.Name); //商户名称
|
|
|
+ business_license_info.Add("legal_person", info.LegalPerson); //个体户经营者/法人姓名
|
|
|
+ subject_info.Add("business_license_info", business_license_info); //营业执照
|
|
|
+
|
|
|
+ // Dictionary<string, object> certificate_info = new Dictionary<string, object>();
|
|
|
+ // certificate_info.Add("cert_copy", GetMediaId("/bsserver_com" + info.CertCopy)); //登记证书照片
|
|
|
+ // certificate_info.Add("cert_type", info.CertType); //登记证书类型
|
|
|
+ // certificate_info.Add("cert_number", info.CertNumber); //证书号
|
|
|
+ // certificate_info.Add("merchant_name", info.CertMerchantName); //商户名称
|
|
|
+ // certificate_info.Add("company_address", info.CompanyAddress); //注册地址
|
|
|
+ // certificate_info.Add("legal_person", info.CertLegalPerson); //法人姓名
|
|
|
+ // certificate_info.Add("period_begin", CheckForever(info.PeriodBegin)); //有效期限开始日期
|
|
|
+ // certificate_info.Add("period_end", CheckForever(info.PeriodEnd)); //有效期限结束日期
|
|
|
+ // subject_info.Add("certificate_info", certificate_info); //登记证书
|
|
|
+
|
|
|
+ // Dictionary<string, object> organization_info = new Dictionary<string, object>();
|
|
|
+ // organization_info.Add("organization_copy", GetMediaId("/bsserver_com" + info.OrganizationCopy)); //组织机构代码证照片
|
|
|
+ // organization_info.Add("organization_code", info.OrganizationCode); //组织机构代码
|
|
|
+ // organization_info.Add("org_period_begin", CheckForever(info.OrgPeriodBegin)); //组织机构代码证有效期开始日期
|
|
|
+ // organization_info.Add("org_period_end", CheckForever(info.OrgPeriodEnd)); //组织机构代码证有效期结束日期
|
|
|
+ // subject_info.Add("organization_info", organization_info); //组织机构代码证
|
|
|
+
|
|
|
+ // subject_info.Add("certificate_letter_copy", GetMediaId("/bsserver_com" + info.CertificateLetterCopy)); //单位证明函照片
|
|
|
+
|
|
|
+ Dictionary<string, object> identity_info = new Dictionary<string, object>();
|
|
|
+ info.IdDocType = "IDENTIFICATION_TYPE_IDCARD";
|
|
|
+ identity_info.Add("id_doc_type", info.IdDocType); //证件类型
|
|
|
+ Dictionary<string, object> id_card_info = new Dictionary<string, object>();
|
|
|
+ id_card_info.Add("id_card_copy", GetMediaId("/bsserver_com" + info.IdCardCopy)); //身份证人像面照片
|
|
|
+ id_card_info.Add("id_card_national", GetMediaId("/bsserver_com" + info.IdCardNational)); //身份证人像面照片
|
|
|
+ id_card_info.Add("id_card_name", RSAEncrypt(info.IdCardName)); //身份证姓名
|
|
|
+ id_card_info.Add("id_card_number", RSAEncrypt(info.IdCardNumber)); //身份证号码
|
|
|
+ id_card_info.Add("card_period_begin", CheckForever(info.CardPeriodBegin)); //身份证有效期开始时间
|
|
|
+ id_card_info.Add("card_period_end", CheckForever(info.CardPeriodEnd)); //身份证有效期结束时间
|
|
|
+ identity_info.Add("id_card_info", id_card_info); //身份证信息
|
|
|
+ // identity_info.Add("owner", info.Owner == 1 ? true : false); //经营者/法人是否为受益人
|
|
|
+ identity_info.Add("owner", true);
|
|
|
+ subject_info.Add("identity_info", identity_info); //经营者/法人身份证件
|
|
|
+
|
|
|
+ // if (info.Owner == 0)
|
|
|
+ // {
|
|
|
+ // Dictionary<string, object> ubo_info = new Dictionary<string, object>();
|
|
|
+ // ubo_info.Add("id_type", info.UboInfoIdType); //证件类型
|
|
|
+ // ubo_info.Add("id_card_copy", GetMediaId("/bsserver_com" + info.UboInfoIdCardCopy)); //身份证人像面照片
|
|
|
+ // ubo_info.Add("id_card_national", GetMediaId("/bsserver_com" + info.UboInfoIdCardNational)); //身份证国徽面照片
|
|
|
+ // ubo_info.Add("id_doc_copy", GetMediaId("/bsserver_com" + info.UboInfoIdDocCopy)); //证件照片
|
|
|
+ // ubo_info.Add("name", RSAEncrypt(info.UboInfoName)); //受益人姓名
|
|
|
+ // ubo_info.Add("id_number", RSAEncrypt(info.UboInfoIdNumber)); //证件号码
|
|
|
+ // ubo_info.Add("id_period_begin", CheckForever(info.UboInfoIdPeriodBegin)); //证件有效期开始时间
|
|
|
+ // ubo_info.Add("id_period_end", CheckForever(info.UboInfoIdPeriodEnd)); //证件有效期结束时间
|
|
|
+ // subject_info.Add("ubo_info", ubo_info); //最终受益人信息(UBO)
|
|
|
+ // }
|
|
|
+
|
|
|
+ result.Add("subject_info", subject_info);
|
|
|
+
|
|
|
+ //经营资料
|
|
|
+ Dictionary<string, object> business_info = new Dictionary<string, object>();
|
|
|
+ business_info.Add("merchant_shortname", info.MerchantShortname); //商户简称
|
|
|
+ business_info.Add("service_phone", info.ServicePhone); //客服电话
|
|
|
+
|
|
|
+ Dictionary<string, object> sales_info = new Dictionary<string, object>();
|
|
|
+ info.SalesScenesType = "SALES_SCENES_STORE";
|
|
|
+ sales_info.Add("sales_scenes_type", info.SalesScenesType.Split(',').ToList()); //经营场景类型
|
|
|
+
|
|
|
+ Dictionary<string, object> biz_store_info = new Dictionary<string, object>();
|
|
|
+ biz_store_info.Add("biz_store_name", info.BizStoreName); //门店名称
|
|
|
+ PxcModels.OpenBankCityTable BizAddress = dbpxc.OpenBankCityTable.FirstOrDefault(m => m.CityName.EndsWith(info.BizAddressCode)) ?? new PxcModels.OpenBankCityTable();
|
|
|
+ biz_store_info.Add("biz_address_code", BizAddress.Code); //门店省市编码
|
|
|
+ biz_store_info.Add("biz_store_address", info.BizStoreAddress); //门店地址
|
|
|
+ List<string> store_entrance_pic = new List<string>();
|
|
|
+ store_entrance_pic.Add(GetMediaId("/bsserver_com" + info.StoreEntrancePic));
|
|
|
+ biz_store_info.Add("store_entrance_pic", store_entrance_pic); //门店门头照片
|
|
|
+ List<string> indoor_pic = new List<string>();
|
|
|
+ indoor_pic.Add(GetMediaId("/bsserver_com" + info.IndoorPic));
|
|
|
+ biz_store_info.Add("indoor_pic", indoor_pic); //店内环境照片
|
|
|
+ biz_store_info.Add("biz_sub_appid", info.BizSubAppid); //线下场所对应的商家APPID
|
|
|
+ sales_info.Add("biz_store_info", biz_store_info); //线下门店场景
|
|
|
+
|
|
|
+ // Dictionary<string, object> mp_info = new Dictionary<string, object>();
|
|
|
+ // mp_info.Add("mp_appid", info.MpAppid); //服务商公众号APPID
|
|
|
+ // mp_info.Add("mp_sub_appid", info.MpSubAppid); //商家公众号APPID
|
|
|
+ // mp_info.Add("mp_pics", GetMediaId("/bsserver_com" + info.MpPics)); //公众号页面截图
|
|
|
+ // sales_info.Add("mp_info", mp_info); //公众号场景
|
|
|
+
|
|
|
+ // Dictionary<string, object> mini_program_info = new Dictionary<string, object>();
|
|
|
+ // mini_program_info.Add("mini_program_appid", info.MiniProgramAppid); //服务商小程序APPID
|
|
|
+ // mini_program_info.Add("mini_program_sub_appid", info.MiniProgramSubAppid); //商家小程序APPID
|
|
|
+ // mini_program_info.Add("mini_program_pics", GetMediaId("/bsserver_com" + info.MiniProgramPics)); //小程序截图
|
|
|
+ // sales_info.Add("mini_program_info", mini_program_info); //小程序场景
|
|
|
+
|
|
|
+ // Dictionary<string, object> app_info = new Dictionary<string, object>();
|
|
|
+ // app_info.Add("app_appid", info.AppAppid); //服务商应用APPID
|
|
|
+ // app_info.Add("app_sub_appid", info.AppSubAppid); //商家应用APPID
|
|
|
+ // app_info.Add("app_pics", GetMediaId("/bsserver_com" + info.AppPics)); //商家应用APPID
|
|
|
+ // sales_info.Add("app_info", app_info); //APP场景
|
|
|
+
|
|
|
+ // Dictionary<string, object> web_info = new Dictionary<string, object>();
|
|
|
+ // web_info.Add("domain", info.WebDomain); //互联网网站域名
|
|
|
+ // web_info.Add("web_authorisation", GetMediaId("/bsserver_com" + info.WebAuthorisation)); //网站授权函
|
|
|
+ // web_info.Add("web_appid", info.WebAppId); //互联网网站对应的商家APPID
|
|
|
+ // sales_info.Add("web_info", web_info); //互联网网站场景
|
|
|
+
|
|
|
+ // Dictionary<string, object> wework_info = new Dictionary<string, object>();
|
|
|
+ // wework_info.Add("sub_corp_id", info.SubCorpId); //商家企业微信CorpID
|
|
|
+ // wework_info.Add("wework_pics", GetMediaId("/bsserver_com" + info.WeworkPics)); //企业微信页面截图
|
|
|
+ // sales_info.Add("wework_info", wework_info); //企业微信场景
|
|
|
+
|
|
|
+ business_info.Add("sales_info", sales_info); //经营场景
|
|
|
+
|
|
|
+ result.Add("business_info", business_info);
|
|
|
+
|
|
|
+ //结算规则
|
|
|
+ Dictionary<string, object> settlement_info = new Dictionary<string, object>();
|
|
|
+ settlement_info.Add("settlement_id", info.SettlementId); //入驻结算规则ID
|
|
|
+ settlement_info.Add("qualification_type", info.QualificationType); //所属行业
|
|
|
+ if (!string.IsNullOrEmpty(info.Qualifications))
|
|
|
+ {
|
|
|
+ List<string> Qualifications = new List<string>();
|
|
|
+ Qualifications.Add(GetMediaId("/bsserver_com" + info.Qualifications));
|
|
|
+ settlement_info.Add("qualifications", Qualifications); //特殊资质图片
|
|
|
+ }
|
|
|
+ settlement_info.Add("activities_id", info.ActivitiesId); //优惠费率活动ID
|
|
|
+ settlement_info.Add("activities_rate", info.ActivitiesRate); //优惠费率活动值
|
|
|
+ result.Add("settlement_info", settlement_info);
|
|
|
+
|
|
|
+ //结算银行账户
|
|
|
+ Dictionary<string, object> bank_account_info = new Dictionary<string, object>();
|
|
|
+ bank_account_info.Add("bank_account_type", info.BankAccountType); //账户类型
|
|
|
+ bank_account_info.Add("account_name", RSAEncrypt(info.AccountName)); //开户名称
|
|
|
+ bank_account_info.Add("account_bank", info.AccountBank); //开户银行
|
|
|
+ PxcModels.OpenBankCityTable BankAddress = dbpxc.OpenBankCityTable.FirstOrDefault(m => m.CityName.EndsWith(info.BankAddressCode)) ?? new PxcModels.OpenBankCityTable();
|
|
|
+ bank_account_info.Add("bank_address_code", BankAddress.Code); //开户银行省市编码
|
|
|
+ PxcModels.OpenBankTable BankBranch = dbpxc.OpenBankTable.FirstOrDefault(m => m.BankName == info.BankName) ?? new PxcModels.OpenBankTable();
|
|
|
+ bank_account_info.Add("bank_branch_id", BankBranch.BankCode); //开户银行联行号
|
|
|
+ bank_account_info.Add("bank_name", info.BankName); //开户银行全称(含支行)
|
|
|
+ bank_account_info.Add("account_number", RSAEncrypt(info.AccountNumber)); //银行账号
|
|
|
+ result.Add("bank_account_info", bank_account_info);
|
|
|
+ dbpxc.Dispose();
|
|
|
+
|
|
|
+ string req = Newtonsoft.Json.JsonConvert.SerializeObject(result);
|
|
|
+ Dictionary<string, string> header = new Dictionary<string, string>();
|
|
|
+ // 如何查看证书序列号?
|
|
|
+ // 登陆商户平台【API安全】->【API证书】->【查看证书】,可查看商户API证书序列号。
|
|
|
+ // 商户API证书和微信支付平台证书均可以使用第三方的证书解析工具,查看证书内容。或者使用openssl命令行工具查看证书序列号。
|
|
|
+ // $ openssl x509 -in 1900009191_20180326_cert.pem -noout -serial
|
|
|
+ // serial=1DDE55AD98ED71D6EDD4A4A16996DE7B47773A8C
|
|
|
+ string merchantId = "1613112281"; //商户号
|
|
|
+ string serialNo = "61D99F7218B487788E35D6C4E3ED398E0979D3F6"; //证书编号
|
|
|
+ string resp = postJson("https://api.mch.weixin.qq.com/v3/applyment4sub/applyment/", req, prikey, merchantId, serialNo);
|
|
|
+ function.WriteLog(resp, "商户进件日志");
|
|
|
+ return resp;
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
#region 服务商平台查询申请单状态API
|
|
|
|
|
|
public Dictionary<string, object> QueryMerchant(string BusinessCode)
|