taobaoHelper.cs 53 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021
  1. using BizCom;
  2. using Newtonsoft.Json;
  3. using SiteCore.nuonuo;
  4. using SiteCore.Redis;
  5. using SiteCore.taoObj;
  6. using SQLData;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Data;
  10. using System.Security.Cryptography;
  11. using System.Text;
  12. using System.Web;
  13. using static SiteCore.taoObj.Refunds_receive_get_response_Obj;
  14. namespace SiteCore
  15. {
  16. public class taobaoHelper
  17. {
  18. //6201c178b49904f922503da5egia6dc45827b1d9613aefb2201404768885
  19. //session: 6100309b522c174d816e5218e193dd3ac90a91c452f96bc2201404768885
  20. //refresh_token: 6101909f794ed6ad8101c03b701a197e0aca9d14cf95acf2201404768885
  21. static string appid = "21407504";
  22. static string session_key = "";
  23. static string api_url = "http://xy.ifireant.com/taobaoapi";//http://api.taoesoft.com/Api.aspx
  24. static string yun_api_url = "http://xy.ifireant.com/taobaoapi";
  25. //static string api_url = "http://api.taoesoft.com/Api.aspx?action=executeTopApi&methodName={0}&requestObjectJson={1}&SessionKey={2}&sign={3}";
  26. static string auth_url = "https://oauth.taobao.com/authorize?response_type=code&client_id=" + appid + "&redirect_uri=http://api.taoesoft.com/TaobaoTitle_Callback.aspx&view=web&state={1}";
  27. static string tmc_url = "http://api.taoesoft.com/api.aspx?action=openTmc&appkey={0}&SessionKey={1}&nick={2}&groupName=lingtao&topics={3}&sign={4}";
  28. static string tmc_topics = "taobao_trade_TradeCreate,taobao_trade_TradeLogisticsAddressChanged,taobao_trade_TradeMemoModified,taobao_trade_TradeRated,taobao_trade_TradeBuyerPay,taobao_trade_TradeSuccess,taobao_trade_TradePartlyConfirmPay,taobao_trade_TradePartlyRefund,taobao_trade_TradeDelayConfirmPay,taobao_trade_TradeSellerShip,taobao_trade_TradeClose,taobao_trade_TradeCloseAndModifyDetailOrder,taobao_trade_TradeModifyFee";
  29. static HttpHelper tb_http = new HttpHelper();
  30. #region private
  31. private static string SignTopRequest(IDictionary<string, string> parameters, string secret, string signMethod)
  32. {
  33. // 第一步:把字典按Key的字母顺序排序
  34. IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(parameters, StringComparer.Ordinal);
  35. IEnumerator<KeyValuePair<string, string>> dem = sortedParams.GetEnumerator();
  36. // 第二步:把所有参数名和参数值串在一起
  37. StringBuilder query = new StringBuilder();
  38. if (signMethod == "md5")
  39. {
  40. query.Append(secret);
  41. }
  42. while (dem.MoveNext())
  43. {
  44. string key = dem.Current.Key;
  45. string value = dem.Current.Value;
  46. if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value))
  47. {
  48. query.Append(key).Append(value);
  49. }
  50. }
  51. // 第三步:使用MD5/HMAC加密
  52. byte[] bytes;
  53. if (signMethod == "hmac")
  54. {
  55. HMACMD5 hmac = new HMACMD5(Encoding.UTF8.GetBytes(secret));
  56. bytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(query.ToString()));
  57. }
  58. else
  59. {
  60. query.Append(secret);
  61. MD5 md5 = MD5.Create();
  62. bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(query.ToString()));
  63. }
  64. // 第四步:把二进制转化为大写的十六进制
  65. StringBuilder result = new StringBuilder();
  66. for (int i = 0; i < bytes.Length; i++)
  67. {
  68. result.Append(bytes[i].ToString("X2"));
  69. }
  70. return result.ToString();
  71. }
  72. /// <summary>
  73. /// MD5加密
  74. /// </summary>
  75. /// <param name="s"></param>
  76. /// <returns></returns>
  77. private static string Md5(string s)
  78. {
  79. using (var md5 = MD5.Create())
  80. {
  81. var result = md5.ComputeHash(Encoding.Default.GetBytes(s));
  82. var strResult = BitConverter.ToString(result);
  83. return strResult.Replace("-", "").ToUpper();
  84. }
  85. }
  86. public static string GetSign()
  87. {
  88. string code = "";
  89. int sc = DateTimeToUnixTime(DateTime.Now) / 60;
  90. code = Md5(Md5(sc + "1b46af52a8dcaa822b98b1be9d447bb2").ToLower()).ToLower();
  91. code = System.Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(code));
  92. return code;
  93. }
  94. public static int DateTimeToUnixTime(DateTime dateTime)
  95. {
  96. return (int)(dateTime - TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1))).TotalSeconds;
  97. }
  98. private static void setParmsHead(string session, ref List<string> lst)
  99. {
  100. lst.Add("action=executeTopApi");
  101. lst.Add("format=1");
  102. lst.Add("SessionKey=" + session);
  103. lst.Add("sign=" + GetSign());
  104. lst.Add("isItemApi=3");
  105. }
  106. private static void setParmsHead2(string session, ref List<string> lst)
  107. {
  108. lst.Add("action=executeTopApi");
  109. lst.Add("format=1");
  110. lst.Add("SessionKey=" + session);
  111. lst.Add("sign=" + GetSign());
  112. }
  113. #endregion
  114. private static readonly object shopkey_Flag = new object();
  115. private static Dictionary<string, string> _shopKeyDics = null;
  116. public static Dictionary<string, string> ShopKeyDics
  117. {
  118. get
  119. {
  120. if (_shopKeyDics == null || _shopKeyDics.Count < 1)
  121. {
  122. _shopKeyDics = erpRedis.RedisHelper.StringGet<Dictionary<string, string>>("erp_shpkey");
  123. if (_shopKeyDics == null)
  124. {
  125. lock (shopkey_Flag)
  126. {
  127. if (_shopKeyDics == null)
  128. {
  129. _shopKeyDics = new Dictionary<string, string>();
  130. string sql = "select appsecret as skey,shopname as name from ce_erpshop where taobao_user_id<>''";
  131. DataTable dt = DbHelper.DbConn.ExecuteDataset(sql).Tables[0];
  132. if (dt != null)
  133. {
  134. foreach (DataRow dr in dt.Rows)
  135. {
  136. _shopKeyDics.Add(dr["name"].ToString(), dr["skey"].ToString());
  137. }
  138. }
  139. erpRedis.RedisHelper.StringSet("erp_shpkey", _shopKeyDics, TimeSpan.FromHours(10));
  140. }
  141. }
  142. }
  143. }
  144. return _shopKeyDics;
  145. }
  146. }
  147. //appkey={0}&SessionKey={1}&nick={2}&groupName=lingtao&topics={3}&sign={4}";
  148. public static bool openTmc(string sessionKey, string nick)
  149. {
  150. string url = string.Format(tmc_url, appid, sessionKey, nick, tmc_topics, GetSign());
  151. HttpItem item = new HttpItem()
  152. {
  153. URL = url
  154. };
  155. HttpResult hResult = tb_http.GetHtml(item);
  156. string html = hResult.Html;
  157. if (html == "" || html == "True")
  158. {
  159. string sql = string.Format("update ce_erpshop set istmc=1 where appsecret='{0}' and taobao_user_nick='{1}'", sessionKey, nick);
  160. DbHelper.DbConn.ExecuteNonQuery(sql);
  161. return true;
  162. }
  163. else
  164. {
  165. return false;
  166. }
  167. }
  168. /// <summary>
  169. /// 获取单笔交易的详细信息
  170. /// </summary>
  171. /// <param name="sessionKey"></param>
  172. /// <param name="orderid"></param>
  173. /// <returns></returns>
  174. public static string TradeFullinfoGet(string sessionKey, string orderid)
  175. {
  176. //json参数
  177. var res_obj = new
  178. {
  179. fields = "seller_nick,buyer_nick,title,type,created,tid,seller_rate,buyer_flag,buyer_rate,status,payment,adjust_fee,post_fee,total_fee,pay_time,end_time,modified,consign_time,buyer_obtain_point_fee,point_fee,real_point_fee,received_payment,commission_fee,buyer_memo,seller_memo,alipay_no,alipay_id,buyer_message,pic_path,num_iid,num,price,buyer_alipay_no,receiver_name,receiver_state,receiver_city,receiver_district,receiver_address,receiver_zip,receiver_mobile,receiver_phone,seller_flag,seller_alipay_no,seller_mobile,seller_phone,seller_name,seller_email,available_confirm_fee,has_post_fee,timeout_action_time,snapshot_url,cod_fee,cod_status,shipping_type,trade_memo,is_3D,buyer_email,buyer_area,trade_from,is_lgtype,is_force_wlb,is_brand_sale,buyer_cod_fee,discount_fee,seller_cod_fee,express_agency_fee,invoice_name,service_orders,credit_cardfee,orders,trade_ext",
  180. tid = orderid
  181. };
  182. string ro_json = JsonConvert.SerializeObject(res_obj);
  183. //post参数
  184. List<string> postLst = new List<string>();
  185. setParmsHead(sessionKey, ref postLst);
  186. postLst.Add("methodName=taobao.trade.fullinfo.get");
  187. postLst.Add("requestObjectJson=" + HttpUtility.UrlEncode(ro_json));
  188. HttpItem item = new HttpItem()
  189. {
  190. URL = api_url,
  191. Method = "POST",
  192. ContentType = "application/x-www-form-urlencoded",
  193. Postdata = string.Join("&", postLst.ToArray())
  194. };
  195. HttpResult hResult = tb_http.GetHtml(item);
  196. return hResult.Html;
  197. //return html;
  198. }
  199. /// <summary>
  200. /// 查询卖家已卖出的交易数据(根据创建时间)
  201. /// </summary>
  202. /// <param name="sessionKey"></param>
  203. /// <param name="orderid"></param>
  204. /// <returns></returns>
  205. public static string TradesSoldGet(string sessionKey)
  206. {
  207. //json参数
  208. var res_obj = new
  209. {
  210. fields = "seller_nick,buyer_nick,title,type,created,tid,seller_rate,buyer_flag,buyer_rate,status,payment,adjust_fee,post_fee,total_fee,pay_time,end_time,modified,consign_time,buyer_obtain_point_fee,point_fee,real_point_fee,received_payment,commission_fee,buyer_memo,seller_memo,alipay_no,alipay_id,buyer_message,pic_path,num_iid,num,price,buyer_alipay_no,receiver_name,receiver_state,receiver_city,receiver_district,receiver_address,receiver_zip,receiver_mobile,receiver_phone,seller_flag,seller_alipay_no,seller_mobile,seller_phone,seller_name,seller_email,available_confirm_fee,has_post_fee,timeout_action_time,snapshot_url,cod_fee,cod_status,shipping_type,trade_memo,is_3D,buyer_email,buyer_area,trade_from,is_lgtype,is_force_wlb,is_brand_sale,buyer_cod_fee,discount_fee,seller_cod_fee,express_agency_fee,invoice_name,service_orders,credit_cardfee,orders,trade_ext"
  211. };
  212. string ro_json = JsonConvert.SerializeObject(res_obj);
  213. //post参数
  214. List<string> postLst = new List<string>();
  215. setParmsHead(sessionKey, ref postLst);
  216. postLst.Add("methodName=taobao.trades.sold.get");
  217. postLst.Add("requestObjectJson=" + HttpUtility.UrlEncode(ro_json));
  218. HttpItem item = new HttpItem()
  219. {
  220. URL = api_url,
  221. Method = "POST",
  222. ContentType = "application/x-www-form-urlencoded",
  223. Postdata = string.Join("&", postLst.ToArray())
  224. };
  225. HttpResult hResult = tb_http.GetHtml(item);
  226. return hResult.Html;
  227. //return html;
  228. }
  229. /// <summary>
  230. /// 查询退款列表(根据开始结束时间)
  231. /// </summary>
  232. /// <param name="sessionKey"></param>
  233. /// <param name="orderid"></param>
  234. /// <returns></returns>
  235. public static string RefundsReceiveGet(string sessionKey, DateTime stime, DateTime etime)
  236. {
  237. //json参数
  238. var res_obj = new
  239. {
  240. fields = "refund_id,tid,title,buyer_nick,seller_nick,total_fee,status,created,refund_fee,oid,good_status,company_name,sid,payment,reason,desc,has_good_return,modified,order_status,refund_phase",
  241. start_modified = stime,
  242. end_modified = etime
  243. };
  244. string ro_json = JsonConvert.SerializeObject(res_obj);
  245. //post参数
  246. List<string> postLst = new List<string>();
  247. setParmsHead(sessionKey, ref postLst);
  248. postLst.Add("methodName=taobao.refunds.receive.get");
  249. postLst.Add("requestObjectJson=" + HttpUtility.UrlEncode(ro_json));
  250. HttpItem item = new HttpItem()
  251. {
  252. URL = api_url,
  253. Method = "POST",
  254. ContentType = "application/x-www-form-urlencoded",
  255. Postdata = string.Join("&", postLst.ToArray())
  256. };
  257. HttpResult hResult = tb_http.GetHtml(item);
  258. return hResult.Html;
  259. //return html;
  260. }
  261. //处理退款列表
  262. public static void GetAndHandleRefunds()
  263. {
  264. string sql = "select * from CE_ErpShop";
  265. DataTable dt = DbHelper.DbConn.ExecuteDataset(sql).Tables[0];
  266. if (dt.Rows.Count > 0)
  267. {
  268. foreach (DataRow Dr in dt.Rows)
  269. {
  270. string shopname = Dr["ShopName"].ToString();
  271. string sessionKey = _shopKeyDics[shopname];
  272. //string sessionKey = "62011121cc9403ccc4a9ZZ0aaZZ369f224369206db001f02201404768885";
  273. if (sessionKey == null || sessionKey == "")
  274. {
  275. continue;
  276. }
  277. DateTime stime = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 00:00:00"));
  278. DateTime etime = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 23:59:59"));
  279. string res = RefundsReceiveGet(sessionKey, stime, etime);
  280. Console.WriteLine(res);
  281. Refunds_receive_get_response_Obj reObj = null;
  282. //string res = test();
  283. if (res == "") return;
  284. try
  285. {
  286. res = GetUTF8String2(Encoding.UTF8.GetBytes(res));
  287. //res = res.Replace(" ", "");
  288. reObj = JsonConvert.DeserializeObject<Refunds_receive_get_response_Obj>(res);
  289. List<Refund> reItemList = reObj.refunds_receive_get_response.refunds.refund;
  290. foreach (Refund item in reItemList)
  291. {
  292. CeErpTradeRefund refund = new CeErpTradeRefund();
  293. refund.refund_id = item.refund_id;
  294. refund.tid = item.tid;
  295. refund.oid = item.oid;
  296. refund.created = item.created;
  297. refund.modified = item.modified;
  298. refund.status = item.status;
  299. refund.order_status = item.order_status;
  300. refund.good_status = item.good_status;
  301. refund.payment = item.payment;
  302. refund.refund_fee = item.refund_fee;
  303. refund.refund_phase = item.refund_phase;
  304. refund.reason = item.reason;
  305. refund.describe = item.desc;
  306. refund.buyer_nick = item.buyer_nick;
  307. refund.seller_nick = item.seller_nick;
  308. refund.total_fee = item.total_fee;
  309. refund.has_good_return = item.has_good_return;
  310. refund.RefundState = 1;//1待审核2待确认
  311. refund.Create();
  312. }
  313. }
  314. catch (Exception ex)
  315. {
  316. }
  317. }
  318. }
  319. }
  320. public static string GetUTF8String2(byte[] buffer)
  321. {
  322. if (buffer == null)
  323. return null;
  324. if (buffer.Length <= 3)
  325. {
  326. return Encoding.UTF8.GetString(buffer);
  327. }
  328. byte[] bomBuffer = new byte[] { 0xef, 0xbb, 0xbf };
  329. if (buffer[0] == bomBuffer[0] && buffer[1] == bomBuffer[1] && buffer[2] == bomBuffer[2])
  330. {
  331. return new UTF8Encoding(false).GetString(buffer, 3, buffer.Length - 3);
  332. }
  333. return Encoding.UTF8.GetString(buffer);
  334. }
  335. private string GetUTF8String(byte[] vs)
  336. {
  337. throw new NotImplementedException();
  338. }
  339. /// <summary>
  340. /// 物流公司信息
  341. /// </summary>
  342. /// <param name="sessionKey"></param>
  343. /// <param name="orderid"></param>
  344. /// <returns></returns>
  345. public static string LogisticsCompaniesGet()
  346. {
  347. string sessionKey = "6100309b522c174d816e5218e193dd3ac90a91c452f96bc2201404768885";
  348. //json参数
  349. var res_obj = new
  350. {
  351. fields = "id,code,name,reg_mail_no"
  352. };
  353. string ro_json = JsonConvert.SerializeObject(res_obj);
  354. //post参数
  355. List<string> postLst = new List<string>();
  356. setParmsHead(sessionKey, ref postLst);
  357. postLst.Add("methodName=taobao.logistics.companies.get");
  358. postLst.Add("requestObjectJson=" + HttpUtility.UrlEncode(ro_json));
  359. HttpItem item = new HttpItem()
  360. {
  361. URL = api_url,
  362. Method = "POST",
  363. ContentType = "application/x-www-form-urlencoded",
  364. Postdata = string.Join("&", postLst.ToArray())
  365. };
  366. HttpResult hResult = tb_http.GetHtml(item);
  367. return hResult.Html;
  368. //return html;
  369. }
  370. /// <summary>
  371. /// 查询面单订购服务
  372. /// </summary>
  373. /// <param name="sessionKey"></param>
  374. /// <param name="orderid"></param>
  375. /// <returns></returns>
  376. public static string TaobaoWlbWaybillISearch()
  377. {
  378. string sessionKey = ShopKeyDics["芳儒旗舰店"];
  379. //json参数
  380. var res_obj = new
  381. {
  382. };
  383. string ro_json = JsonConvert.SerializeObject(res_obj);
  384. //ro_json = "{\"WaybillApplyRequest\":" + ro_json + "}";
  385. ro_json = "{\"WaybillApplyRequest\":\"" + ro_json.Replace("\"", "\\\"") + "\"}";
  386. //post参数
  387. List<string> postLst = new List<string>();
  388. setParmsHead(sessionKey, ref postLst);
  389. postLst.Add("methodName=taobao.wlb.waybill.i.search");
  390. //postLst.Add("requestObjectJson=eyJQYXJhbVdheWJpbGxDbG91ZFByaW50QXBwbHlOZXdSZXF1ZXN0Ijoie1wiY3BfY29kZVwiOlwiWlRPXCIsXCJzZW5kZXJcIjp7XCJhZGRyZXNzXCI6e1wiY2l0eVwiOlwiXFx1NTM1N1xcdTkwMWFcXHU1ZTAyXCIsXCJkZXRhaWxcIjpcIlxcdTUzY2NcXHU2ODY1XFx1OTZjNVxcdTU5MWFcXHU4ZGVmXCIsXCJkaXN0cmljdFwiOlwiXFx1OTAxYVxcdTVkZGVcXHU1ZTAyXCIsXCJwcm92aW5jZVwiOlwiXFx1NmM1ZlxcdTgyY2ZcXHU3NzAxXCJ9LFwicGhvbmVcIjpcIjEzMjY1MDI1NTA5XCIsXCJuYW1lXCI6XCJcXHU1NTEwXFx1NzUxZlwifSxcInRyYWRlX29yZGVyX2luZm9fZHRvc1wiOlt7XCJvYmplY3RfaWRcIjpcIjU4MjY5OVwiLFwib3JkZXJfaW5mb1wiOntcIm9yZGVyX2NoYW5uZWxzX3R5cGVcIjpcIk9USEVSU1wiLFwidHJhZGVfb3JkZXJfbGlzdFwiOlwiMTIwNjA3NzAwNTEzNDcwMTMzXCJ9LFwicGFja2FnZV9pbmZvXCI6e1wiaXRlbXNcIjpbe1wiY291bnRcIjpcIjFcIixcIm5hbWVcIjpcIjIwMTlcXHU1MzE3XFx1NmIyN1xcdTUzNjFcXHU5MDFhXFx1NTkyN1xcdTcyNDhcXHU2NTcwXFx1NzgwMVxcdTUxYjBcXHU0ZTFkXFx1NWUyZFxcdTUxYzlcXHU1ZTJkXFx1NTk1N1xcdTRlZjYgIFxcdTVmZWJcXHU0ZTUwXFx1NjA1MFxcdTlmOTkgMS41bVxcdWZmMDg1XFx1ODJmMVxcdTVjM2FcXHVmZjA5XFx1NWU4YVwifV0sXCJpZFwiOlwiMjAxOTA0MDQxNTE1MDkxNjVcIn0sXCJyZWNpcGllbnRcIjp7XCJhZGRyZXNzXCI6e1wiY2l0eVwiOlwiXFx1OTBkMVxcdTVkZGVcIixcImRldGFpbFwiOlwiXFx1NmNiM1xcdTUzNTdcXHU3NzAxIFxcdTkwZDFcXHU1ZGRlXFx1NWUwMiBcXHU3YmExXFx1NTdjZVxcdTU2ZGVcXHU2NWNmXFx1NTMzYVxcdTAwYTBcXHU1NmRlXFx1NjVjZlxcdTUzM2FcXHU3ZDJiXFx1ODM0NlxcdTVjNzFcXHU1MzU3XFx1OGRlZlxcdTg4NTdcXHU5MDUzXFx1OGQ2M1xcdTZjNWZcXHU4ZGVmXFx1OTBkMVxcdTVkZGVcXHU1MzQxXFx1OTY2MlxcdTUzNTdcXHU5NWU4XFx1NTQxMVxcdTRlMWM1MDBcXHU3YzczXFx1OGRlZlxcdTUzMTdcXHU0ZTJkXFx1NWVmYVxcdTRlMDBcXHU1YzQwXFx1OTQ2YlxcdTgyZDFcXHU1N2NlXFx1NGU5NFxcdTUzZjdcXHU5NjYyXFx1OTg3OVxcdTc2ZWVcXHU5MGU4XCIsXCJkaXN0cmljdFwiOlwiXFx1N2JhMVxcdTU3Y2VcIixcInByb3ZpbmNlXCI6XCJcXHU2Y2IzXFx1NTM1N1wifSxcInBob25lXCI6XCIxODgzODUwNTMzNVwiLFwibmFtZVwiOlwiXFx1NzM4YlxcdTVjYWRcXHU1NzY0XCJ9LFwidGVtcGxhdGVfdXJsXCI6XCJodHRwOlxcXC9cXFwvY2xvdWRwcmludC5jYWluaWFvLmNvbVxcXC90ZW1wbGF0ZVxcXC9zdGFuZGFyZFxcXC8zMDFcXFwvMjAwXCIsXCJ1c2VyX2lkXCI6MjUzNDQ4ODB9XX0ifQ==&sign=OWE5MjA1MGJkM2I3ZTU5MDY3ZDk1ZTY2OTUzNzRhZTI=");//System.Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(
  391. postLst.Add("requestObjectJson=" + System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(ro_json)));//
  392. postLst.Add("base64=1");
  393. HttpItem item = new HttpItem()
  394. {
  395. URL = api_url,
  396. Method = "POST",
  397. ContentType = "application/x-www-form-urlencoded",
  398. Postdata = string.Join("&", postLst.ToArray())
  399. };
  400. HttpResult hResult = tb_http.GetHtml(item);
  401. return hResult.Html;
  402. }
  403. /// <summary>
  404. /// 获取面单模板
  405. /// </summary>
  406. /// <param name="sessionKey"></param>
  407. /// <param name="orderid"></param>
  408. /// <returns></returns>
  409. public static string CainiaoCloudprintStdtemplatesGet(string sellerNick)
  410. {
  411. string sessionKey = ShopKeyDics[sellerNick];
  412. //json参数
  413. var res_obj = new
  414. {
  415. };
  416. string ro_json = JsonConvert.SerializeObject(res_obj);
  417. //post参数
  418. List<string> postLst = new List<string>();
  419. setParmsHead(sessionKey, ref postLst);
  420. postLst.Add("methodName=cainiao.cloudprint.stdtemplates.get");
  421. //postLst.Add("requestObjectJson=eyJQYXJhbVdheWJpbGxDbG91ZFByaW50QXBwbHlOZXdSZXF1ZXN0Ijoie1wiY3BfY29kZVwiOlwiWlRPXCIsXCJzZW5kZXJcIjp7XCJhZGRyZXNzXCI6e1wiY2l0eVwiOlwiXFx1NTM1N1xcdTkwMWFcXHU1ZTAyXCIsXCJkZXRhaWxcIjpcIlxcdTUzY2NcXHU2ODY1XFx1OTZjNVxcdTU5MWFcXHU4ZGVmXCIsXCJkaXN0cmljdFwiOlwiXFx1OTAxYVxcdTVkZGVcXHU1ZTAyXCIsXCJwcm92aW5jZVwiOlwiXFx1NmM1ZlxcdTgyY2ZcXHU3NzAxXCJ9LFwicGhvbmVcIjpcIjEzMjY1MDI1NTA5XCIsXCJuYW1lXCI6XCJcXHU1NTEwXFx1NzUxZlwifSxcInRyYWRlX29yZGVyX2luZm9fZHRvc1wiOlt7XCJvYmplY3RfaWRcIjpcIjU4MjY5OVwiLFwib3JkZXJfaW5mb1wiOntcIm9yZGVyX2NoYW5uZWxzX3R5cGVcIjpcIk9USEVSU1wiLFwidHJhZGVfb3JkZXJfbGlzdFwiOlwiMTIwNjA3NzAwNTEzNDcwMTMzXCJ9LFwicGFja2FnZV9pbmZvXCI6e1wiaXRlbXNcIjpbe1wiY291bnRcIjpcIjFcIixcIm5hbWVcIjpcIjIwMTlcXHU1MzE3XFx1NmIyN1xcdTUzNjFcXHU5MDFhXFx1NTkyN1xcdTcyNDhcXHU2NTcwXFx1NzgwMVxcdTUxYjBcXHU0ZTFkXFx1NWUyZFxcdTUxYzlcXHU1ZTJkXFx1NTk1N1xcdTRlZjYgIFxcdTVmZWJcXHU0ZTUwXFx1NjA1MFxcdTlmOTkgMS41bVxcdWZmMDg1XFx1ODJmMVxcdTVjM2FcXHVmZjA5XFx1NWU4YVwifV0sXCJpZFwiOlwiMjAxOTA0MDQxNTE1MDkxNjVcIn0sXCJyZWNpcGllbnRcIjp7XCJhZGRyZXNzXCI6e1wiY2l0eVwiOlwiXFx1OTBkMVxcdTVkZGVcIixcImRldGFpbFwiOlwiXFx1NmNiM1xcdTUzNTdcXHU3NzAxIFxcdTkwZDFcXHU1ZGRlXFx1NWUwMiBcXHU3YmExXFx1NTdjZVxcdTU2ZGVcXHU2NWNmXFx1NTMzYVxcdTAwYTBcXHU1NmRlXFx1NjVjZlxcdTUzM2FcXHU3ZDJiXFx1ODM0NlxcdTVjNzFcXHU1MzU3XFx1OGRlZlxcdTg4NTdcXHU5MDUzXFx1OGQ2M1xcdTZjNWZcXHU4ZGVmXFx1OTBkMVxcdTVkZGVcXHU1MzQxXFx1OTY2MlxcdTUzNTdcXHU5NWU4XFx1NTQxMVxcdTRlMWM1MDBcXHU3YzczXFx1OGRlZlxcdTUzMTdcXHU0ZTJkXFx1NWVmYVxcdTRlMDBcXHU1YzQwXFx1OTQ2YlxcdTgyZDFcXHU1N2NlXFx1NGU5NFxcdTUzZjdcXHU5NjYyXFx1OTg3OVxcdTc2ZWVcXHU5MGU4XCIsXCJkaXN0cmljdFwiOlwiXFx1N2JhMVxcdTU3Y2VcIixcInByb3ZpbmNlXCI6XCJcXHU2Y2IzXFx1NTM1N1wifSxcInBob25lXCI6XCIxODgzODUwNTMzNVwiLFwibmFtZVwiOlwiXFx1NzM4YlxcdTVjYWRcXHU1NzY0XCJ9LFwidGVtcGxhdGVfdXJsXCI6XCJodHRwOlxcXC9cXFwvY2xvdWRwcmludC5jYWluaWFvLmNvbVxcXC90ZW1wbGF0ZVxcXC9zdGFuZGFyZFxcXC8zMDFcXFwvMjAwXCIsXCJ1c2VyX2lkXCI6MjUzNDQ4ODB9XX0ifQ==&sign=OWE5MjA1MGJkM2I3ZTU5MDY3ZDk1ZTY2OTUzNzRhZTI=");//System.Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(
  422. postLst.Add("requestObjectJson=" + System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(ro_json)));//
  423. postLst.Add("base64=1");
  424. HttpItem item = new HttpItem()
  425. {
  426. URL = api_url,
  427. Method = "POST",
  428. ContentType = "application/x-www-form-urlencoded",
  429. Postdata = string.Join("&", postLst.ToArray())
  430. };
  431. HttpResult hResult = tb_http.GetHtml(item);
  432. return hResult.Html;
  433. }
  434. /// <summary>
  435. /// 获取快递面单号
  436. /// </summary>
  437. /// <param name="sessionKey"></param>
  438. /// <param name="orderid"></param>
  439. /// <returns></returns>
  440. public static string CainiaoWaybillIiGet(string cpcode, string tempUrl, string ctid)
  441. {
  442. string sql = "select * from view_erptradecell where ctid='" + ctid + "'";
  443. DataTable dt = DbHelper.DbConn.ExecuteDataset(sql).Tables[0];
  444. if (dt != null && dt.Rows.Count > 0)
  445. {
  446. DataRow dr = dt.Rows[0];
  447. string sessionKey = ShopKeyDics[dr["seller_nick"].ToString()];
  448. //json参数
  449. var res_obj = new
  450. {
  451. //param_waybill_cloud_print_apply_new_request
  452. cp_code = cpcode,
  453. sender = new
  454. {
  455. name = "黄先生",
  456. mobile = "18610588822",
  457. address = new
  458. {
  459. province = "福建省",
  460. city = "龙岩市",
  461. detail = "新罗区东肖开发区"
  462. }
  463. },
  464. trade_order_info_dtos = new
  465. {
  466. object_id = dr["tid"].ToString(),
  467. template_url = tempUrl,
  468. user_id = 2201404768885,
  469. order_info = new
  470. {
  471. order_channels_type = "TB",
  472. trade_order_list = dr["tid"].ToString()
  473. },
  474. package_info = new
  475. {
  476. items = new
  477. {
  478. count = 1,
  479. name = "印刷品"
  480. }
  481. },
  482. recipient = new
  483. {
  484. name = dr["receiver_name"].ToString(),
  485. mobile = dr["receiver_mobile"].ToString(),
  486. address = new
  487. {
  488. province = dr["receiver_state"].ToString(),
  489. city = dr["receiver_city"].ToString(),
  490. detail = dr["receiver_address"].ToString()
  491. }
  492. }
  493. }
  494. };
  495. string ro_json = JsonConvert.SerializeObject(res_obj);
  496. ro_json = "{\"ParamWaybillCloudPrintApplyNewRequest\":\"" + ro_json.Replace("\"", "\\\"") + "\"}";
  497. //return "";
  498. //ro_json= "{"ParamWaybillCloudPrintApplyNewRequest":"{\"cp_code\":\"ZTO\",\"sender\":{\"address\":{\"city\":\"\\u5357\\u901a\\u5e02\",\"detail\":\"\\u53cc\\u6865\\u96c5\\u591a\\u8def\",\"district\":\"\\u901a\\u5dde\\u5e02\",\"province\":\"\\u6c5f\\u82cf\\u7701\"},\"phone\":\"13265025509\",\"name\":\"\\u5510\\u751f\"},\"trade_order_info_dtos\":[{\"object_id\":\"582699\",\"order_info\":{\"order_channels_type\":\"OTHERS\",\"trade_order_list\":\"120607700513470133\"},\"package_info\":{\"items\":[{\"count\":\"1\",\"name\":\"2019\\u5317\\u6b27\\u5361\\u901a\\u5927\\u7248\\u6570\\u7801\\u51b0\\u4e1d\\u5e2d\\u51c9\\u5e2d\\u5957\\u4ef6 \\u5feb\\u4e50\\u6050\\u9f99 1.5m\\uff085\\u82f1\\u5c3a\\uff09\\u5e8a\"}],\"id\":\"20190404151509165\"},\"recipient\":{\"address\":{\"city\":\"\\u90d1\\u5dde\",\"detail\":\"\\u6cb3\\u5357\\u7701 \\u90d1\\u5dde\\u5e02 \\u7ba1\\u57ce\\u56de\\u65cf\\u533a\\u00a0\\u56de\\u65cf\\u533a\\u7d2b\\u8346\\u5c71\\u5357\\u8def\\u8857\\u9053\\u8d63\\u6c5f\\u8def\\u90d1\\u5dde\\u5341\\u9662\\u5357\\u95e8\\u5411\\u4e1c500\\u7c73\\u8def\\u5317\\u4e2d\\u5efa\\u4e00\\u5c40\\u946b\\u82d1\\u57ce\\u4e94\\u53f7\\u9662\\u9879\\u76ee\\u90e8\",\"district\":\"\\u7ba1\\u57ce\",\"province\":\"\\u6cb3\\u5357\"},\"phone\":\"18838505335\",\"name\":\"\\u738b\\u5cad\\u5764\"},\"template_url\":\"http:\\\/\\\/cloudprint.cainiao.com\\\/template\\\/standard\\\/301\\\/200\",\"user_id\":25344880}]}"}"
  499. //post参数
  500. List<string> postLst = new List<string>();
  501. setParmsHead(sessionKey, ref postLst);
  502. postLst.Add("methodName=cainiao.waybill.ii.get");
  503. //postLst.Add("requestObjectJson=eyJQYXJhbVdheWJpbGxDbG91ZFByaW50QXBwbHlOZXdSZXF1ZXN0Ijoie1wiY3BfY29kZVwiOlwiWlRPXCIsXCJzZW5kZXJcIjp7XCJhZGRyZXNzXCI6e1wiY2l0eVwiOlwiXFx1NTM1N1xcdTkwMWFcXHU1ZTAyXCIsXCJkZXRhaWxcIjpcIlxcdTUzY2NcXHU2ODY1XFx1OTZjNVxcdTU5MWFcXHU4ZGVmXCIsXCJkaXN0cmljdFwiOlwiXFx1OTAxYVxcdTVkZGVcXHU1ZTAyXCIsXCJwcm92aW5jZVwiOlwiXFx1NmM1ZlxcdTgyY2ZcXHU3NzAxXCJ9LFwicGhvbmVcIjpcIjEzMjY1MDI1NTA5XCIsXCJuYW1lXCI6XCJcXHU1NTEwXFx1NzUxZlwifSxcInRyYWRlX29yZGVyX2luZm9fZHRvc1wiOlt7XCJvYmplY3RfaWRcIjpcIjU4MjY5OVwiLFwib3JkZXJfaW5mb1wiOntcIm9yZGVyX2NoYW5uZWxzX3R5cGVcIjpcIk9USEVSU1wiLFwidHJhZGVfb3JkZXJfbGlzdFwiOlwiMTIwNjA3NzAwNTEzNDcwMTMzXCJ9LFwicGFja2FnZV9pbmZvXCI6e1wiaXRlbXNcIjpbe1wiY291bnRcIjpcIjFcIixcIm5hbWVcIjpcIjIwMTlcXHU1MzE3XFx1NmIyN1xcdTUzNjFcXHU5MDFhXFx1NTkyN1xcdTcyNDhcXHU2NTcwXFx1NzgwMVxcdTUxYjBcXHU0ZTFkXFx1NWUyZFxcdTUxYzlcXHU1ZTJkXFx1NTk1N1xcdTRlZjYgIFxcdTVmZWJcXHU0ZTUwXFx1NjA1MFxcdTlmOTkgMS41bVxcdWZmMDg1XFx1ODJmMVxcdTVjM2FcXHVmZjA5XFx1NWU4YVwifV0sXCJpZFwiOlwiMjAxOTA0MDQxNTE1MDkxNjVcIn0sXCJyZWNpcGllbnRcIjp7XCJhZGRyZXNzXCI6e1wiY2l0eVwiOlwiXFx1OTBkMVxcdTVkZGVcIixcImRldGFpbFwiOlwiXFx1NmNiM1xcdTUzNTdcXHU3NzAxIFxcdTkwZDFcXHU1ZGRlXFx1NWUwMiBcXHU3YmExXFx1NTdjZVxcdTU2ZGVcXHU2NWNmXFx1NTMzYVxcdTAwYTBcXHU1NmRlXFx1NjVjZlxcdTUzM2FcXHU3ZDJiXFx1ODM0NlxcdTVjNzFcXHU1MzU3XFx1OGRlZlxcdTg4NTdcXHU5MDUzXFx1OGQ2M1xcdTZjNWZcXHU4ZGVmXFx1OTBkMVxcdTVkZGVcXHU1MzQxXFx1OTY2MlxcdTUzNTdcXHU5NWU4XFx1NTQxMVxcdTRlMWM1MDBcXHU3YzczXFx1OGRlZlxcdTUzMTdcXHU0ZTJkXFx1NWVmYVxcdTRlMDBcXHU1YzQwXFx1OTQ2YlxcdTgyZDFcXHU1N2NlXFx1NGU5NFxcdTUzZjdcXHU5NjYyXFx1OTg3OVxcdTc2ZWVcXHU5MGU4XCIsXCJkaXN0cmljdFwiOlwiXFx1N2JhMVxcdTU3Y2VcIixcInByb3ZpbmNlXCI6XCJcXHU2Y2IzXFx1NTM1N1wifSxcInBob25lXCI6XCIxODgzODUwNTMzNVwiLFwibmFtZVwiOlwiXFx1NzM4YlxcdTVjYWRcXHU1NzY0XCJ9LFwidGVtcGxhdGVfdXJsXCI6XCJodHRwOlxcXC9cXFwvY2xvdWRwcmludC5jYWluaWFvLmNvbVxcXC90ZW1wbGF0ZVxcXC9zdGFuZGFyZFxcXC8zMDFcXFwvMjAwXCIsXCJ1c2VyX2lkXCI6MjUzNDQ4ODB9XX0ifQ==&sign=OWE5MjA1MGJkM2I3ZTU5MDY3ZDk1ZTY2OTUzNzRhZTI=");//System.Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(
  504. postLst.Add("requestObjectJson=" + System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(ro_json)));//
  505. postLst.Add("base64=1");
  506. HttpItem item = new HttpItem()
  507. {
  508. URL = api_url,
  509. Method = "POST",
  510. ContentType = "application/x-www-form-urlencoded",
  511. Postdata = string.Join("&", postLst.ToArray())
  512. };
  513. HttpResult hResult = tb_http.GetHtml(item);
  514. return hResult.Html;
  515. }
  516. return "";
  517. }
  518. //发货接口
  519. public static string LogisticsOnlineSend(string sessionKey, string orderid, string comCode, string outSid)
  520. {
  521. //json参数
  522. var res_obj = new
  523. {
  524. tid = orderid,
  525. company_code = comCode,
  526. out_sid = outSid
  527. };
  528. string ro_json = JsonConvert.SerializeObject(res_obj);
  529. //post参数
  530. List<string> postLst = new List<string>();
  531. setParmsHead(sessionKey, ref postLst);
  532. postLst.Add("methodName=taobao.logistics.online.send");
  533. postLst.Add("requestObjectJson=" + HttpUtility.UrlEncode(ro_json));
  534. HttpItem item = new HttpItem()
  535. {
  536. URL = api_url,
  537. Method = "POST",
  538. ContentType = "application/x-www-form-urlencoded",
  539. Postdata = string.Join("&", postLst.ToArray())
  540. };
  541. HttpResult hResult = tb_http.GetHtml(item);
  542. return hResult.Html;
  543. }
  544. //修改备注到淘宝(修改旗帜 zi色旗)
  545. public static string TradeMemoUpdate(string atid, string sellerNick, int aflag, string amemo)
  546. {
  547. string en_memo = HttpUtility.UrlEncode(amemo);
  548. string skey = ShopKeyDics[sellerNick];
  549. //json参数
  550. object res_obj = null;
  551. if (amemo.Length > 0)
  552. {
  553. var obj = new
  554. {
  555. tid = atid,
  556. flag = aflag,
  557. memo = en_memo
  558. };
  559. res_obj = obj;
  560. }
  561. else
  562. {
  563. var obj = new
  564. {
  565. tid = atid,
  566. flag = aflag
  567. };
  568. res_obj = obj;
  569. }
  570. string ro_json = JsonConvert.SerializeObject(res_obj);
  571. //post参数
  572. List<string> postLst = new List<string>();
  573. setParmsHead(skey, ref postLst);
  574. postLst.Add("methodName=taobao.trade.memo.update");
  575. postLst.Add("requestObjectJson=" + HttpUtility.UrlEncode(ro_json));
  576. HttpItem item = new HttpItem()
  577. {
  578. URL = api_url,
  579. Method = "POST",
  580. ContentType = "application/x-www-form-urlencoded",
  581. Postdata = string.Join("&", postLst.ToArray())
  582. };
  583. item.PostEncoding = Encoding.UTF8;
  584. HttpResult hResult = tb_http.GetHtml(item);
  585. return hResult.Html;
  586. }
  587. //开具发票
  588. public static string invoicing(string id, int comid, string clerkname, string billOrderId, int curTag, int maxCount, int isAllInfo = 0)
  589. {
  590. string sql = "select * from view_ErpBill where id=" + id;
  591. DataTable dt = DbHelper.DbConn.ExecuteDataset(sql).Tables[0];
  592. if (dt.Rows.Count <= 0)
  593. {
  594. return "error";
  595. }
  596. DataRow bill = dt.Rows[0];
  597. string sql2 = "select * from CE_ErpInvoicingInfo where id=" + comid;
  598. DataTable dt2 = DbHelper.DbConn.ExecuteDataset(sql2).Tables[0];
  599. if (dt2.Rows.Count <= 0)
  600. {
  601. return "error";
  602. }
  603. DataRow com = dt2.Rows[0];
  604. string btype = "p";
  605. if (bill["type"].ToString() == "普通发票" && bill["sendType"].ToString() == "电子发票")
  606. {
  607. btype = "p";
  608. }
  609. else if (bill["type"].ToString() == "普通发票" && bill["sendType"].ToString() == "纸质发票")
  610. {
  611. btype = "c";
  612. }
  613. else if (bill["type"].ToString() == "专用发票" && bill["sendType"].ToString() == "电子发票")
  614. {
  615. btype = "b";
  616. }
  617. else if (bill["type"].ToString() == "专用发票" && bill["sendType"].ToString() == "纸质发票")
  618. {
  619. btype = "s";
  620. }
  621. string goodsname = bill["ProductName"].ToString();
  622. if (goodsname == "不干胶")
  623. {
  624. goodsname = "不干胶贴纸";
  625. }
  626. else if (goodsname == "滴塑")
  627. {
  628. goodsname = "滴塑不干胶";
  629. }
  630. decimal totalPrice = Convert.ToDecimal(bill["price"]);
  631. decimal limitPrice = Convert.ToDecimal(com["LimitPrice"]);
  632. if (curTag < maxCount - 1)
  633. {
  634. totalPrice = limitPrice;
  635. }
  636. else
  637. {
  638. totalPrice = totalPrice - (limitPrice * curTag);
  639. }
  640. string order = "";
  641. string shId = "106020199";
  642. if (goodsname == "设计费")
  643. {
  644. shId = "304030199";
  645. }
  646. string b_phone = bill["phone"].ToString() == "0" ? "" : bill["phone"].ToString();
  647. string b_address = bill["address"].ToString() == "0" ? "" : bill["address"].ToString();
  648. string b_bankname = bill["bank"].ToString() == "0" ? "" : bill["bank"].ToString();
  649. string b_bankac = bill["bankac"].ToString() == "0" ? "" : bill["bankac"].ToString();
  650. string buyerTax = bill["tax"].ToString();
  651. if (buyerTax == "0")
  652. {
  653. buyerTax = "";
  654. }
  655. int gnum = Convert.ToInt32(bill["num"]);
  656. string b_unit = Convert.ToString(bill["unit"]);
  657. if (isAllInfo == 0)//是否开全部信息
  658. {
  659. b_phone = "";
  660. b_address = "";
  661. b_bankac = "";
  662. b_bankname = "";
  663. }
  664. decimal taxPer = Convert.ToDecimal(com["taxrate"]);
  665. string norate_str = "";
  666. if (com["taxrate"].ToString() == "0")
  667. {
  668. norate_str = "\"yhzcbs\":\"1\",\"zzstsgl\":\"免税\",\"lslbs\":\"1\",";
  669. }
  670. else
  671. {
  672. norate_str = "\"yhzcbs\":\"0\",\"zzstsgl\":\"\",\"lslbs\":\"\",";
  673. }
  674. if (gnum > 0)
  675. {
  676. decimal oPrice = totalPrice / gnum;
  677. int jj = Convert.ToInt32(oPrice * 1000000);
  678. decimal onePrice = (decimal)(jj * 1.0) / 1000000;
  679. order = "{\"identity\":\"" + com["BillKey"].ToString() + "\",\"order\":{\"buyername\":\"" + bill["title"].ToString() + "\"," +
  680. "\"taxnum\":\"" + buyerTax + "\",\"address\":\"" + b_address + "\",\"account\":\"" + b_bankname + b_bankac +
  681. "\",\"telephone\":\"" + b_phone + "\",\"orderno\":\"" + billOrderId + "\"," +
  682. "\"invoicedate\":\"" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\",\"clerk\":\"" + clerkname +
  683. "\",\"saleaccount\":\"" + com["Bank"].ToString() + com["BankAcc"].ToString() + "\",\"salephone\":\"" + com["Phone"].ToString() + "\"," +
  684. "\"saleaddress\":\"" + com["Address"].ToString() + "\",\"saletaxnum\":\"" + com["Tax"].ToString() + "\",\"kptype\":\"1\",\"message\":\"\",\"payee\":\"" + com["legal"].ToString() + "\",\"checker\":\"张丽君\"," +
  685. "\"tsfs\":\"0\",\"email\":\"" + bill["email"].ToString() + "\",\"phone\":\"" + bill["phone"].ToString() + "\",\"dkbz\":\"0\",\"invoiceLine\":\"" + btype + "\"," +
  686. "\"detail\":[{\"goodsname\":\"" + goodsname + "\",\"hsbz\":\"1\"," +
  687. "\"taxrate\":\"" + com["taxrate"].ToString() + "\"," + norate_str + "\"num\":\"" + gnum + "\",\"price\":\"" + onePrice + "\",\"spec\":\"\",\"unit\":\"" + b_unit + "\",\"spbm\":\"" + shId + "\"," +
  688. "\"zxbm\":\"\",\"fphxz\":\"0\",\"kce\":\"\"}]}}";
  689. }
  690. else
  691. {
  692. decimal t_taxPrice = totalPrice * taxPer / (1 + taxPer);
  693. int jj = Convert.ToInt32(t_taxPrice * 100);
  694. decimal taxprice = (decimal)(jj * 1.0) / 100;
  695. decimal freeprice = totalPrice - taxprice;
  696. order = "{\"identity\":\"" + com["BillKey"].ToString() + "\",\"order\":{\"buyername\":\"" + bill["title"].ToString() + "\"," +
  697. "\"taxnum\":\"" + buyerTax + "\",\"address\":\"" + b_address + "\",\"account\":\"" + b_bankname + b_bankac +
  698. "\",\"telephone\":\"" + b_phone + "\",\"orderno\":\"" + billOrderId + "\"," +
  699. "\"invoicedate\":\"" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\",\"clerk\":\"" + clerkname +
  700. "\",\"saleaccount\":\"" + com["Bank"].ToString() + com["BankAcc"].ToString() + "\",\"salephone\":\"" + com["Phone"].ToString() + "\"," +
  701. "\"saleaddress\":\"" + com["Address"].ToString() + "\",\"saletaxnum\":\"" + com["Tax"].ToString() + "\",\"kptype\":\"1\",\"message\":\"\",\"payee\":\"" + com["legal"].ToString() + "\",\"checker\":\"张丽君\"," +
  702. "\"tsfs\":\"0\",\"email\":\"" + bill["email"].ToString() + "\",\"phone\":\"" + bill["phone"].ToString() + "\",\"dkbz\":\"0\",\"invoiceLine\":\"" + btype + "\"," +
  703. "\"detail\":[{\"goodsname\":\"" + goodsname + "\",\"hsbz\":\"1\"," +
  704. "\"taxrate\":\"" + com["taxrate"].ToString() + "\"," + norate_str + "\"taxamt\":\"" + totalPrice + "\",\"taxfreeamt\":\"" + freeprice + "\",\"tax\":\"" + taxprice + "\",\"spec\":\"\",\"spbm\":\"106020199\"," +
  705. "\"zxbm\":\"\",\"fphxz\":\"0\",\"kce\":\"\"}]}}";
  706. }
  707. //post参数
  708. order = DESDZFP.Encrypt(order);
  709. //post参数
  710. List<string> postLst = new List<string>();
  711. postLst.Add("order=" + order);
  712. HttpItem item = new HttpItem()
  713. {
  714. URL = "https://nnfp.jss.com.cn/shop/buyer/allow/cxfKp/cxfServerKpOrderSync.action",
  715. Method = "POST",
  716. ContentType = "application/x-www-form-urlencoded",
  717. Postdata = string.Join("&", postLst.ToArray())
  718. };
  719. HttpResult hResult = tb_http.GetHtml(item);
  720. return hResult.Html;
  721. }
  722. //查询电子发票
  723. public static string get_invoicing(string id, string billOrderId)
  724. {
  725. string sql = "select * from view_ErpBill where id=" + id;
  726. DataTable dt = DbHelper.DbConn.ExecuteDataset(sql).Tables[0];
  727. if (dt.Rows.Count <= 0)
  728. {
  729. return "error";
  730. }
  731. DataRow bill = dt.Rows[0];
  732. string order = "{\"identity\":\"" + bill["BillKey"].ToString() + "\",\"orderno\":[\"" + billOrderId + "\"]}";
  733. order = DESDZFP.Encrypt(order);
  734. //post参数
  735. List<string> postLst = new List<string>();
  736. postLst.Add("order=" + order);
  737. HttpItem item = new HttpItem()
  738. {
  739. URL = "https://nnfp.jss.com.cn/shop/buyer/allow/ecOd/queryElectricKp.action",
  740. Method = "POST",
  741. ContentType = "application/x-www-form-urlencoded",
  742. Postdata = string.Join("&", postLst.ToArray())
  743. };
  744. HttpResult hResult = tb_http.GetHtml(item);
  745. return hResult.Html;
  746. }
  747. //作废发票
  748. public static string cancel_invoicing(int id)
  749. {
  750. string sql = "select * from view_ErpBill where id=" + id;
  751. DataTable dt = DbHelper.DbConn.ExecuteDataset(sql).Tables[0];
  752. if (dt.Rows.Count <= 0)
  753. {
  754. return "error";
  755. }
  756. DataRow bill = dt.Rows[0];
  757. string order = "{\"identity\":\"" + bill["BillKey"].ToString() + "\",\"order\": {\"fpdm\":\"" + bill["fpdm"].ToString() + "\"," +
  758. "\"fphm\":\"" + bill["fphm"].ToString() + "\",\"fpqqlsh\":\"" + bill["fplsh"].ToString() + "\"}} "; ;
  759. order = DESDZFP.Encrypt(order);
  760. //post参数
  761. List<string> postLst = new List<string>();
  762. postLst.Add("order=" + order);
  763. HttpItem item = new HttpItem()
  764. {
  765. URL = "https://nnfp.jss.com.cn/shop/buyer/allow/cxfKp/invalidInvoice.action",
  766. Method = "POST",
  767. ContentType = "application/x-www-form-urlencoded",
  768. Postdata = string.Join("&", postLst.ToArray())
  769. };
  770. HttpResult hResult = tb_http.GetHtml(item);
  771. return hResult.Html;
  772. }
  773. //发票红冲 红字发票
  774. public static string invoicing_red(int id, string clerkname, string billOrderId, string curfpdm, string curfphm, int curTag, int maxCount)
  775. {
  776. string sql = "select * from view_ErpBill where id=" + id;
  777. DataTable dt = DbHelper.DbConn.ExecuteDataset(sql).Tables[0];
  778. if (dt.Rows.Count <= 0)
  779. {
  780. return "error";
  781. }
  782. DataRow bill = dt.Rows[0];
  783. string sql2 = "select * from CE_ErpInvoicingInfo where id=" + Convert.ToInt32(bill["comId"]);
  784. DataTable dt2 = DbHelper.DbConn.ExecuteDataset(sql2).Tables[0];
  785. if (dt2.Rows.Count <= 0)
  786. {
  787. return "error";
  788. }
  789. DataRow com = dt2.Rows[0];
  790. string goodsname = bill["ProductName"].ToString();
  791. if (goodsname == "不干胶")
  792. {
  793. goodsname = "不干胶贴纸";
  794. }
  795. else if (goodsname == "滴塑")
  796. {
  797. goodsname = "滴塑不干胶";
  798. }
  799. decimal totalPrice = Convert.ToDecimal(bill["price"]);
  800. string shId = "106020199";
  801. if (goodsname == "设计费")
  802. {
  803. shId = "304030199";
  804. }
  805. decimal limitPrice = Convert.ToDecimal(com["LimitPrice"]);
  806. if (curTag < maxCount - 1)
  807. {
  808. totalPrice = limitPrice;
  809. }
  810. else
  811. {
  812. totalPrice = totalPrice - (limitPrice * curTag);
  813. }
  814. //decimal fprice = totalPrice - (totalPrice * Convert.ToDecimal(com["taxrate"]));
  815. //int j = Convert.ToInt32(fprice * 100);
  816. //decimal freeprice = (decimal)(j*1.0)/100;
  817. //decimal tprice = totalPrice - freeprice;
  818. //int jj = Convert.ToInt32(tprice * 100);
  819. //decimal taxprice = (decimal)(jj*1.0)/100;
  820. string msg = "对应正数发票代码:" + curfpdm + "号码:" + curfphm;
  821. string btype = "p";
  822. if (bill["type"].ToString() == "普通发票" && bill["sendType"].ToString() == "电子发票")
  823. {
  824. btype = "p";
  825. }
  826. else if (bill["type"].ToString() == "普通发票" && bill["sendType"].ToString() == "纸质发票")
  827. {
  828. btype = "c";
  829. }
  830. else if (bill["type"].ToString() == "专用发票" && bill["sendType"].ToString() == "电子发票")
  831. {
  832. btype = "b";
  833. }
  834. else if (bill["type"].ToString() == "专用发票" && bill["sendType"].ToString() == "纸质发票")
  835. {
  836. btype = "s";
  837. }
  838. string order = "";
  839. int gnum = Convert.ToInt32(bill["num"]);
  840. string b_phone = bill["phone"].ToString() == "0" ? "" : bill["phone"].ToString();
  841. string b_address = bill["address"].ToString() == "0" ? "" : bill["address"].ToString();
  842. string b_bankac = bill["bankac"].ToString() == "0" ? "" : bill["bankac"].ToString();
  843. string b_unit = Convert.ToString(bill["unit"]);
  844. string buyerTax = bill["tax"].ToString();
  845. if (buyerTax == "0")
  846. {
  847. buyerTax = "";
  848. }
  849. decimal taxPer = Convert.ToDecimal(com["taxrate"]);
  850. string norate_str = "";
  851. if (com["taxrate"].ToString() == "0")
  852. {
  853. norate_str = "\"yhzcbs\":\"1\",\"zzstsgl\":\"免税\",\"lslbs\":\"1\",";
  854. }
  855. else
  856. {
  857. norate_str = "\"yhzcbs\":\"0\",\"zzstsgl\":\"\",\"lslbs\":\"\",";
  858. }
  859. if (gnum > 0)
  860. {
  861. decimal oPrice = totalPrice / gnum;
  862. int jj = Convert.ToInt32(oPrice * 1000000);
  863. decimal onePrice = (decimal)(jj * 1.0) / 1000000;
  864. order = "{\"identity\":\"" + com["BillKey"].ToString() + "\",\"order\":{\"buyername\":\"" + bill["title"].ToString() + "\"," +
  865. "\"taxnum\":\"" + buyerTax + "\",\"address\":\"" + "" + "\",\"account\":\"" + "" +
  866. "\",\"telephone\":\"" + "" + "\",\"orderno\":\"" + billOrderId + "\"," +
  867. "\"invoicedate\":\"" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\",\"clerk\":\"" + clerkname +
  868. "\",\"saleaccount\":\"" + com["Bank"].ToString() + com["BankAcc"].ToString() + "\",\"salephone\":\"" + com["Phone"].ToString() + "\"," +
  869. "\"saleaddress\":\"" + com["Address"].ToString() + "\",\"saletaxnum\":\"" + com["Tax"].ToString() + "\",\"kptype\":\"2\",\"message\":\"" + msg + "\",\"fphm\":\"" + curfphm + "\" ,\"fpdm\":\"" + curfpdm + "\" ," +
  870. "\"payee\":\"" + com["legal"].ToString() + "\",\"checker\":\"张丽君\"," +
  871. "\"tsfs\":\"0\",\"email\":\"" + bill["email"].ToString() + "\",\"phone\":\"" + bill["phone"].ToString() + "\",\"dkbz\":\"0\",\"invoiceLine\":\"" + btype + "\"," +
  872. "\"detail\":[{\"goodsname\":\"" + goodsname + "\",\"hsbz\":\"1\"," +
  873. "\"taxrate\":\"" + com["taxrate"].ToString() + "\"," + norate_str + "\"num\":\"" + (gnum * -1) + "\",\"price\":\"" + onePrice + "\",\"spec\":\"\",\"unit\":\"" + b_unit + "\",\"spbm\":\"" + shId + "\"," +
  874. "\"zxbm\":\"\",\"fphxz\":\"0\",\"kce\":\"\"}]}}";
  875. }
  876. else
  877. {
  878. decimal t_taxPrice = totalPrice * taxPer / (1 + taxPer);
  879. int jj = Convert.ToInt32(t_taxPrice * 100);
  880. decimal taxprice = (decimal)(jj * 1.0) / 100;
  881. decimal freeprice = totalPrice - taxprice;
  882. order = "{\"identity\":\"" + com["BillKey"].ToString() + "\",\"order\":{\"buyername\":\"" + bill["title"].ToString() + "\"," +
  883. "\"taxnum\":\"" + buyerTax + "\",\"address\":\"" + "" + "\",\"account\":\"" + "" +
  884. "\",\"telephone\":\"" + "" + "\",\"orderno\":\"" + billOrderId + "\"," +
  885. "\"invoicedate\":\"" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\",\"clerk\":\"" + clerkname +
  886. "\",\"saleaccount\":\"" + com["Bank"].ToString() + com["BankAcc"].ToString() + "\",\"salephone\":\"" + com["Phone"].ToString() + "\"," +
  887. "\"saleaddress\":\"" + com["Address"].ToString() + "\",\"saletaxnum\":\"" + com["Tax"].ToString() + "\",\"kptype\":\"2\",\"message\":\"" + msg + "\",\"fphm\":\"" + curfphm + "\" ,\"fpdm\":\"" + curfpdm + "\" ," +
  888. "\"payee\":\"" + com["legal"].ToString() + "\",\"checker\":\"张丽君\"," +
  889. "\"tsfs\":\"0\",\"email\":\"" + bill["email"].ToString() + "\",\"phone\":\"" + bill["phone"].ToString() + "\",\"dkbz\":\"0\",\"invoiceLine\":\"" + btype + "\"," +
  890. "\"detail\":[{\"goodsname\":\"" + goodsname + "\",\"hsbz\":\"1\"," +
  891. "\"taxrate\":\"" + com["taxrate"].ToString() + "\"," + norate_str + "\"taxamt\":\"" + (totalPrice * -1) + "\",\"taxfreeamt\":\"" + (freeprice * -1) + "\",\"tax\":\"" + (taxprice * -1) + "\",\"spec\":\"\",\"spbm\":\"106020199\"," +
  892. "\"zxbm\":\"\",\"fphxz\":\"0\",\"kce\":\"\"}]}}";
  893. }
  894. //post参数
  895. order = DESDZFP.Encrypt(order);
  896. //post参数
  897. List<string> postLst = new List<string>();
  898. postLst.Add("order=" + order);
  899. HttpItem item = new HttpItem()
  900. {
  901. URL = "https://nnfp.jss.com.cn/shop/buyer/allow/cxfKp/cxfServerKpOrderSync.action",
  902. Method = "POST",
  903. ContentType = "application/x-www-form-urlencoded",
  904. Postdata = string.Join("&", postLst.ToArray())
  905. };
  906. HttpResult hResult = tb_http.GetHtml(item);
  907. return hResult.Html;
  908. }
  909. public static string cainiao_test(string sessionKey)
  910. {
  911. //json参数
  912. /*var res_obj = new
  913. {
  914. tid = orderid,
  915. company_code = comCode,
  916. out_sid = outSid
  917. };
  918. string ro_json = JsonConvert.SerializeObject(res_obj);
  919. */
  920. //post参数
  921. List<string> postLst = new List<string>();
  922. setParmsHead(sessionKey, ref postLst);
  923. postLst.Add("methodName=cainiao.cloudprint.stdtemplates.get");
  924. //postLst.Add("base64=1");
  925. postLst.Add("requestObjectJson={}");
  926. HttpItem item = new HttpItem()
  927. {
  928. URL = api_url,
  929. Method = "POST",
  930. ContentType = "application/x-www-form-urlencoded",
  931. Postdata = string.Join("&", postLst.ToArray())
  932. };
  933. HttpResult hResult = tb_http.GetHtml(item);
  934. return hResult.Html;
  935. }
  936. public static string test()
  937. {
  938. HttpItem item = new HttpItem()
  939. {
  940. URL = "http://localhost:911/data/demo_print.txt",
  941. Encoding = Encoding.UTF8,
  942. ContentType = "application/json"
  943. };
  944. HttpResult hResult = tb_http.GetHtml(item);
  945. return hResult.Html.Replace("\r\n", "").Replace("\t", "");
  946. }
  947. }
  948. }