Files
fc/dev/project/library/imports/28/28a0009f-8d64-44f1-ac72-f388f55e6a05.js
2026-05-24 10:21:26 +08:00

217 lines
6.2 KiB
JavaScript

"use strict";
cc._RF.push(module, '28a00CfjWRE8axy84j1XmoF', 'payment.mod');
// Scripts/mod/payment/payment.mod.js
"use strict";
/******************************************************************
*
* 充值/支付模块
*
******************************************************************/
var BridgeController = require("bridge.controller");
var RoleController = require("role_controller");
var FFSDK = require("ff_sdk");
var TDefine = require("trace.define");
var LoginMod = require("login.mod");
var CPluginHelp = require("plugin_help");
var TTT = TDefine.TraceType;
var PaymentModel = cc.Class({
"extends": BridgeController,
// 注册协议接受事件
registerProtocals: function registerProtocals() {
this.RegisterProtocal(16700, this.handle16700); //获取充值列表信息
this.RegisterProtocal(10399, this.handle10399); //模拟充值
// SDK支付
if (FFSDK.getInstance().isEnableSDK()) {
FFSDK.getInstance().regSdkCallBack("pay", this.onPayResult, this);
}
},
// 从服务器初始化数据
reqBaseFromServer: function reqBaseFromServer(_cb) {
nx.dt.fnInvoke(_cb, true);
this.reqRechargeList();
nx.bridge.vset("PayWait", null);
},
// ========================================================
// 价格相关
// ========================================================
// 价格转换
transPrice: function transPrice(_price) {
var info = nx.bridge.vget("excRates");
if (nx.dt.objEmpty(info)) {
nx.error("汇率转换失败,配置未找到!");
return 0;
}
var price = _price * info.mult / info.divi;
return info.round ? Math.round(price) : Math.ceil(price);
},
// 价格格式化
fmtPrice: function fmtPrice(_price) {
var info = nx.bridge.vget("excRates");
if (nx.dt.objEmpty(info)) {
nx.error("汇率转换失败,配置未找到!");
return "";
}
return this.transPrice(_price) + info.name;
},
// ========================================================
// 充值相关
// ========================================================
// 获取充值列表
reqRechargeList: function reqRechargeList(_cb) {
this.SendProtocal(16700, {}, _cb);
},
// 获取充值列表
handle16700: function handle16700(_data) {
if (!this.isGoodData(_data)) {
nx.bridge.vset("RechargeList", []);
return;
}
nx.bridge.vset("RechargeList", _data.list || []);
},
// ========================================================
// 支付相关
// ========================================================
// 模拟充值
handle10399: function handle10399(_data) {},
// 支付结果统一处理
payDone: function payDone(_ret, _params) {
// 失败处理
if (!_ret) {
nx.mbox(_params || "支付失败");
nx.bridge.vset("PayWait", null);
nx.dt.fnInvoke(this.cbPay, false, _params);
this.cbPay = null;
return;
}
// 支付成功
nx.bridge.vset("PayWait", {
done: true,
msg: "支付成功"
});
nx.bridge.vset("PayWait", null, false);
nx.dt.fnInvoke(this.cbPay, true, _params);
this.cbPay = null;
},
// 支付
reqPayment: function reqPayment(_id, _cb) {
var _this = this;
// 支付中
var wait = nx.bridge.vget("PayWait");
if (wait && !wait.done) {
nx.dt.fnInvoke(_cb, false, "支付中");
return;
}
// 获取商品信息
var product = game.configs.charge_data.data_charge_data[_id];
if (!product) {
nx.mbox("无效的支付项");
nx.dt.fnInvoke(_cb, false, "无效支付");
return;
}
this.cbPay = _cb;
this.product = product;
// 调试模式走GM
if (CC_DEBUG && cc.sys.isBrowser) {
nx.bridge.vset("PayWait", {
done: false,
msg: "支付中"
});
this.SendProtocal(10399, {
msg: "pay " + product.id
}, function (_ret, _params) {
_this.payDone(_ret, _params);
});
return;
}
// 基本信息
var info = nx.bridge.vget("curAccount");
var role = require("role_controller").getInstance().getRoleVo();
if (!info || !role) {
cc.error("$Payment:\u652F\u4ED8\u5931\u8D25,\u57FA\u672C\u4FE1\u606F\u65E0\u6548!");
this.payDone(false, "基本信息无效");
return;
}
// SDK支付
if (FFSDK.getInstance().isEnableSDK()) {
// 埋点
if (nx.mTrace) {
nx.mTrace.trace(TTT.chargeStart, product.id);
}
nx.bridge.vset("PayWait", {
done: false,
msg: "支付中"
});
if (FFSDK.getInstance().mJsonSDKInfo.channelName == "erolabs") {
if (nx.dt.strEmpty(FFSDK.getInstance().accountinfo.data.user_info.account)) {
nx.mbox("BuyNoAccountTip", ['Cancle', 'BuyNoAGoto'], function (_key, _box) {
_box.close();
if (_key == 'BuyNoAGoto') {
LoginMod.getInstance().reqSDKLogout(function () {
FFSDK.getInstance().guestBind();
});
FFSDK.getInstance().doLogout();
} else {
CPluginHelp.getInstance().sendSdkCallBack("pay", {});
}
});
}
return;
}
FFSDK.getInstance().pay(product.id, product.val, product.name, "", info.account, role.rid, role.srv_id);
return;
}
// 无效支付
this.payDone(false, "无效支付");
},
// SDK支付回调
onPayResult: function onPayResult(_data) {
// 参数无效
if (nx.dt.objEmpty(_data)) {
cc.error("$Payment:\u652F\u4ED8\u5931\u8D25! \u7A7A\u8FD4\u56DE!");
this.payDone(false, "支付失败");
// 埋点
if (nx.mTrace && this.product) {
nx.mTrace.trace(TTT.chargeStart, this.product.id, 0);
}
return;
}
// 支付失败
var res = _data.result || "";
if (res && parseInt(res) != 0) {
cc.error("$Payment:\u652F\u4ED8\u5931\u8D25! " + res + ", " + (_data.msg || "unknown"));
this.payDone(false, _data.msg || "支付失败");
// 埋点
if (nx.mTrace && this.product) {
nx.mTrace.trace(TTT.chargeStart, this.product.id, 2);
}
return;
}
// 支付成功
this.payDone(true, "支付成功");
// 埋点
if (nx.mTrace && this.product) {
nx.mTrace.trace(TTT.chargeStart, this.product.id, 1);
}
}
});
module.exports = PaymentModel;
cc._RF.pop();