/** * 凤起充值 */ import { __PayData } from "../game/data/sdata/SManage"; import FqLogin from "../login/FqLogin"; import Main from "../main/Main"; import { HttpStateType, ReveData } from "../util/CHttp"; /** * 友盟 广告事件定义 */ export const UM_EVENT_ID = cc.Enum({ ad_pdl_t_0: 'ad_pdl_t_0',//潘多拉铁盒广告开始 ad_pdl_t_1: 'ad_pdl_t_1',//潘多拉铁盒广告观看结束 ad_pdl_m_0: 'ad_pdl_m_0',//潘多拉魔盒广告开始 ad_pdl_m_1: 'ad_pdl_m_1',//潘多拉魔盒广告观看结束 ad_power_0: 'ad_power_0',//看广告购买体力 ad_power_1: 'ad_power_1',//看广告购买体力 ad_money_0: 'ad_money_0',//看广告购买金币 ad_money_1: 'ad_money_1',//看广告购买金币 ad_fuhuo_0: 'ad_fuhuo_0',//复活 ad_fuhuo_1: 'ad_fuhuo_1',//复活 ad_color_2_0: 'ad_color_2_0',//2关颜色灯 ad_color_2_1: 'ad_color_2_1',//2关颜色灯 ad_color_5_0: 'ad_color_5_0',//5关颜色灯 ad_color_5_1: 'ad_color_5_1',//5关颜色灯 ad_wish_0: 'ad_wish_0',//每日祝福 ad_wish_1: 'ad_wish_1',//每日祝福 }); export default class FqPay { public main: Main; public _payData: __PayData; /** * 充值回调 * result : 0 成功 -1 失败 */ public callback: (result: number) => void; private orderId:number;//订单id constructor(main: Main) { this.main = main } /** * * @param id 商品id */ public pay(payData: __PayData, callback: (result: number) => void) { this.callback = callback this._payData = payData //创建订单 this.createOrder((orderId) => { this.orderId = orderId this.openFqPay('' + orderId) }) } /** * 创建订单 * @param callback */ private createOrder(callback: (orderId: number) => void) { let msg = { payId: this._payData.id } this.main.gameHttp.sendJson('pay/v1/createOrder', msg, (state, reve: ReveData) => { this.main.stopLoad(); if (state == HttpStateType.SUCCESS) { if (reve.retCode == 0) { callback(reve.data.orderId) } else { this.main.showTips(reve.message); } } else { this.main.showTips('网络异常'); } }); } /** * String productCode = json.getString("productCode"); String orderAmount = json.getString("orderAmount"); String subject = json.getString("subject"); String roleName = json.getString("roleName"); String cpBillNo = json.getString("cpBillNo"); String serverId = json.getString("serverId"); String extraInfo = json.getString("extraInfo"); paymentInfo.setOrderAmount(orderAmount); //订单金额 必须字段 paymentInfo.setSubject(subject); //商品名 必须字段 paymentInfo.setRoleName(roleName); //角色名 必须字段 paymentInfo.setCpBillNo(cpBillNo); //CP订单号 必须字段 paymentInfo.setUid(uid); //登录时成功拿到的UID 必须字段 paymentInfo.setServerId(serverId); //区服ID 必须字段 paymentInfo.setExtraInfo(extraInfo); //拓展信息 必须字段 * @param orderId */ private openFqPay(orderId: string) { let player = this.main.player let user = this.main.userData let msg = { productCode:''+this._payData.id, productCodeAndroid:this._payData.googleId, productCodeIos:this._payData.iosId, orderAmount:''+this._payData.usd, subject:''+this._payData.name, roleName:player.role.name, cpBillNo:''+orderId, serverId:''+user.zone.id, extraInfo:''+orderId } if(cc.sys.isNative){ if (cc.sys.os === cc.sys.OS_ANDROID) { let myself = this window._fqAndroidPayCallback = (str) => { console.log('window._fqAndroidPayCallback', str) myself.getPay() return '1' } let className = "com/funqueue/android/xsdmx/MainActivity"; let methodName = "pay"; let methodSignature = "(Ljava/lang/String;)V"; jsb.reflection.callStaticMethod(className, methodName, methodSignature, JSON.stringify(msg)); } else if (cc.sys.os === cc.sys.OS_IOS || cc.sys.os === cc.sys.OS_OSX) { let myself = this window._fqIosPayCallback = (str)=>{ console.log('window._fqIosPayCallback' , str) myself.getPay() return '1' } jsb.reflection.callStaticMethod('AppController', 'pay:',JSON.stringify(msg)); } } } private getPay() { let msg = { orderId: this.orderId } this.main.gameHttp.sendJson('pay/v1/checkPay', msg, (state, reve: ReveData) => { this.main.stopLoad(); if (state == HttpStateType.SUCCESS) { if (reve.retCode == 0) { this.callback(0) this.main.showReward(reve) } else { this.main.showTips(reve.message); } } else { this.main.showTips('网络异常'); } }); } /** * 用户观看视频 * result : -1:广告还未准备好 * 0:广告未播放完 * 1:播放完成,给奖励 */ public adVideo(callback:(result: number)=>void,eventId1:string,eventId2:string){ cc.log('用户观看视频 adVideo'); this.callback = callback; if(cc.sys.isNative){ if (cc.sys.os === cc.sys.OS_ANDROID) { FqLogin.commitEvent(eventId1,'','') let myself = this window._fqAndroidAdCallback = (str) => { console.log('window._fqAndroidAdCallback', str) if(str == '1'){ myself.callback(1) FqLogin.commitEvent(eventId2,'','') }else if(str == '-1'){ myself.callback(-1) }else{ myself.callback(0) } return '1' } let className = "com/funqueue/android/xsdmx/MainActivity"; let methodName = "showRewardedVideo"; let methodSignature = "(Ljava/lang/String;)V"; jsb.reflection.callStaticMethod(className, methodName, methodSignature, ' jlsp1'); } else if (cc.sys.os === cc.sys.OS_IOS) { FqLogin.commitEvent(eventId1,'','') let myself = this window._fqIosAdCallback = (str)=>{ console.log('window._fqIosAdCallback' , str) if(str == '1'){ FqLogin.commitEvent(eventId2,'','') myself.callback(1) }else if(str == '-1'){ myself.callback(-1) }else{ myself.callback(0) } return '1' } jsb.reflection.callStaticMethod('AppController', 'showRewardedVideo:','jlsp1'); }else{ this.callback(1) } }else{ this.callback(1) } } }