UNPKG

9.39 kBJavaScriptView Raw
1'use strict';
2
3var util = require('./util');
4var wrapper = util.wrapper;
5var 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 */
53exports.getOrderById = function (orderId, callback) {
54 this.preRequest(this._getOrderById, arguments);
55};
56
57/*!
58 * 根据订单ID获取订单详情的未封装版本
59 */
60exports._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 */
148exports.getOrdersByStatus = function () {
149 this.preRequest(this._getOrdersByStatus, arguments);
150};
151
152/*!
153 * 根据订单状态/创建时间获取订单详情的未封装版本
154 */
155exports._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 */
213exports.setExpressForOrder = function (orderId, deliveryCompany, deliveryTrackNo, callback) {
214 this.preRequest(this._setExpressForOrder, arguments);
215};
216
217/*!
218 * 设置订单发货信息的未封装版本
219 */
220exports._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 */
252exports.closeOrder = function (orderId, callback) {
253 this.preRequest(this._closeOrder, arguments);
254};
255
256/*!
257 * 关闭订单的未封装版本
258 */
259exports._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};