HuiFuApiRefund.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. using BasePaySdk.Request;
  2. using BasePaySdk;
  3. using Newtonsoft.Json;
  4. using System.Collections.Generic;
  5. using System;
  6. using JiaZhiQuan.Common.Config;
  7. using Newtonsoft.Json.Linq;
  8. using static JiaZhiQuan.Common.Models.CommonConst;
  9. using Wicture.DbRESTFul;
  10. namespace JiaZhiQuan.Common.JuheAPI.HuiFu {
  11. public class HuiFuApiRefund {
  12. public static BaseRequest InitReq(HuiFuCommonConfig huifuConf,
  13. HuiFuRefundInfo info) {
  14. // 2.组装请求参数
  15. V2TradePaymentScanpayRefundRequest request = new V2TradePaymentScanpayRefundRequest();
  16. // 请求日期
  17. request.setReqDate(DateTime.Now.ToString("yyyyMMdd"));
  18. // 请求流水号
  19. request.setReqSeqId(info.reqId);
  20. // 商户号
  21. request.setHuifuId(huifuConf.sys_id);
  22. // 申请退款金额
  23. request.setOrdAmt(CommonUtils.DivideAndRound(info.ord_amt, UNIT).ToString("0.00"));
  24. if (huifuConf.isDev) {
  25. request.setOrdAmt("0.01");//测试
  26. }
  27. // 原交易请求日期
  28. request.setOrgReqDate(info.org_req_date);
  29. // 设置非必填字段
  30. Dictionary<string, object> extendInfoMap = getExtendInfos(huifuConf, info);
  31. request.setExtendInfo(extendInfoMap);
  32. return request;
  33. }
  34. /**
  35. * 非必填字段
  36. * @return
  37. */
  38. private static Dictionary<string, object> getExtendInfos(HuiFuCommonConfig huifuConf,
  39. HuiFuRefundInfo info) {
  40. // 设置非必填字段
  41. Dictionary<string, object> extendInfoMap = new Dictionary<string, object>();
  42. // 原交易全局流水号
  43. //extendInfoMap.Add("org_hf_seq_id", "002900TOP3B221107142320P992ac139c0c00000");
  44. // 原交易微信支付宝的商户单号
  45. // extendInfoMap.Add("org_party_order_id", "");
  46. // 原交易请求流水号
  47. extendInfoMap.Add("org_req_seq_id", info.org_req_seq_id);
  48. // 分账对象
  49. // extendInfoMap.Add("acct_split_bunch", getAcctSplitBunchRucan());
  50. // 聚合正扫微信拓展参数集合
  51. // extendInfoMap.Add("wx_data", getWxData());
  52. // 数字货币扩展参数集合
  53. // extendInfoMap.Add("digital_currency_data", getDigitalCurrencyData());
  54. // 补贴支付信息
  55. // extendInfoMap.Add("combinedpay_data", getCombinedpayData());
  56. // 备注
  57. //extendInfoMap.Add("remark", JsonConvert.SerializeObject(info.Remark));
  58. // 是否垫资退款
  59. // extendInfoMap.Add("loan_flag", "");
  60. // 垫资承担者
  61. // extendInfoMap.Add("loan_undertaker", "");
  62. // 垫资账户类型
  63. // extendInfoMap.Add("loan_acct_type", "");
  64. // 安全信息
  65. // extendInfoMap.Add("risk_check_data", getRiskCheckData());
  66. // 设备信息
  67. // extendInfoMap.Add("terminal_device_data", getTerminalDeviceData());
  68. // 异步通知地址
  69. extendInfoMap.Add("notify_url", info.notifyUrl);
  70. // 银联参数集合
  71. // extendInfoMap.Add("unionpay_data", getUnionpayData());
  72. return extendInfoMap;
  73. }
  74. private static object getAcctInfosRucan() {
  75. Dictionary<string, object> obj = new Dictionary<string, object>();
  76. // 分账金额
  77. // obj.Add("div_amt", "test");
  78. // 分账接收方ID
  79. // obj.Add("huifu_id", "test");
  80. // 垫资金额
  81. // obj.Add("part_loan_amt", "");
  82. JArray objList = new JArray();
  83. objList.Add(JToken.FromObject(obj));
  84. return objList;
  85. }
  86. private static string getAcctSplitBunchRucan() {
  87. Dictionary<string, object> obj = new Dictionary<string, object>();
  88. // 分账信息列表
  89. // obj.Add("acct_infos", getAcctInfosRucan());
  90. return JsonConvert.SerializeObject(obj);
  91. }
  92. private static object getGoodsDetail() {
  93. Dictionary<string, object> obj = new Dictionary<string, object>();
  94. // 商品编码
  95. // obj.Add("goods_id", "test");
  96. // 优惠退款金额
  97. // obj.Add("refund_amount", "test");
  98. // 商品退货数量
  99. // obj.Add("refund_quantity", "test");
  100. // 商品单价
  101. // obj.Add("price", "test");
  102. JArray objList = new JArray();
  103. objList.Add(JToken.FromObject(obj));
  104. return objList;
  105. }
  106. private static object getDetail() {
  107. Dictionary<string, object> obj = new Dictionary<string, object>();
  108. // 商品详情列表
  109. // obj.Add("goods_detail", getGoodsDetail());
  110. return obj;
  111. }
  112. private static object getWxData() {
  113. Dictionary<string, object> obj = new Dictionary<string, object>();
  114. // 退款商品详情
  115. // obj.Add("detail", getDetail());
  116. return obj;
  117. }
  118. private static string getDigitalCurrencyData() {
  119. Dictionary<string, object> obj = new Dictionary<string, object>();
  120. // 退款原因
  121. // obj.Add("refund_desc", "");
  122. return JsonConvert.SerializeObject(obj);
  123. }
  124. private static string getCombinedpayData() {
  125. Dictionary<string, object> obj = new Dictionary<string, object>();
  126. // 补贴方汇付编号
  127. // obj.Add("huifu_id", "test");
  128. // 补贴方类型
  129. // obj.Add("user_type", "test");
  130. // 补贴方账户号
  131. // obj.Add("acct_id", "test");
  132. // 补贴金额
  133. // obj.Add("amount", "test");
  134. JArray objList = new JArray();
  135. objList.Add(JToken.FromObject(obj));
  136. return JsonConvert.SerializeObject(objList);
  137. }
  138. private static string getRiskCheckData() {
  139. Dictionary<string, object> obj = new Dictionary<string, object>();
  140. // ip地址
  141. // obj.Add("ip_addr", "");
  142. // 基站地址
  143. // obj.Add("base_station", "");
  144. // 纬度
  145. // obj.Add("latitude", "");
  146. // 经度
  147. // obj.Add("longitude", "");
  148. return JsonConvert.SerializeObject(obj);
  149. }
  150. private static string getTerminalDeviceData() {
  151. Dictionary<string, object> obj = new Dictionary<string, object>();
  152. // 设备类型
  153. // obj.Add("device_type", "");
  154. // 交易设备IP
  155. // obj.Add("device_ip", "");
  156. // 交易设备MAC
  157. // obj.Add("device_mac", "");
  158. // 交易设备IMEI
  159. // obj.Add("device_imei", "");
  160. // 交易设备IMSI
  161. // obj.Add("device_imsi", "");
  162. // 交易设备ICCID
  163. // obj.Add("device_icc_id", "");
  164. // 交易设备WIFIMAC
  165. // obj.Add("device_wifi_mac", "");
  166. // 交易设备GPS
  167. // obj.Add("device_gps", "");
  168. return JsonConvert.SerializeObject(obj);
  169. }
  170. private static string getUnionpayData() {
  171. Dictionary<string, object> obj = new Dictionary<string, object>();
  172. // 收款方附加数据
  173. // obj.Add("addn_data", "");
  174. return JsonConvert.SerializeObject(obj);
  175. }
  176. }
  177. }