ProductAPI.cs 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net.Http;
  6. using Codeplex.Data;
  7. namespace LYFZ.Weixin.SDK.Shop
  8. {
  9. /// <summary>
  10. /// 商品管理
  11. /// </summary>
  12. public class ProductAPI
  13. {
  14. /// <summary>
  15. ///
  16. /// </summary>
  17. /// <param name="access_token"></param>
  18. /// <param name="content">
  19. /// 参见官方文档
  20. /// </param>
  21. /// <returns>
  22. /// {
  23. ///"errcode": 0,
  24. ///"errmsg": "success",
  25. ///"product_id": "pDF3iYwktviE3BzU3BKiSWWi9Nkw"
  26. /// }
  27. /// </returns>
  28. public static dynamic Create(string access_token, dynamic content)
  29. {
  30. var client = new HttpClient();
  31. var result = client.PostAsync(string.Format("https://api.weixin.qq.com/merchant/create?access_token={0}", access_token),
  32. new StringContent(DynamicJson.Serialize(content))).Result;
  33. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  34. }
  35. /// <summary>
  36. /// 删除商品
  37. /// </summary>
  38. /// <param name="access_token"></param>
  39. /// <param name="product_id">商品ID</param>
  40. /// <returns>
  41. /// {
  42. ///"errcode":0,
  43. ///"errmsg":"success"
  44. ///}
  45. ///</returns>
  46. public static dynamic Delete(string access_token, string product_id)
  47. {
  48. var client = new HttpClient();
  49. var content = new StringBuilder();
  50. content.Append("{")
  51. .Append('"' + "product_id" + '"' + ": " + '"' + product_id + '"')
  52. .Append("}");
  53. var result = client.PostAsync(string.Format("https://api.weixin.qq.com/merchant/del?access_token={0}", access_token),
  54. new StringContent(content.ToString())).Result;
  55. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  56. }
  57. /// <summary>
  58. /// 修改商品
  59. ///
  60. /// 备注:
  61. /// 1.product_id表示要更新的商品的ID,其他字段说明请参考增加商品接口。
  62. ///2.从未上架的商品所有信息均可修改,否则商品的名称(name)、商品分类(category)、商品属性(property)这三个字段不可修改。
  63. /// </summary>
  64. /// <param name="access_token"></param>
  65. /// <param name="content"></param>
  66. /// <returns>
  67. /// {
  68. /// "errcode":0,
  69. /// "errmsg":"success"
  70. /// }
  71. /// </returns>
  72. public static dynamic Update(string access_token, dynamic content)
  73. {
  74. var client = new HttpClient();
  75. var result = client.PostAsync(string.Format("https://api.weixin.qq.com/merchant/update?access_token={0}", access_token),
  76. new StringContent(DynamicJson.Serialize(content))).Result;
  77. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  78. }
  79. /// <summary>
  80. /// 查询
  81. /// </summary>
  82. /// <param name="access_token"></param>
  83. /// <param name="product_id"></param>
  84. /// <returns>
  85. /// 商品详细信息,
  86. /// 具体请参见官方文档</returns>
  87. public static dynamic Get(string access_token, string product_id)
  88. {
  89. var client = new HttpClient();
  90. var content = new StringBuilder();
  91. content.Append("{")
  92. .Append('"' + "product_id" + '"' + ": " + '"' + product_id + '"')
  93. .Append("}");
  94. var result = client.PostAsync(string.Format("https://api.weixin.qq.com/merchant/get?access_token={0}", access_token),
  95. new StringContent(content.ToString())).Result;
  96. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  97. }
  98. /// <summary>
  99. /// 获取指定状态的所有商品
  100. /// </summary>
  101. /// <param name="access_token"></param>
  102. /// <param name="status">
  103. /// 商品状态(0-全部, 1-上架, 2-下架)
  104. /// </param>
  105. /// <returns>
  106. /// 商品列表信息,
  107. /// 具体请参见官方文档</returns>
  108. public static dynamic GetByStatus(string access_token, int status)
  109. {
  110. var client = new HttpClient();
  111. var content = new StringBuilder();
  112. content.Append("{")
  113. .Append('"' + "status" + '"' + ": " + status)
  114. .Append("}");
  115. var result = client.PostAsync(string.Format("https://api.weixin.qq.com/merchant/getbystatus?access_token={0}", access_token),
  116. new StringContent(content.ToString())).Result;
  117. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  118. }
  119. /// <summary>
  120. /// 商品上下架
  121. /// </summary>
  122. /// <param name="access_token"></param>
  123. /// <param name="product_id">商品id</param>
  124. /// <param name="status">
  125. /// 商品上下架标识(0-下架, 1-上架)
  126. /// </param>
  127. /// <returns>
  128. /// {
  129. ///"errcode":0,
  130. ///"errmsg":"success"
  131. ///}
  132. /// </returns>
  133. public static dynamic UpdateStatus(string access_token, string product_id, int status)
  134. {
  135. var client = new HttpClient();
  136. var content = new StringBuilder();
  137. content.Append("{")
  138. .Append('"' + "product_id" + '"' + ": " + '"' + product_id + '"').Append(",")
  139. .Append('"' + "status" + '"' + ": " + status)
  140. .Append("}");
  141. var result = client.PostAsync(string.Format("https://api.weixin.qq.com/merchant/modproductstatus?access_token={0}", access_token),
  142. new StringContent(content.ToString())).Result;
  143. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  144. }
  145. /// <summary>
  146. /// 获取指定分类的所有子分类
  147. /// </summary>
  148. /// <param name="access_token"></param>
  149. /// <param name="cate_id"></param>
  150. /// <returns></returns>
  151. public static dynamic GetSubByCategory(string access_token, string cate_id)
  152. {
  153. var client = new HttpClient();
  154. var content = new StringBuilder();
  155. content.Append("{")
  156. .Append('"' + "cate_id" + '"' + ": " + cate_id)
  157. .Append("}");
  158. var result = client.PostAsync(string.Format("https://api.weixin.qq.com/merchant/category/getsub?access_token={0}", access_token),
  159. new StringContent(content.ToString())).Result;
  160. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  161. }
  162. /// <summary>
  163. /// 获取指定子分类的所有SKU
  164. /// </summary>
  165. /// <param name="access_token"></param>
  166. /// <param name="cate_id">分类id</param>
  167. /// <returns></returns>
  168. public static dynamic GetSKUByCategory(string access_token, string cate_id)
  169. {
  170. var client = new HttpClient();
  171. var content = new StringBuilder();
  172. content.Append("{")
  173. .Append('"' + "cate_id" + '"' + ": " + cate_id)
  174. .Append("}");
  175. var result = client.PostAsync(string.Format("https://api.weixin.qq.com/merchant/category/getsku?access_token={0}", access_token),
  176. new StringContent(content.ToString())).Result;
  177. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  178. }
  179. /// <summary>
  180. /// 获取指定分类的所有属性
  181. /// </summary>
  182. /// <param name="access_token"></param>
  183. /// <param name="cate_id"></param>
  184. /// <returns></returns>
  185. public static dynamic GetPropertiesByCategory(string access_token, string cate_id)
  186. {
  187. var client = new HttpClient();
  188. var content = new StringBuilder();
  189. content.Append("{")
  190. .Append('"' + "cate_id" + '"' + ": " + cate_id)
  191. .Append("}");
  192. var result = client.PostAsync(string.Format("https://api.weixin.qq.com/merchant/category/getproperty?access_token={0}", access_token),
  193. new StringContent(content.ToString())).Result;
  194. return DynamicJson.Parse(result.Content.ReadAsStringAsync().Result);
  195. }
  196. }
  197. }