HuiFuApiOpenModify.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. using BasePaySdk.Request;
  2. using JiaZhiQuan.Common.Config;
  3. using Newtonsoft.Json;
  4. using Newtonsoft.Json.Linq;
  5. using System;
  6. using System.Collections.Generic;
  7. namespace JiaZhiQuan.Common.JuheAPI.HuiFu {
  8. public class HuiFuApiOpenModify {
  9. public static BaseRequest InitReq(HuiFuCommonConfig huifuConf,
  10. HuiFuOpenModifyInfo info) {
  11. // 2.组装请求参数
  12. V2UserBusiModifyRequest request = new V2UserBusiModifyRequest();
  13. // 汇付ID
  14. request.setHuifuId(info.huifu_id);
  15. // 请求流水号
  16. request.setReqSeqId(info.reqId);
  17. // 请求日期
  18. request.setReqDate(DateTime.Now.ToString("yyyyMMdd"));
  19. // 渠道商/商户汇付Id
  20. request.setUpperHuifuId(huifuConf.sys_id);
  21. // 乐接活配置当合作平台为乐接活,必填
  22. // request.setLjhData(getLjhData());
  23. // 设置非必填字段
  24. Dictionary<string, object> extendInfoMap = getExtendInfos(huifuConf, info);
  25. request.setExtendInfo(extendInfoMap);
  26. return request;
  27. }
  28. /**
  29. * 非必填字段
  30. * @return
  31. */
  32. private static Dictionary<string, object> getExtendInfos(HuiFuCommonConfig huifuConf,
  33. HuiFuOpenModifyInfo info) {
  34. // 设置非必填字段
  35. Dictionary<string, object> extendInfoMap = new Dictionary<string, object>();
  36. // 结算信息配置
  37. //extendInfoMap.Add("settle_config", getSettleConfig());
  38. // 结算卡信息
  39. extendInfoMap.Add("card_info", getCardInfo(info));
  40. // 取现配置列表
  41. //extendInfoMap.Add("cash_config", getCashConfig());
  42. // 文件列表
  43. //extendInfoMap.Add("file_list", getFileList());
  44. // 延迟入账开关
  45. // extendInfoMap.Add("delay_flag", "");
  46. // 斗拱e账户功能配置
  47. // extendInfoMap.Add("elec_acct_config", getElecAcctConfig());
  48. // 灵活用工开关
  49. // extendInfoMap.Add("open_tax_flag", "");
  50. // 异步请求地址
  51. extendInfoMap.Add("async_return_url", info.notifyUrl);
  52. // 合作平台
  53. // extendInfoMap.Add("lg_platform_type", "");
  54. return extendInfoMap;
  55. }
  56. private static string getSettleConfig() {
  57. Dictionary<string, object> obj = new Dictionary<string, object>();
  58. // 结算周期
  59. obj.Add("settle_cycle", "D1");
  60. // 结算手续费外扣时的汇付ID外扣手续费承担方的汇付ID。外扣时必填;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:6666000123123123&lt;/font&gt;
  61. obj.Add("out_settle_huifuid", "");
  62. // 结算手续费外扣时的账户类型外扣手续费账户类型; 01:基本户(为空时默认值), 05:充值户;外扣时必填;&lt;br/&gt;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:01&lt;/font&gt;
  63. obj.Add("out_settle_acct_type", "");
  64. // 结算批次号settle_pattern为P0时必填;[参见结算批次说明](https://paas.huifu.com/open/doc/api/#/csfl/api_csfl_jspc)
  65. obj.Add("settle_batch_no", "300");
  66. // 是否优先到账settle_pattern为P0时选填, Y:是 N:否(为空默认取值);&lt;font color&#x3D;&quot;green&quot;&gt;示例值:Y&lt;/font&gt;
  67. obj.Add("is_priority_receipt", "");
  68. // 自定义结算处理时间settle_pattern为P1/P2时必填,注意:00:00到00:30不能指定;格式:HHmmss;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:103000&lt;/font&gt;
  69. obj.Add("settle_time", "");
  70. // 节假日结算手续费率settle_cycle为D1时必填。单位%,需保留小数点后两位。取值范围[0.00,100.00],不收费请填写0.00;settle_cycle&#x3D;T1时,不生效 ;settle_cycle为D1时,遇节假日按此费率结算 ;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:0.05&lt;/font&gt;
  71. obj.Add("fixed_ratio", "2");
  72. // 起结金额
  73. obj.Add("min_amt", "0.01");
  74. // 留存金额
  75. obj.Add("remained_amt", "10.00");
  76. // 结算摘要
  77. obj.Add("settle_abstract", "结算摘要");
  78. // 手续费外扣标记
  79. obj.Add("out_settle_flag", "2");
  80. // 结算方式
  81. obj.Add("settle_pattern", "");
  82. // 工作日结算手续费率
  83. // obj.Add("workday_fixed_ratio", "");
  84. // 工作日结算手续费固定金额
  85. // obj.Add("workday_constant_amt", "");
  86. return JsonConvert.SerializeObject(obj);
  87. }
  88. private static string getCardInfo(HuiFuOpenInfo info) {
  89. Dictionary<string, object> obj = new Dictionary<string, object>();
  90. // 卡类型,个人用户,1 对私
  91. obj.Add("card_type", "1");
  92. // 卡户名
  93. obj.Add("card_name", info.card_info.card_name);
  94. // 卡号
  95. obj.Add("card_no", info.card_info.card_no);
  96. // 银行所在省
  97. obj.Add("prov_id", info.card_info.prov_id);
  98. // 银行所在市
  99. obj.Add("area_id", info.card_info.area_id);
  100. //// 银行号当card_type&#x3D;0时必填,对私可以为空[点击查看](https://paas.huifu.com/open/doc/api/#/csfl/api_csfl_yhbm);&lt;font color&#x3D;&quot;green&quot;&gt;示例值:01040000&lt;/font&gt;
  101. //obj.Add("bank_code", "01050000");
  102. //// 支行联行号当card_type&#x3D;0时必填,[点击查看](https://paas.huifu.com/open/doc/api/#/csfl/api_csfl_yhzhbm);&lt;font color&#x3D;&quot;green&quot;&gt;示例值:103124075619&lt;/font&gt;
  103. //obj.Add("branch_code", "105305264815");
  104. // 持卡人证件类型对私必填;参见《[自然人证件类型](https://paas.huifu.com/open/doc/api/#/api_ggcsbm?id&#x3D;%e8%87%aa%e7%84%b6%e4%ba%ba%e8%af%81%e4%bb%b6%e7%b1%bb%e5%9e%8b)》说明;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:00&lt;/font&gt;
  105. obj.Add("cert_type", "00");
  106. // 持卡人证件号码对私必填; 如:证件类型为身份证, 则填写身份证号码;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:320926198412032059&lt;/font&gt;
  107. obj.Add("cert_no", info.card_info.cert_no);
  108. // 持卡人证件有效期类型对私必填;1:长期有效;0:非长期有效;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:0&lt;/font&gt;
  109. obj.Add("cert_validity_type", info.card_info.cert_validity_type);
  110. // 持卡人证件有效期(起始)对私必填;日期格式:yyyyMMdd,&lt;font color&#x3D;&quot;green&quot;&gt;示例值:20110112&lt;/font&gt;
  111. obj.Add("cert_begin_date", info.card_info.cert_begin_date);
  112. // 持卡人证件有效期(截止)当cert_validity_type&#x3D;0时必须填写;日期格式yyyyMMdd,&lt;font color&#x3D;&quot;green&quot;&gt;示例值:20110112&lt;/font&gt;&lt;br/&gt;当cert_validity_type&#x3D;1可不填
  113. obj.Add("cert_end_date", info.card_info.cert_end_date);
  114. // 银行卡绑定手机号
  115. //obj.Add("mp", "15556622368");
  116. // 默认结算卡标志
  117. // obj.Add("is_settle_default", "");
  118. return JsonConvert.SerializeObject(obj);
  119. }
  120. private static string getCashConfig() {
  121. Dictionary<string, object> obj = new Dictionary<string, object>();
  122. // 提现手续费(固定/元)fix_amt与fee_rate至少填写一项, 需保留小数点后两位,不收费请填写0.00;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:1.00&lt;/font&gt;注:当cash_type&#x3D;D1时为节假日取现手续费
  123. obj.Add("fix_amt", "0.03");
  124. // 提现手续费率(%)fix_amt与fee_rate至少填写一项,需保留小数点后两位,取值范围[0.00,100.00],不收费请填写0.00;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:0.05&lt;/font&gt;注:1、如果fix_amt与fee_rate都填写了则手续费&#x3D;fix_amt+支付金额\*fee_rate2、当cash_type&#x3D;D1时为节假日取现手续费
  125. obj.Add("fee_rate", "2");
  126. // D1工作日取现手续费固定金额单位元,需保留小数点后两位。不收费请填写0.00;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:1.00&lt;/font&gt;D1取现配置时选填,其他取现配置无效;cash_type取现类型为D1时,遇工作日按此费率结算,若未配置则默认按照节假日手续费计算
  127. // obj.Add("weekday_fix_amt", "test");
  128. // D1工作日取现手续费率单位%,需保留小数点后两位。取值范围[0.00,100.00],不收费请填写0.00;&lt;font color&#x3D;&quot;green&quot;&gt;示例值:0.05&lt;/font&gt;D1取现配置时选填,其他取现配置无效;cash_type取现类型为D1时,遇工作日按此费率结算 ,若未配置则默认按照节假日手续费计算
  129. // obj.Add("weekday_fee_rate", "test");
  130. // 业务类型
  131. obj.Add("cash_type", "D1");
  132. // 是否交易手续费外扣
  133. obj.Add("out_fee_flag", "");
  134. // 手续费承担方
  135. obj.Add("out_fee_huifu_id", "");
  136. // 交易手续费外扣的账户类型
  137. obj.Add("out_fee_acct_type", "");
  138. // 是否优先到账
  139. // obj.Add("is_priority_receipt", "");
  140. JArray objList = new JArray();
  141. objList.Add(JToken.FromObject(obj));
  142. return JsonConvert.SerializeObject(objList);
  143. }
  144. private static string getFileList() {
  145. Dictionary<string, object> obj = new Dictionary<string, object>();
  146. // 文件类型
  147. obj.Add("file_type", "F02");
  148. // 文件jfileID
  149. obj.Add("file_id", "71da066c-5d15-3658-a86d-4e85ee67808a");
  150. // 文件名称
  151. obj.Add("file_name", "企业营业执照1.jpg");
  152. JArray objList = new JArray();
  153. objList.Add(JToken.FromObject(obj));
  154. return JsonConvert.SerializeObject(objList);
  155. }
  156. private static string getElecCardList() {
  157. Dictionary<string, object> obj = new Dictionary<string, object>();
  158. // 银行编码
  159. // obj.Add("bank_code", "test");
  160. // 支行联行号
  161. // obj.Add("branch_code", "test");
  162. // 支行名称
  163. // obj.Add("branch_name", "test");
  164. // 结算账户名
  165. // obj.Add("card_name", "test");
  166. // 银行卡号
  167. // obj.Add("card_no", "test");
  168. // 卡类型
  169. // obj.Add("card_type", "test");
  170. // 银行所在省
  171. // obj.Add("prov_id", "");
  172. // 银行所在市
  173. // obj.Add("area_id", "");
  174. // 银行绑定手机号
  175. // obj.Add("mp", "");
  176. // 默认卡标识
  177. // obj.Add("default_cash_flag", "");
  178. // 用户授权协议版本号
  179. // obj.Add("auth_version", "");
  180. // 用户授权协议号
  181. // obj.Add("auth_no", "");
  182. JArray objList = new JArray();
  183. objList.Add(JToken.FromObject(obj));
  184. return JsonConvert.SerializeObject(objList);
  185. }
  186. private static string getElecAcctConfig() {
  187. Dictionary<string, object> obj = new Dictionary<string, object>();
  188. // 电子账户开关
  189. // obj.Add("switch_state", "test");
  190. // 账户类型
  191. // obj.Add("acct_type", "test");
  192. // 电子账户提现手续费承担方
  193. // obj.Add("cash_fee_party", "test");
  194. // 场景
  195. // obj.Add("scene", "test");
  196. // 角色类型(角色编号)
  197. // obj.Add("role_type", "test");
  198. // 银行卡信息
  199. // obj.Add("elec_card_list", getElecCardList());
  200. // 用户类型
  201. // obj.Add("user_type", "");
  202. return JsonConvert.SerializeObject(obj);
  203. }
  204. private static string getLjhData() {
  205. Dictionary<string, object> obj = new Dictionary<string, object>();
  206. // 税源地id当合作平台为乐接活,必填
  207. // obj.Add("tax_area_id", "test");
  208. return JsonConvert.SerializeObject(obj);
  209. }
  210. }
  211. }