V2TradePaymentScanpayRefundRequestDemo.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  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 V2TradePaymentScanpayRefundRequestDemo
  16. {
  17. public static void V2TradePaymentScanpayRefundRequestDemoTest()
  18. {
  19. // 1. 数据初始化
  20. InitMerConfig.init();
  21. // 2.组装请求参数
  22. V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
  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("6666000108854952");
  29. // 申请退款金额
  30. request.setOrdAmt("0.01");
  31. // 原交易请求日期
  32. request.setOrgReqDate("20221107");
  33. // 设置非必填字段
  34. Dictionary<string, object> extendInfoMap = getExtendInfos();
  35. request.setExtendInfo(extendInfoMap);
  36. try {
  37. // 3. 发起API调用
  38. // 调用接口,使用默认商户配置时可省略配置key
  39. Dictionary<string, Object> result = null;
  40. result = BasePayClient.postRequest(request,null);
  41. // 使用指定配置调用接口
  42. // result = BasePayClient.postRequest(request,null,"merchantKey2");
  43. Console.WriteLine(JsonConvert.SerializeObject(result));
  44. }
  45. catch (Exception ex) {
  46. Console.WriteLine(ex);
  47. }
  48. }
  49. /**
  50. * 非必填字段
  51. * @return
  52. */
  53. private static Dictionary<string, object> getExtendInfos() {
  54. // 设置非必填字段
  55. Dictionary<string, object> extendInfoMap = new Dictionary<string, object>();
  56. // 原交易全局流水号
  57. extendInfoMap.Add("org_hf_seq_id", "002900TOP3B221107142320P992ac139c0c00000");
  58. // 原交易微信支付宝的商户单号
  59. // extendInfoMap.Add("org_party_order_id", "");
  60. // 原交易请求流水号
  61. // extendInfoMap.Add("org_req_seq_id", "");
  62. // 分账对象
  63. // extendInfoMap.Add("acct_split_bunch", getAcctSplitBunchRucan());
  64. // 聚合正扫微信拓展参数集合
  65. // extendInfoMap.Add("wx_data", getWxData());
  66. // 数字货币扩展参数集合
  67. // extendInfoMap.Add("digital_currency_data", getDigitalCurrencyData());
  68. // 补贴支付信息
  69. // extendInfoMap.Add("combinedpay_data", getCombinedpayData());
  70. // 备注
  71. // extendInfoMap.Add("remark", "");
  72. // 是否垫资退款
  73. // extendInfoMap.Add("loan_flag", "");
  74. // 垫资承担者
  75. // extendInfoMap.Add("loan_undertaker", "");
  76. // 垫资账户类型
  77. // extendInfoMap.Add("loan_acct_type", "");
  78. // 安全信息
  79. // extendInfoMap.Add("risk_check_data", getRiskCheckData());
  80. // 设备信息
  81. // extendInfoMap.Add("terminal_device_data", getTerminalDeviceData());
  82. // 异步通知地址
  83. // extendInfoMap.Add("notify_url", "");
  84. // 银联参数集合
  85. // extendInfoMap.Add("unionpay_data", getUnionpayData());
  86. return extendInfoMap;
  87. }
  88. private static object getAcctInfosRucan() {
  89. Dictionary<string, object> obj = new Dictionary<string, object>();
  90. // 分账金额
  91. // obj.Add("div_amt", "test");
  92. // 分账接收方ID
  93. // obj.Add("huifu_id", "test");
  94. // 垫资金额
  95. // obj.Add("part_loan_amt", "");
  96. JArray objList = new JArray();
  97. objList.Add(JToken.FromObject(obj));
  98. return objList;
  99. }
  100. private static string getAcctSplitBunchRucan() {
  101. Dictionary<string, object> obj = new Dictionary<string, object>();
  102. // 分账信息列表
  103. // obj.Add("acct_infos", getAcctInfosRucan());
  104. return JsonConvert.SerializeObject(obj);
  105. }
  106. private static object getGoodsDetail() {
  107. Dictionary<string, object> obj = new Dictionary<string, object>();
  108. // 商品编码
  109. // obj.Add("goods_id", "test");
  110. // 优惠退款金额
  111. // obj.Add("refund_amount", "test");
  112. // 商品退货数量
  113. // obj.Add("refund_quantity", "test");
  114. // 商品单价
  115. // obj.Add("price", "test");
  116. JArray objList = new JArray();
  117. objList.Add(JToken.FromObject(obj));
  118. return objList;
  119. }
  120. private static object getDetail() {
  121. Dictionary<string, object> obj = new Dictionary<string, object>();
  122. // 商品详情列表
  123. // obj.Add("goods_detail", getGoodsDetail());
  124. return obj;
  125. }
  126. private static object getWxData() {
  127. Dictionary<string, object> obj = new Dictionary<string, object>();
  128. // 退款商品详情
  129. // obj.Add("detail", getDetail());
  130. return obj;
  131. }
  132. private static string getDigitalCurrencyData() {
  133. Dictionary<string, object> obj = new Dictionary<string, object>();
  134. // 退款原因
  135. // obj.Add("refund_desc", "");
  136. return JsonConvert.SerializeObject(obj);
  137. }
  138. private static string getCombinedpayData() {
  139. Dictionary<string, object> obj = new Dictionary<string, object>();
  140. // 补贴方汇付编号
  141. // obj.Add("huifu_id", "test");
  142. // 补贴方类型
  143. // obj.Add("user_type", "test");
  144. // 补贴方账户号
  145. // obj.Add("acct_id", "test");
  146. // 补贴金额
  147. // obj.Add("amount", "test");
  148. JArray objList = new JArray();
  149. objList.Add(JToken.FromObject(obj));
  150. return JsonConvert.SerializeObject(objList);
  151. }
  152. private static string getRiskCheckData() {
  153. Dictionary<string, object> obj = new Dictionary<string, object>();
  154. // ip地址
  155. // obj.Add("ip_addr", "");
  156. // 基站地址
  157. // obj.Add("base_station", "");
  158. // 纬度
  159. // obj.Add("latitude", "");
  160. // 经度
  161. // obj.Add("longitude", "");
  162. return JsonConvert.SerializeObject(obj);
  163. }
  164. private static string getTerminalDeviceData() {
  165. Dictionary<string, object> obj = new Dictionary<string, object>();
  166. // 设备类型
  167. // obj.Add("device_type", "");
  168. // 交易设备IP
  169. // obj.Add("device_ip", "");
  170. // 交易设备MAC
  171. // obj.Add("device_mac", "");
  172. // 交易设备IMEI
  173. // obj.Add("device_imei", "");
  174. // 交易设备IMSI
  175. // obj.Add("device_imsi", "");
  176. // 交易设备ICCID
  177. // obj.Add("device_icc_id", "");
  178. // 交易设备WIFIMAC
  179. // obj.Add("device_wifi_mac", "");
  180. // 交易设备GPS
  181. // obj.Add("device_gps", "");
  182. return JsonConvert.SerializeObject(obj);
  183. }
  184. private static string getUnionpayData() {
  185. Dictionary<string, object> obj = new Dictionary<string, object>();
  186. // 收款方附加数据
  187. // obj.Add("addn_data", "");
  188. return JsonConvert.SerializeObject(obj);
  189. }
  190. }
  191. }