export { isWechatBrowser, isMiniProgram, getRuntimePlatform } from './env'; export { initWechatJssdk, ensureJssdkReady, isJssdkReady } from './jssdk'; export { getWechatLocation, canUseWechatLocation, isWechatEnv, } from './location'; export { scanQrCode } from './scan'; export { invokeWechatPay } from './pay'; export { chooseWechatImages, canUseWechatChooseImage } from './chooseImage'; export type { ChooseWechatImageOptions } from './chooseImage'; export { getWechatOAuthUrl, startWechatOAuthLogin, getMiniProgramLoginCode, loginWithWechatCode, handleWechatOAuthCallback, bindWechatPhone, getWechatPhoneNumber, wechatLogin, WECHAT_INAPP_REQUIRED_MSG, } from './auth'; export type { WeixinSdkConfig, WxApi, MiniProgramWx } from './types'; export { DEFAULT_JS_API_LIST } from './types'; import type { WeixinSdkConfig } from './types'; import { initWechatJssdk } from './jssdk'; import { getWechatLocation } from './location'; import { scanQrCode } from './scan'; import { invokeWechatPay } from './pay'; import { chooseWechatImages } from './chooseImage'; import { wechatLogin, handleWechatOAuthCallback, bindWechatPhone, getWechatPhoneNumber, } from './auth'; /** 微信 SDK 门面(按端注入 apiBase / clientApp) */ export function createWeixinSdk(config: WeixinSdkConfig) { return { init: () => initWechatJssdk({ ...config, apiBase: config.apiBase ?? '/api/v1' }), login: () => wechatLogin(config), handleOAuthCallback: (params?: URLSearchParams) => handleWechatOAuthCallback(config, params), bindPhone: (payload: { wxSessionKey: string; phone: string; code: string }) => bindWechatPhone(config, payload), getPhoneNumber: () => getWechatPhoneNumber(config), getLocation: () => getWechatLocation(config), scanQrCode: () => scanQrCode(config), chooseImages: (options?: Parameters[1]) => chooseWechatImages(config, options), pay: (prepay: Parameters[0]) => invokeWechatPay(prepay, { apiBase: config.apiBase ?? '/api/v1', clientApp: config.clientApp, getAccessToken: config.getAccessToken, }), }; }