1 | ;
|
2 |
|
3 | var util = require('./util');
|
4 | var wrapper = util.wrapper;
|
5 | var postJSON = util.postJSON;
|
6 |
|
7 | /**
|
8 | * 根据订单Id获取订单详情
|
9 | * 详细请看:<http://mp.weixin.qq.com/wiki/8/703923b7349a607f13fb3100163837f0.html>
|
10 | * Examples:
|
11 | * ```
|
12 | * api.getOrderById(orderId, callback);
|
13 | * ```
|
14 | * Callback:
|
15 | *
|
16 | * - `err`, 调用失败时得到的异常
|
17 | * - `result`, 调用正常时得到的对象
|
18 | *
|
19 | * Result:
|
20 | * ```
|
21 | * {
|
22 | * "errcode": 0,
|
23 | * "errmsg": "success",
|
24 | * "order": {
|
25 | * "order_id": "7197417460812533543",
|
26 | * "order_status": 6,
|
27 | * "order_total_price": 6,
|
28 | * "order_create_time": 1394635817,
|
29 | * "order_express_price": 5,
|
30 | * "buyer_openid": "oDF3iY17NsDAW4UP2qzJXPsz1S9Q",
|
31 | * "buyer_nick": "likeacat",
|
32 | * "receiver_name": "张小猫",
|
33 | * "receiver_province": "广东省",
|
34 | * "receiver_city": "广州市",
|
35 | * "receiver_address": "华景路一号南方通信大厦5楼",
|
36 | * "receiver_mobile": "123456789",
|
37 | * "receiver_phone": "123456789",
|
38 | * "product_id": "pDF3iYx7KDQVGzB7kDg6Tge5OKFo",
|
39 | * "product_name": "安莉芳E-BRA专柜女士舒适内衣蕾丝3/4薄杯聚拢上托性感文胸KB0716",
|
40 | * "product_price": 1,
|
41 | * "product_sku": "10000983:10000995;10001007:10001010",
|
42 | * "product_count": 1,
|
43 | * "product_img": "http://img2.paipaiimg.com/00000000/item-52B87243-63CCF66C00000000040100003565C1EA.0.300x300.jpg",
|
44 | * "delivery_id": "1900659372473",
|
45 | * "delivery_company": "059Yunda",
|
46 | * "trans_id": "1900000109201404103172199813"
|
47 | * }
|
48 | * }
|
49 | * ```
|
50 | * @param {String} orderId 订单Id
|
51 | * @param {Function} callback 回调函数
|
52 | */
|
53 | exports.getOrderById = function (orderId, callback) {
|
54 | this.preRequest(this._getOrderById, arguments);
|
55 | };
|
56 |
|
57 | /*!
|
58 | * 根据订单ID获取订单详情的未封装版本
|
59 | */
|
60 | exports._getOrderById = function (orderId, callback) {
|
61 | var data = {
|
62 | 'order_id': orderId
|
63 | };
|
64 | var url = this.endpoint + '/merchant/order/getbyid?access_token=' + this.token.accessToken;
|
65 | this.request(url, postJSON(data), wrapper(callback));
|
66 | };
|
67 |
|
68 | /**
|
69 | * 根据订单状态/创建时间获取订单详情
|
70 | * 详细请看:<http://mp.weixin.qq.com/wiki/8/703923b7349a607f13fb3100163837f0.html>
|
71 | * Examples:
|
72 | * ```
|
73 | * api.getOrdersByStatus([status,] [beginTime,] [endTime,] callback);
|
74 | * ```
|
75 | * Usage:
|
76 | * 当只传入callback参数时,查询所有状态,所有时间的订单
|
77 | * 当传入两个参数,第一个参数为Number类型,第二个参数为callback时,查询指定状态,所有时间的订单
|
78 | * 当传入两个参数,第一个参数为Date类型,第二个参数为callback时,查询所有状态,指定订单创建起始时间的订单(待测试)
|
79 | * 当传入三个参数,第一参数为订单状态码,第二参数为订单创建起始时间,第三参数为callback
|
80 | * 当传入四个参数,第一参数为订单状态码,第二参数为订单创建起始时间,第三参数为订单创建终止时间,第四参数为callback
|
81 | * Callback:
|
82 | *
|
83 | * - `err`, 调用失败时得到的异常
|
84 | * - `result`, 调用正常时得到的对象
|
85 | *
|
86 | * Result:
|
87 | * ```
|
88 | * {
|
89 | * "errcode": 0,
|
90 | * "errmsg": "success",
|
91 | * "order_list": [
|
92 | * {
|
93 | * "order_id": "7197417460812533543",
|
94 | * "order_status": 6,
|
95 | * "order_total_price": 6,
|
96 | * "order_create_time": 1394635817,
|
97 | * "order_express_price": 5,
|
98 | * "buyer_openid": "oDF3iY17NsDAW4UP2qzJXPsz1S9Q",
|
99 | * "buyer_nick": "likeacat",
|
100 | * "receiver_name": "张小猫",
|
101 | * "receiver_province": "广东省",
|
102 | * "receiver_city": "广州市",
|
103 | * "receiver_address": "华景路一号南方通信大厦5楼",
|
104 | * "receiver_mobile": "123456",
|
105 | * "receiver_phone": "123456",
|
106 | * "product_id": "pDF3iYx7KDQVGzB7kDg6Tge5OKFo",
|
107 | * "product_name": "安莉芳E-BRA专柜女士舒适内衣蕾丝3/4薄杯聚拢上托性感文胸KB0716",
|
108 | * "product_price": 1,
|
109 | * "product_sku": "10000983:10000995;10001007:10001010",
|
110 | * "product_count": 1,
|
111 | * "product_img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2icND8WwMThBEcehjhDv2icY4GrDSG5RLM3B2qd9kOicWGVJcsAhvXfibhWRNoGOvCfMC33G9z5yQr2Qw/0",
|
112 | * "delivery_id": "1900659372473",
|
113 | * "delivery_company": "059Yunda",
|
114 | * "trans_id": "1900000109201404103172199813"
|
115 | * },
|
116 | * {
|
117 | * "order_id": "7197417460812533569",
|
118 | * "order_status": 8,
|
119 | * "order_total_price": 1,
|
120 | * "order_create_time": 1394636235,
|
121 | * "order_express_price": 0,
|
122 | * "buyer_openid": "oDF3iY17NsDAW4UP2qzJXPsz1S9Q",
|
123 | * "buyer_nick": "likeacat",
|
124 | * "receiver_name": "张小猫",
|
125 | * "receiver_province": "广东省",
|
126 | * "receiver_city": "广州市",
|
127 | * "receiver_address": "华景路一号南方通信大厦5楼",
|
128 | * "receiver_mobile": "123456",
|
129 | * "receiver_phone": "123456",
|
130 | * "product_id": "pDF3iYx7KDQVGzB7kDg6Tge5OKFo",
|
131 | * "product_name": "项坠333",
|
132 | * "product_price": 1,
|
133 | * "product_sku": "1075741873:1079742377",
|
134 | * "product_count": 1,
|
135 | * "product_img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2icND8WwMThBEcehjhDv2icY4GrDSG5RLM3B2qd9kOicWGVJcsAhvXfibhWRNoGOvCfMC33G9z5yQr2Qw/0",
|
136 | * "delivery_id": "1900659372473",
|
137 | * "delivery_company": "059Yunda",
|
138 | * "trans_id": "1900000109201404103172199813"
|
139 | * }
|
140 | * ]
|
141 | * }
|
142 | * ```
|
143 | * @param {Number} status 状态码。(无此参数-全部状态, 2-待发货, 3-已发货, 5-已完成, 8-维权中)
|
144 | * @param {Date} beginTime 订单创建时间起始时间。(无此参数则不按照时间做筛选)
|
145 | * @param {Date} endTime 订单创建时间终止时间。(无此参数则不按照时间做筛选)
|
146 | * @param {Function} callback 回调函数
|
147 | */
|
148 | exports.getOrdersByStatus = function () {
|
149 | this.preRequest(this._getOrdersByStatus, arguments);
|
150 | };
|
151 |
|
152 | /*!
|
153 | * 根据订单状态/创建时间获取订单详情的未封装版本
|
154 | */
|
155 | exports._getOrdersByStatus = function (status, beginTime, endTime, callback) {
|
156 | var data = {};
|
157 | if (arguments.length === 1 && typeof status === 'function') {
|
158 | // (callback);
|
159 | callback = status;
|
160 | } else if (arguments.length === 2 && typeof beginTime === 'function') {
|
161 | callback = beginTime;
|
162 | if (typeof status === 'number') {
|
163 | // (status, callback)
|
164 | data.status = status;
|
165 | } else if (status instanceof Date) {
|
166 | data.begintime = Math.round(status.getTime() / 1000);
|
167 | data.endtime = Math.round(new Date().getTime() / 1000);
|
168 | } else {
|
169 | throw new Error('first parameter must be Number or Date');
|
170 | }
|
171 | } else if (arguments.length === 3 && typeof endTime === 'function') {
|
172 | callback = endTime;
|
173 | if (typeof status === 'number' && beginTime instanceof Date) {
|
174 | data.status = status;
|
175 | data.begintime = Math.round(beginTime.getTime() / 1000);
|
176 | data.endtime = Math.round(new Date().getTime() / 1000);
|
177 | } else {
|
178 | throw new Error('first parameter must be Number and second parameter must be Date');
|
179 | }
|
180 | } else if (arguments.length === 4) {
|
181 | data.status = status;
|
182 | data.begintime = Math.round(beginTime.getTime() / 1000);
|
183 | data.endtime = Math.round(endTime.getTime() / 1000);
|
184 | }
|
185 | var url = this.endpoint + '/merchant/order/getbyfilter?access_token=' + this.token.accessToken;
|
186 | this.request(url, postJSON(data), wrapper(callback));
|
187 | };
|
188 |
|
189 | /**
|
190 | * 设置订单发货信息
|
191 | * 详细请看:<http://mp.weixin.qq.com/wiki/8/703923b7349a607f13fb3100163837f0.html>
|
192 | * Examples:
|
193 | * ```
|
194 | * api.setExpressForOrder(orderId, deliveryCompany, deliveryTrackNo, callback);
|
195 | * ```
|
196 | * Callback:
|
197 | *
|
198 | * - `err`, 调用失败时得到的异常
|
199 | * - `result`, 调用正常时得到的对象
|
200 | *
|
201 | * Result:
|
202 | * ```
|
203 | * {
|
204 | * "errcode": 0,
|
205 | * "errmsg": "success"
|
206 | * }
|
207 | * ```
|
208 | * @param {String} orderId 订单Id
|
209 | * @param {String} deliveryCompany 物流公司 (物流公司Id请参考微信小店API手册)
|
210 | * @param {String} deliveryTrackNo 运单Id
|
211 | * @param {Function} callback 回调函数
|
212 | */
|
213 | exports.setExpressForOrder = function (orderId, deliveryCompany, deliveryTrackNo, callback) {
|
214 | this.preRequest(this._setExpressForOrder, arguments);
|
215 | };
|
216 |
|
217 | /*!
|
218 | * 设置订单发货信息的未封装版本
|
219 | */
|
220 | exports._setExpressForOrder = function (orderId, deliveryCompany, deliveryTrackNo, callback) {
|
221 | var data = {
|
222 | 'order_id': orderId,
|
223 | 'delivery_company': deliveryCompany,
|
224 | 'delivery_track_no': deliveryTrackNo
|
225 | };
|
226 | var url = this.endpoint + '/merchant/order/setdelivery?access_token=' + this.token.accessToken;
|
227 | this.request(url, postJSON(data), wrapper(callback));
|
228 | };
|
229 |
|
230 | /**
|
231 | * 关闭订单
|
232 | * 详细请看:<http://mp.weixin.qq.com/wiki/8/703923b7349a607f13fb3100163837f0.html>
|
233 | * Examples:
|
234 | * ```
|
235 | * api.closeOrder(orderId, callback);
|
236 | * ```
|
237 | * Callback:
|
238 | *
|
239 | * - `err`, 调用失败时得到的异常
|
240 | * - `result`, 调用正常时得到的对象
|
241 | *
|
242 | * Result:
|
243 | * ```
|
244 | * {
|
245 | * "errcode": 0,
|
246 | * "errmsg": "success"
|
247 | * }
|
248 | * ```
|
249 | * @param {String} orderId 订单Id
|
250 | * @param {Function} callback 回调函数
|
251 | */
|
252 | exports.closeOrder = function (orderId, callback) {
|
253 | this.preRequest(this._closeOrder, arguments);
|
254 | };
|
255 |
|
256 | /*!
|
257 | * 关闭订单的未封装版本
|
258 | */
|
259 | exports._closeOrder = function (orderId, callback) {
|
260 | var data = {
|
261 | 'order_id': orderId
|
262 | };
|
263 | var url = this.endpoint + '/merchant/order/close?access_token=' + this.token.accessToken;
|
264 | this.request(url, postJSON(data), wrapper(callback));
|
265 | };
|