co-wechat-api
Version:
微信公共平台Node库API,ES6版本
245 lines (237 loc) • 8.71 kB
JavaScript
'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));
};