cb/assets/Script/module/Pay/Utils.ts
2025-07-02 15:43:25 +08:00

368 lines
12 KiB
TypeScript

export default class Utils {
static uid:string="";
static session_key="";
static appid:string="";
static openid:string="";
static outTradeNo:string ="";
static httpip:string=`https://laf.nika4games.com/`;
//#region 支付
/**获取用户信息*/
static getUserInfo(callBack){
wx.login({
success (res) {
console.log("登录成功");
console.log(res);
if (res.code) {
Utils.POST("login",{code:res.code},ret=>{
console.log("请求结果:");
console.log(ret);
Utils.openid=ret.data.openid;
Utils.session_key=ret.data.session_key;
Utils.uid=ret.data._id;
callBack(Utils.uid);
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
}
/**道具直购接口*/
static buyProp(callBack){
Utils.POST("wx/orderPaySig",{uid:Utils.uid,itemid:"10011",itemCount:1,itemPrice:100},res=>{
if(res.code==1){
Utils.outTradeNo=res.data.outTradeNo;
//@ts-ignore
wx.requestMidasPaymentGameItem({
signData:res.data.signData,
paySig: res.data.paySig,
signature: res.data.signature,
success(res, errCode) {
console.log('成功', res, errCode);
callBack(res);
},
fail({errMsg,errCode}) {
console.error('失败');
console.error(errMsg, errCode)
callBack(res);
}
})
}
});
}
static getPayInfo(callBack){
console.log("请求uid:"+Utils.uid);
console.log("outTradeNo:"+this.outTradeNo);
Utils.POST("wx/getPayInfo",{uid:Utils.uid,outTradeNo:Utils.outTradeNo},res=>{
console.log("查询字符结果");
console.log(res);
if(res.code==1){
if(res.data.pay_state==1){
console.log("充值取消")
callBack(res);
}else{
console.log("充值成功")
callBack(res);
}
}
});
}
/**跳转客服*/
static GoKEFu(){
// 打开客服会话
//wx.navigateTo({ url: '/pages/webview?url=https://xxx.com/customer' });
//@ts-ignore
wx.openCustomerServiceConversation({
sessionFrom: '你好这是充值中心', // 会话来源(可选)
showMessageCard: true, // 是否展示消息卡片
sendMessageTitle:"扫描二维码进行充值",
sendMessageImg:"https://img2.huashi6.com/images/resource/thumbnail/2023/07/23/193722_24254930385.jpg?imageMogr2/quality/100/interlace/1/thumbnail/2000x%3E",
success() {
console.log('客服会话已打开');
}
});
}
//#endregion
//#region 微信云
static initServer(){
if(cc.sys.platform!=cc.sys.WECHAT_GAME)return;
//@ts-ignore
wx.cloud.init({
env: 'cloudbase-1gl7iex89268f11e'
})
}
static getUserCode(){
//@ts-ignore
wx.login({
success (res) {
console.log("登录成功");
console.log(res);
if (res.code) {
//@ts-ignore
wx.cloud.callFunction({
// 云函数名称
name: 'login',
// 传给云函数的参数
data: {
code:res.code,
},
success: function(ret) {
console.log("请求成功");
console.log("请求结果:");
console.log(ret);
Utils.openid=ret.data.openid;
Utils.session_key=ret.data.session_key;
Utils.uid=ret.data._id;
},
fail:function(res){
console.log("请求失败");
console.log(res);
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
}
static PayOder(){
if(cc.sys.platform!=cc.sys.WECHAT_GAME)return;
//@ts-ignore
wx.cloud.callFunction({
// 云函数名称
name: 'userPayOrder',
// 传给云函数的参数
data: {
itemid:"10011",
itemCount:1,
itemPrice:100
},
success: function(res) {
console.log("请求成功");
console.log(res)
if(res.result.code==1){
Utils.outTradeNo=res.result.data.outTradeNo;
console.log("订单号:"+Utils.outTradeNo);
//@ts-ignore
wx.requestMidasPaymentGameItem({
signData:res.result.data.signData,
paySig: res.result.data.paySig,
signature: res.result.data.signature,
success(res, errCode) {
console.log('成功', res, errCode);
},
fail({errMsg,errCode}) {
console.error('失败');
console.error(errMsg, errCode)
}
})
}
},
fail:function(res){
console.log("请求失败");
console.log(res);
}
})
}
static getPayInfo1(callBack){
if(cc.sys.platform!=cc.sys.WECHAT_GAME)return;
//@ts-ignore
wx.cloud.callFunction({
// 云函数名称
name: 'userGetPayState',
// 传给云函数的参数
data: {
outTradeNo:Utils.outTradeNo
},
success: function(res) {
console.log("请求成功");
console.log(res)
callBack("成功");
},
fail:function(res){
console.log("请求失败");
console.log(res);
callBack("失败");
}
})
}
static toke(){
if(cc.sys.platform!=cc.sys.WECHAT_GAME)return;
//@ts-ignore
wx.cloud.callFunction({
// 云函数名称
name: 'uerToken',
// 传给云函数的参数
data: {
},
success: function(res) {
console.log("请求成功");
console.log(res)
},
fail:function(res){
console.log("请求失败");
console.log(res);
}
})
}
//#endregion
/**
* POST请求
*
* @static
* @param {*} url
* @param {object} [param={}]
* @param {*} callback
* @memberof HttpUtil
*/
public static POST(url, param:object|any,callback) {
var xhr = cc.loader.getXMLHttpRequest();
let dataStr = '';
Object.keys(param).forEach(key => {
dataStr += key + '=' + encodeURIComponent(param[key]) + '&';
})
if (dataStr !== '') {
dataStr = dataStr.substr(0, dataStr.lastIndexOf('&'));
}
url=this.httpip+url;
console.log("请求地址:"+url);
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
let response:any = xhr.responseText;
if (xhr.status >= 200 && xhr.status < 300) {
let httpStatus = xhr.statusText;
// callback(true, JSON.parse(response));
try{
response=JSON.parse(response);
}catch{
response={data:"数据有误",code:0};
}
callback(response);
} else {
callback({data:"网络请求失败,请检查网络连接",code:0});
}
}
};
xhr.send(dataStr);
}
static http_sendRequest(path,data,handler,extraUrl=null){
let xhr=cc.loader.getXMLHttpRequest();
xhr.timeout=5000;//超时时间
if(data==null){
data={};
}
// if(exports.token){//数据中加入安全密匙
// data.token=exports.token;
// }
if(extraUrl==null){
//@ts-ignore
if(Utils.isDebug){
extraUrl="http://localhost:9003";
}else{
extraUrl=this.httpip;
}
}
//解析请求路由以及格式化请求参数
let sendtext="?";
for(let k in data){
if(sendtext !="?"){
sendtext +="&";
}
sendtext +=(k +'='+data[k]);
}
//组装完整的URL
let requestURL=extraUrl+"/"+path+encodeURI(sendtext);
// console.log("发送请求:");
// console.log(requestURL);
//发送请求 Get形式发送请求
xhr.open("GET",requestURL,true);
if (cc.sys.isNative) {//如果是手机就设置请求头
xhr.setRequestHeader("Accept-Encoding", "gzip,deflate");
}
//计时判断是否超时
let hasRetried=false;
let timer=setTimeout(function(){
//xhr.hasRetried=true;
hasRetried=true;
xhr.abort();
console.log("http timeOut......");
retryFun();
},5000);
//重新发送请求
let retryFun=function(){
Utils.http_sendRequest(path,data,handler,extraUrl);
}
//监听反馈
xhr.onreadystatechange=function(){
clearTimeout(timer);
if(xhr.readyState===4&&(xhr.status >= 200 && xhr.status < 300)){
let ret=null;
let respText=xhr.responseText;
try{
ret=JSON.parse(respText);
}catch(e){
console.log("http error:" +e);
ret={
code:1,
msg:e
}
}
if(handler){
handler(ret);
}
handler=null;
}else if(xhr.readyState===4){
// if(xhr.hasRetried){
// return;
// }
if(hasRetried){
return;
}
console.log('other readystate =='+xhr.readyState + ', status:' + xhr.status);
if(xhr.readyState==4&&xhr.status==0){
handler({
err:1,
msg:"网络连接失败,请稍后再试"
});
return;
}
setTimeout(function(){
retryFun();
},5000);
}else{
//console.log('other readystate:' + xhr.readyState + ', status:' + xhr.status);
}
}
try{
xhr.send();
}catch(e){
retryFun();
}
return xhr;
}
}