/** * 球台相关 API * 包含开台、关台、续费等接口 */ import { post } from './request' /** * 开台操作类型 */ export enum TableOperationType { /** 押金开台 */ SelfServiceDeposit = 1, /** 余额开台 */ SelfServiceBalance = 2, /** 定时开台 */ Timed = 3, /** 信用开台 */ Credit = 4, /** 团购券开台 */ GroupBuy = 5, /** 立即关台 */ ImmediateClose = 6, /** 续费 */ Renew = 7, /** 关灯重开 */ ReopenAfterClose = 8, } /** * 支付渠道 */ export enum PaymentChannel { /** 微信支付 */ WechatPay = 1, /** 支付宝 */ Alipay = 2, /** 银联支付 */ UnionPay = 3, /** 余额支付 */ Balance = 4, /** 银行卡支付 */ BankCard = 5, } /** * 开台请求参数 */ export interface StartTableRequest { /** 设备编码 */ grpSn: string /** 用户 OpenId */ openId: string /** 开台操作类型 */ ctrlType: TableOperationType /** 消费金额 */ amount?: number /** 支付渠道 */ payType?: PaymentChannel /** 开台时长(小时),定时开台使用 */ durationHours?: number /** 团购券码,团购券开台使用 */ couponCode?: string } /** * 开台响应数据 */ export interface StartTableResponse { /** 机构编码 */ instSn: string /** 店铺编码 */ bpSn: string /** 球台编码 */ grpSn: string /** 开台设备id */ operationId: number /** 开始时间 */ startTime: string /** 结束时间 */ expectedEndTime: string /** 开台操作详情id */ detailIds: number[] /** 控制id */ controlMessageId: number /** 商户订单号 */ outTradeNo: string /** 支付参数(用于调起微信支付) */ payParameters: WechatPayParameters | null /** 支付URL(用于扫码支付) */ payUrl: string } /** * 微信支付参数 */ export interface WechatPayParameters { /** 时间戳 */ timeStamp: string /** 随机字符串 */ nonceStr: string /** 统一下单接口返回的 prepay_id */ package: string /** 签名方式 */ signType: string /** 签名 */ paySign: string } /** * 开台 API * @param data 开台请求参数 * @returns 开台响应 */ export const startTable = (data: StartTableRequest) => { return post('/Tables/start', data, { showLoading: true, loadingText: '开台中...', }) } /** * 调起微信支付 * @param payParams 支付参数 * @returns Promise */ export const invokeWechatPay = (payParams: WechatPayParameters): Promise => { return new Promise((resolve, reject) => { // 使用 wx.requestPayment 调起微信支付 wx.requestPayment({ timeStamp: payParams.timeStamp, nonceStr: payParams.nonceStr, package: payParams.package, signType: payParams.signType as 'MD5' | 'HMAC-SHA256' | 'RSA', paySign: payParams.paySign, success: () => { resolve() }, fail: (err) => { reject(err) }, }) }) } export default { startTable, invokeWechatPay, TableOperationType, PaymentChannel, }