V2TradePayafteruseInstallmentPayRequestDemo.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. using System;
  2. using System.Collections.Generic;
  3. using BasePaySdk;
  4. using BasePaySdk.Request;
  5. using Newtonsoft.Json;
  6. using Newtonsoft.Json.Linq;
  7. namespace BasePayDemo
  8. {
  9. /**
  10. * 分期扣款 - 示例
  11. *
  12. * @author sdk-generator
  13. * @Description
  14. */
  15. public class V2TradePayafteruseInstallmentPayRequestDemo
  16. {
  17. public static void V2TradePayafteruseInstallmentPayRequestDemoTest()
  18. {
  19. // 1. 数据初始化
  20. InitMerConfig.init();
  21. // 2.组装请求参数
  22. V2TradePayafteruseInstallmentPayRequest request = new V2TradePayafteruseInstallmentPayRequest();
  23. // 请求日期
  24. request.setReqDate(DateTime.Now.ToString("yyyyMMdd"));
  25. // 请求流水号
  26. request.setReqSeqId(DateTime.Now.ToString("yyy-MM-dd HH.mm.ss.fff"));
  27. // 客户号
  28. request.setHuifuId("6666000108281250");
  29. // 交易金额
  30. request.setTransAmt("0.01");
  31. // 商品描述
  32. request.setGoodsDesc("聚合反扫消费");
  33. // 风控信息
  34. request.setRiskCheckData(getRiskCheckData());
  35. // 交易有效期
  36. request.setTimeExpire("");
  37. // 支付宝扩展参数集合
  38. request.setAlipayData(getAlipayData());
  39. // 设置非必填字段
  40. Dictionary<string, object> extendInfoMap = getExtendInfos();
  41. request.setExtendInfo(extendInfoMap);
  42. try
  43. {
  44. // 3. 发起API调用
  45. // 调用接口,使用默认商户配置时可省略配置key
  46. Dictionary<string, Object> result = null;
  47. result = BasePayClient.postRequest(request, null);
  48. // 使用指定配置调用接口
  49. // result = BasePayClient.postRequest(request,null,"merchantKey2");
  50. Console.WriteLine(JsonConvert.SerializeObject(result));
  51. }
  52. catch (Exception ex)
  53. {
  54. Console.WriteLine(ex);
  55. }
  56. }
  57. /**
  58. * 非必填字段
  59. * @return
  60. */
  61. private static Dictionary<string, object> getExtendInfos()
  62. {
  63. // 设置非必填字段
  64. Dictionary<string, object> extendInfoMap = new Dictionary<string, object>();
  65. // 入账账户号
  66. extendInfoMap.Add("acct_id", "C02682415");
  67. // 交易备注
  68. extendInfoMap.Add("remark", "");
  69. // 交易有效期
  70. extendInfoMap.Add("time_expire", "");
  71. // 是否延迟交易
  72. // extendInfoMap.Add("delay_acct_flag", "");
  73. // 分账串
  74. // extendInfoMap.Add("acct_split_bunch", getAcctSplitBunch());
  75. // 设备信息
  76. extendInfoMap.Add("terminal_device_info", getTerminalDeviceInfo());
  77. // 异步通知地址
  78. extendInfoMap.Add("notify_url", "http://www.baidu.com");
  79. return extendInfoMap;
  80. }
  81. private static object getAcctInfos()
  82. {
  83. Dictionary<string, object> obj = new Dictionary<string, object>();
  84. // 分账金额
  85. // obj.Add("div_amt", "test");
  86. // 分账接收方商户号
  87. // obj.Add("huifu_id", "test");
  88. // 分账接收方账户号
  89. // obj.Add("acct_id", "");
  90. // 百分比分账标志
  91. // obj.Add("percentage_flag", "");
  92. JArray objList = new JArray();
  93. objList.Add(JToken.FromObject(obj));
  94. return objList;
  95. }
  96. private static string getAcctSplitBunch()
  97. {
  98. Dictionary<string, object> obj = new Dictionary<string, object>();
  99. // 百分比分账标志
  100. // obj.Add("percentage_flag", "");
  101. // 是否净值分账
  102. // obj.Add("is_clean_split", "");
  103. // 分账明细
  104. // obj.Add("acct_infos", getAcctInfos());
  105. return JsonConvert.SerializeObject(obj);
  106. }
  107. private static string getRiskCheckData()
  108. {
  109. Dictionary<string, object> obj = new Dictionary<string, object>();
  110. // IP地址
  111. // obj.Add("ip_addr", "test");
  112. // 经度
  113. obj.Add("longitude", "1");
  114. // 纬度
  115. obj.Add("latitude", "2");
  116. return JsonConvert.SerializeObject(obj);
  117. }
  118. private static string getTerminalDeviceInfo()
  119. {
  120. Dictionary<string, object> obj = new Dictionary<string, object>();
  121. // 商户设备类型
  122. obj.Add("mer_device_type", "01");
  123. // 商户终端实时经纬度信息
  124. obj.Add("location", "+32.10520/+118.80593");
  125. // 商户交易设备IP
  126. obj.Add("mer_device_ip", "10.11.12.13");
  127. // 设备类型
  128. obj.Add("device_type", "1");
  129. // 交易设备IP
  130. obj.Add("device_ip", "10.10.0.1");
  131. // 交易设备MAC
  132. obj.Add("device_mac", "F0E1D2C3B4A5");
  133. // 交易设备GPS
  134. obj.Add("device_gps", "20.346790");
  135. // 交易设备IMEI
  136. obj.Add("device_imei", "660035730311000126101");
  137. // 交易设备IMSI
  138. obj.Add("device_imsi", "460030912121001");
  139. // 交易设备ICCID
  140. obj.Add("device_icc_id", "660035730311000126101");
  141. // 交易设备WIFIMAC
  142. obj.Add("device_wifi_mac", "968778695A4B");
  143. // 交易设备GPS
  144. obj.Add("device_gps", "20.346790");
  145. return JsonConvert.SerializeObject(obj);
  146. }
  147. private static object getGoodsDetail()
  148. {
  149. Dictionary<string, object> obj = new Dictionary<string, object>();
  150. // 商品的编号
  151. // obj.Add("goods_id", "test");
  152. // 商品名称
  153. // obj.Add("goods_name", "test");
  154. // 商品数量
  155. // obj.Add("quantity", "test");
  156. // 商品单价
  157. // obj.Add("price", "test");
  158. // 商品类目
  159. // obj.Add("goods_category", "");
  160. // 商品描述信息
  161. // obj.Add("body", "");
  162. // 商品的展示地址
  163. // obj.Add("show_url", "");
  164. JArray objList = new JArray();
  165. objList.Add(JToken.FromObject(obj));
  166. return objList;
  167. }
  168. private static object getExtendParams()
  169. {
  170. Dictionary<string, object> obj = new Dictionary<string, object>();
  171. // 业务主单号
  172. obj.Add("trade_component_order_id", "2024101001502300000002570023887054");
  173. // 分期履约单号
  174. obj.Add("tc_installment_order_id", "2024101001502301900002570004797346");
  175. // 系统商编号
  176. // obj.Add("sys_service_provider_id", "");
  177. return obj;
  178. }
  179. private static string getAlipayData()
  180. {
  181. Dictionary<string, object> obj = new Dictionary<string, object>();
  182. // 业务扩展参数
  183. obj.Add("extend_params", getExtendParams());
  184. // 支付宝的店铺编号
  185. obj.Add("alipay_store_id", "");
  186. // 商户操作员编号
  187. // obj.Add("operator_id", "");
  188. // 商户业务信息
  189. // obj.Add("ali_business_params", "");
  190. // 订单包含的商品列表信息
  191. // obj.Add("goods_detail", getGoodsDetail());
  192. return JsonConvert.SerializeObject(obj);
  193. }
  194. }
  195. }