1.0.1 • Published 8 months ago
lazy-kit-weixin v1.0.1
lazy-kit-weixin
weixin quick toolkit based on Nodejs
Functions
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>;
}
/**
* [4] 商家退款
*/
namespace Refund {
interface MchOptions {
id: string;
serial_no: string;
key_path: string;
refund_url: string; // 2024/11/21 新增退款模块时添加,默认 https://api.mch.weixin.qq.com/v3/refund/domestic/refunds
}
interface RefundParams {
transaction_id?: string; // 微信支付订单号
out_trade_no?: string; // 商户订单号
out_refund_no: string; // 商户退款单号
reason?: string; // 退款原因
amount: {
refund: number; // 退款金额(分)
total: number; // 原订单金额(分)
currency: string; // 货币类型
};
}
interface RefundResult {
refund_id: string; // 微信支付退款号
out_refund_no: string; // 商户退款单号
transaction_id: string; // 微信支付订单号
out_trade_no: string; // 商户订单号
channel: string; // 退款渠道
user_received_account: string; // 退款入账账户
success_time: string; // 退款成功时间
create_time: string; // 退款创建时间
status: string; // 退款状态:SUCCESS/CLOSED/PROCESSING/ABNORMAL
amount: {
refund: number; // 退款金额
total: number; // 原订单金额
payer_total: number; // 用户支付金额
settlement_refund: number;// 应结退款金额
settlement_total: number; // 应结订单金额
discount_refund: number; // 优惠退款金额
currency: string; // 退款币种
}
}
function apply(params: RefundParams, mch: MchOptions): Promise<RefundResult>;
function queryStatus(outRefundNo: string, mch: MchOptions): Promise<RefundResult>;
}