weixin quick toolkit based on Nodejs
interface WxAccessToken {
access_token?: string;
expires_in?: number;
errcode?: number;
errmsg?: string;
}
interface WxWebAccessToken {
access_token?: string;
expires_in?: number;
refresh_token?: string;
openid?: string;
scope?: string;
unionid?: string;
}
interface WxSession {
openid?: string;
session_key?: string;
unionid?: string;
errcode?: number;
errmsg?: string;
}
interface WxPhone {
phone_info?: {
phoneNumber?: string;
purePhoneNumber?: string;
countryCode?: string;
watermark?: {
appid?: string;
timestamp?: number;
};
};
errcode?: number;
errmsg?: string;
}
interface WxWebUserInfo {
openid?: string;
nickname?: string;
sex?: number;
province?: string;
city?: string;
country?: string;
headimgurl?: string;
privilege?: string[];
unionid?: string;
}
interface NotifyParams {
out_trade_no: string;
transaction_id: string;
trade_state: string;
success_time: string;
}
interface MchOptions {
id: string;
serial_no: string;
key_path: string;
notify_url: string;
prepay_url: string;
v2?: string;
v3?: string;
}
interface PrepayParams {
appid: string;
openid: string;
amount: number;
description: string;
tradeno: string;
}
interface MsgTemplate {
touser: string;
template_id: string;
page?: string;
data: any;
miniprogram_state: "developer" | "trial" | "formal";
lang: "zh_CN";
}
interface AppSetting {
appid: string;
appSecret: string;
}
/**
* [1] 授权认证
*/
namespace WeAuth {
/**
* 获取accessToken
* @param appid
* @param secret
* @returns WxAccessTokenResult
*/
function getAccessToken(
appid: string,
secret: string,
options?: {
url: string;
}
): Promise<WxAccessToken>;
/**
* 获取session
* @param appid
* @param secret
* @param code
* @returns WxSessionResult
*/
function getSession(
appid: string,
secret: string,
code: string,
options?: {
url: string;
}
): Promise<WxSession>;
/**
* 获取手机号
* @param appid
* @param secret
* @param code
* @returns WxPhoneResult
*/
function getPhone(
appid: string,
secret: string,
code: string,
options?: {
url: string;
}
): Promise<WxPhone>;
/**
* 解密
* @param encrypted_data
* @param iv
* @param appId
* @param session_key
* @returns encrypted JSON
*/
function decrypt(
encrypted_data: string,
iv: string,
appId: string,
session_key: string
): any;
/**
* 获取微信QR扫码登陆页的访问地址
* @param appid
* @param redirect_uri query参数:CODE&SCOPE
* @param scope snsapi_login
* @param state
* @param lang
* @returns
*/
function getScanPageURL(
appid: string,
redirect_uri: string,
scope?: string,
options?: {
url: string;
state?: string;
lang?: string;
}
): string;
/**
* 获取网页端的accessToken
* @param appid
* @param secret
* @param code 网页端的redirect_uri返回的code
* @returns
*/
function getWebAccessToken(
appid: string,
secret: string,
code: string,
options?: {
url: string;
}
): Promise<WxWebAccessToken>;
/**
* 刷新网页端的Token
* @param appid
* @param refresh_token
* @returns WxWebAccessTokenResult
*/
function refreshWebAccessToken(
appid: string,
token: string,
options?: {
url: string;
}
): Promise<WxWebAccessToken>;
/**
* 获取用户信息
* @param access_token
* @param openid
* @returns
*/
function getWebUserInfo(
access_token: string,
openid: string,
options?: {
url: string;
}
): Promise<WxWebUserInfo>;
}
/**
* [2] 商家支付
*/
namespace WePay {
/**
* 统一下单
* @param params PrepayParams
* @param mch MchOptions
* @returns payment 小程序支付参数
*/
function prepay(params: PrepayParams, mch: MchOptions): Promise<any>;
/**
* 统一订单参数
* @param mch_id
* @param notify_url
* @param appid
* @param openid
* @param out_trade_no
* @param description
* @param amount 分
* @param currency "CNY"
* @returns
*/
function getPrePayArgs(
mch_id: string,
notify_url: string,
appid: string,
openid: string,
out_trade_no: string,
description: string,
amount: number,
currency?: string
): any;
/**
* 获取小程序调用支付参数
* @param appid
* @param mchKey
* @param prepay_id
* @returns
*/
function getPaymentArgs(
appid: string,
mchKey: string | Buffer,
prepay_id: string
): any;
/**
* 支付完成回调 [POST]
* @param req_body 请求参数
* @param apiv3
* @param callback (params: NotifyParams)=>void 后处理函数
* @returns 通知参数
*/
function onNotify(
req_body: any,
apiv3: string,
callback?: (params: NotifyParams) => void
): Promise<NotifyParams>;
/**
* 获取支付回调参数
* @param body
* @returns NotifyParams
*/
function getNotifyParams(body: any, apiv3: string): NotifyParams;
/**
* 参数解密
* @param resource
* @param apiv3
* @returns any 通知回调参数
*/
function decode(resource: any, apiv3: string): any;
}
/**
* [3] 消息推送
*/
namespace WeMsg {
/**
* 发送消息
* @param template MsgTemplate 消息模板
* @param app AppSetting 小程序参数
* @returns 推送回执
*/
function send(
template: MsgTemplate,
app: AppSetting,
options?: {
url: string;
}
): Promise<any>;
}