台球开关台小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

150 lines
3.0 KiB

/**
* 球台相关 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<StartTableResponse>('/Tables/start', data, {
showLoading: true,
loadingText: '开台中...',
})
}
/**
* 调起微信支付
* @param payParams 支付参数
* @returns Promise
*/
export const invokeWechatPay = (payParams: WechatPayParameters): Promise<void> => {
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,
}