UNPKG

co-wechat-api

Version:

微信公共平台Node库API,ES6版本

245 lines (237 loc) 8.71 kB
'use strict'; const { postJSON } = require('./util'); /** * 根据订单Id获取订单详情 * 详细请看:<http://mp.weixin.qq.com/wiki/index.php?title=微信小店接口> * Examples: * ``` * api.getOrderById(orderId); * ``` * Result: * ``` * { * "errcode": 0, * "errmsg": "success", * "order": { * "order_id": "7197417460812533543", * "order_status": 6, * "order_total_price": 6, * "order_create_time": 1394635817, * "order_express_price": 5, * "buyer_openid": "oDF3iY17NsDAW4UP2qzJXPsz1S9Q", * "buyer_nick": "likeacat", * "receiver_name": "张小猫", * "receiver_province": "广东省", * "receiver_city": "广州市", * "receiver_address": "华景路一号南方通信大厦5楼", * "receiver_mobile": "123456789", * "receiver_phone": "123456789", * "product_id": "pDF3iYx7KDQVGzB7kDg6Tge5OKFo", * "product_name": "安莉芳E-BRA专柜女士舒适内衣蕾丝3/4薄杯聚拢上托性感文胸KB0716", * "product_price": 1, * "product_sku": "10000983:10000995;10001007:10001010", * "product_count": 1, * "product_img": "http://img2.paipaiimg.com/00000000/item-52B87243-63CCF66C00000000040100003565C1EA.0.300x300.jpg", * "delivery_id": "1900659372473", * "delivery_company": "059Yunda", * "trans_id": "1900000109201404103172199813" * } * } * ``` * @param {String} orderId 订单Id */ exports.getOrderById = async function (orderId) { const { accessToken } = await this.ensureAccessToken(); var data = { 'order_id': orderId }; var url = this.merchantPrefix + 'order/getbyid?access_token=' + accessToken; return this.request(url, postJSON(data)); }; /** * 根据订单状态/创建时间获取订单详情 * 详细请看:<http://mp.weixin.qq.com/wiki/index.php?title=微信小店接口> * Examples: * ``` * api.getOrdersByStatus([status,] [beginTime,] [endTime,]); * ``` * Usage: * 当只传入callback参数时,查询所有状态,所有时间的订单 * 当传入一个参数,参数为Number类型,查询指定状态,所有时间的订单 * 当传入一个参数,参数为Date类型,查询所有状态,指定订单创建起始时间的订单(待测试) * 当传入二个参数,第一参数为订单状态码,第二参数为订单创建起始时间 * 当传入三个参数,第一参数为订单状态码,第二参数为订单创建起始时间,第三参数为订单创建终止时间 * Result: * ``` * { * "errcode": 0, * "errmsg": "success", * "order_list": [ * { * "order_id": "7197417460812533543", * "order_status": 6, * "order_total_price": 6, * "order_create_time": 1394635817, * "order_express_price": 5, * "buyer_openid": "oDF3iY17NsDAW4UP2qzJXPsz1S9Q", * "buyer_nick": "likeacat", * "receiver_name": "张小猫", * "receiver_province": "广东省", * "receiver_city": "广州市", * "receiver_address": "华景路一号南方通信大厦5楼", * "receiver_mobile": "123456", * "receiver_phone": "123456", * "product_id": "pDF3iYx7KDQVGzB7kDg6Tge5OKFo", * "product_name": "安莉芳E-BRA专柜女士舒适内衣蕾丝3/4薄杯聚拢上托性感文胸KB0716", * "product_price": 1, * "product_sku": "10000983:10000995;10001007:10001010", * "product_count": 1, * "product_img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2icND8WwMThBEcehjhDv2icY4GrDSG5RLM3B2qd9kOicWGVJcsAhvXfibhWRNoGOvCfMC33G9z5yQr2Qw/0", * "delivery_id": "1900659372473", * "delivery_company": "059Yunda", * "trans_id": "1900000109201404103172199813" * }, * { * "order_id": "7197417460812533569", * "order_status": 8, * "order_total_price": 1, * "order_create_time": 1394636235, * "order_express_price": 0, * "buyer_openid": "oDF3iY17NsDAW4UP2qzJXPsz1S9Q", * "buyer_nick": "likeacat", * "receiver_name": "张小猫", * "receiver_province": "广东省", * "receiver_city": "广州市", * "receiver_address": "华景路一号南方通信大厦5楼", * "receiver_mobile": "123456", * "receiver_phone": "123456", * "product_id": "pDF3iYx7KDQVGzB7kDg6Tge5OKFo", * "product_name": "项坠333", * "product_price": 1, * "product_sku": "1075741873:1079742377", * "product_count": 1, * "product_img": "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2icND8WwMThBEcehjhDv2icY4GrDSG5RLM3B2qd9kOicWGVJcsAhvXfibhWRNoGOvCfMC33G9z5yQr2Qw/0", * "delivery_id": "1900659372473", * "delivery_company": "059Yunda", * "trans_id": "1900000109201404103172199813" * } * ] * } * ``` * @param {Number} status 状态码。(无此参数-全部状态, 2-待发货, 3-已发货, 5-已完成, 8-维权中) * @param {Date} beginTime 订单创建时间起始时间。(无此参数则不按照时间做筛选) * @param {Date} endTime 订单创建时间终止时间。(无此参数则不按照时间做筛选) */ exports.getOrdersByStatus = async function (status, beginTime, endTime) { const { accessToken } = await this.ensureAccessToken(); var data = {}; if (arguments.length === 1) { if (typeof status === 'number') { // (status) data.status = status; } else if (status instanceof Date) { data.begintime = Math.round(status.getTime() / 1000); data.endtime = Math.round(new Date().getTime() / 1000); } else { throw new Error('first parameter must be Number or Date'); } } else if (arguments.length === 2) { if (typeof status === 'number' && beginTime instanceof Date) { data.status = status; data.begintime = Math.round(beginTime.getTime() / 1000); data.endtime = Math.round(new Date().getTime() / 1000); } else { throw new Error('first parameter must be Number and second parameter must be Date'); } } else if (arguments.length === 3) { data.status = status; data.begintime = Math.round(beginTime.getTime() / 1000); data.endtime = Math.round(endTime.getTime() / 1000); } var url = this.merchantPrefix + 'order/getbyfilter?access_token=' + accessToken; return this.request(url, postJSON(data)); }; /** * 设置订单发货信息 * 详细请看:<http://mp.weixin.qq.com/wiki/index.php?title=微信小店接口> * Examples: * ``` * api.setExpressForOrder(orderId, deliveryCompany, deliveryTrackNo, isOthers); * ``` * Result: * ``` * { * "errcode": 0, * "errmsg": "success" * } * ``` * @param {String} orderId 订单Id * @param {String} deliveryCompany 物流公司 (物流公司Id请参考微信小店API手册) * @param {String} deliveryTrackNo 运单Id * @param {Number} isOthers 是否为6.4.5表之外的其它物流公司(0-否,1-是,无该字段默认为不是其它物流公司) */ exports.setExpressForOrder = async function (orderId, deliveryCompany, deliveryTrackNo, isOthers) { const { accessToken } = await this.ensureAccessToken(); var data = { 'order_id': orderId, 'delivery_company': deliveryCompany, 'delivery_track_no': deliveryTrackNo }; if (typeof isOthers === 'undefined') { data.is_others = 0; } else { data.is_others = isOthers ? 1 : 0; } var url = this.merchantPrefix + 'order/setdelivery?access_token=' + accessToken; return this.request(url, postJSON(data)); }; /** * 设置订单发货信息-不需要物流配送 * 适用于不需要实体物流配送的虚拟商品,完成本操作后订单即完成。 * 详细请看:<http://mp.weixin.qq.com/wiki/index.php?title=微信小店接口> * Examples: * ``` * api.setNoDeliveryForOrder(orderId); * ``` * Result: * ``` * { * "errcode": 0, * "errmsg": "success" * } * ``` * @param {String} orderId 订单Id */ exports.setNoDeliveryForOrder = async function (orderId) { const { accessToken } = await this.ensureAccessToken(); var data = { 'order_id': orderId, 'need_delivery': 0 }; var url = this.merchantPrefix + 'order/setdelivery?access_token=' + accessToken; return this.request(url, postJSON(data)); }; /** * 关闭订单 * 详细请看:<http://mp.weixin.qq.com/wiki/index.php?title=微信小店接口> * Examples: * ``` * api.closeOrder(orderId); * ``` * Result: * ``` * { * "errcode": 0, * "errmsg": "success" * } * ``` * @param {String} orderId 订单Id */ exports.closeOrder = async function (orderId) { const { accessToken } = await this.ensureAccessToken(); var data = { 'order_id': orderId }; var url = this.merchantPrefix + 'order/close?access_token=' + accessToken; return this.request(url, postJSON(data)); };