Commit 02fde78d1df48ccb6b3af5a04d732367dbcbb24d

Authored by 宋庆平
1 parent 53858931

X

sdk/shareTools.ts
... ... @@ -67,8 +67,3 @@ export class ShareTools {
67 67 }
68 68  
69 69 }
70   -
71   -
72   -
73   -export enum ShareKey {
74   -}
... ...
wxsdk/base/SDKConst.ts
... ... @@ -24,8 +24,8 @@ export const GAMEDATA = {
24 24 typ: 1,//分享类型 写死1
25 25 videoid: '',//默认的视频广告id 填空就行
26 26 },
27   - MidasPay: { // 米大师虚拟支付配置 *找运营提供
28   - OfferId: "9999999999", // 在米大师申请的应用id *找运营提供
  27 + MidasPay: { // 米大师虚拟支付配置
  28 + OfferId: "xxxx", // 在米大师申请的应用id
29 29 ZoneId: "1", // 分区ID,默认:1
30 30 Mode: "game", // 默认:game
31 31 CurrencyType: "CNY", // 默认:CNY
... ... @@ -33,8 +33,9 @@ export const GAMEDATA = {
33 33 }
34 34 }
35 35  
  36 +
36 37 // sdk版本
37   -export const SDKVersion = 'v1.0.11';
  38 +export const SDKVersion = 'v1.0.12';
38 39 // 是否打印
39 40 export const __LOG__ = false;
40 41 // 是否mock
... ... @@ -110,11 +111,13 @@ export const HostKeys = {
110 111 behavior: 'api/douyin/behavior', //抖音投放关键行为
111 112 attribute: 'api/member/attribute/set', //修改用户属性
112 113 wxencrypted: 'api/wx/encrypted',
  114 +
113 115 //订单
114   - orderReport: 'api/order/v2/mimas/new', //订单信息上报
  116 + orderReport: 'api/order/v2/mimas/new', //wx订单信息上报
115 117 orderQuery: 'api/order/query', //订单信息查询
116 118 preorder: 'api/order/v2/preorder', //获取支付方式
117 119 bytedanceOrderReport: 'api/order/v2/bytedance', //字节订单信息上报
  120 + qqOrderReport: 'api/order/v2/qq', //qq订单信息上报
118 121 //
119 122 goodslist: 'api/v2/goodslist', //商品列表
120 123 };
... ...
wxsdk/http/SDKApi.ts
... ... @@ -78,6 +78,7 @@ export class SDKApi {
78 78 // OrderApi
79 79 public static pay = (...args) => SDKHttp.httpPost(DataService.I.OrderApi, HostKeys.orderReport, ...args);
80 80 public static bytedanceOrderReport = (...args) => SDKHttp.httpPost(DataService.I.OrderApi, HostKeys.bytedanceOrderReport, ...args);
  81 + public static qqOrderReport = (...args) => SDKHttp.httpPost(DataService.I.OrderApi, HostKeys.qqOrderReport, ...args);
81 82 public static orderQuery = (...args) => SDKHttp.httpPost(DataService.I.OrderApi, HostKeys.orderQuery, ...args);
82 83 public static preorder = (...args) => SDKHttp.httpPost(DataService.I.OrderApi, HostKeys.preorder, ...args);
83 84  
... ...
wxsdk/qq/QQPay.ts 0 → 100644
... ... @@ -0,0 +1,165 @@
  1 +import { GAMEDATA } from '../base/SDKConst';
  2 +import { EnvCode } from '../base/SDKEnum';
  3 +import { SDKApi } from '../http/SDKApi';
  4 +import DataService from '../service/DataService';
  5 +import WxSystem from '../wx/WxSystem';
  6 +
  7 +export default class QQPay {
  8 + /**
  9 + * 发起支付
  10 + */
  11 + pay(params: { payid: string, goodid: string, money: number; orderid: string }, opts: any = {}): Promise<any> {
  12 + return new Promise((resolve, reject) => {
  13 + let { Mode, OfferId, ZoneId, CurrencyType, Platform } = GAMEDATA.MidasPay;
  14 + // 环境配置,0:米大师正式环境 1:米大师沙箱环境
  15 + let env = DataService.I.EnvEnum === EnvCode.Prod ? 0 : 1;
  16 + // 平台类型,android or ios,config.js有配置走配置,否则判断系统id
  17 + let platform = DataService.I.Platform;
  18 + let pms = {
  19 + mode: Mode,
  20 + env,
  21 + platform,
  22 + offerId: OfferId,
  23 + currencyType: CurrencyType,
  24 + buyQuantity: params.money / 10,
  25 + zoneId: ZoneId
  26 + };
  27 + let extend = "";
  28 + for (let key in opts) {
  29 + extend += (`${key}=${opts[key]}&`)
  30 + }
  31 + extend = extend.substring(0, extend.length - 1);
  32 + extend = encodeURIComponent(extend);
  33 +
  34 + let payParams = {
  35 + ...this.buildParams(),
  36 + extend,
  37 + orderid: params.orderid,
  38 + // payid: params.payid,
  39 + goodid: params.goodid,
  40 + money: params.money,
  41 + platform
  42 + };
  43 + console.log("payParams", payParams);
  44 + SDKApi.qqOrderReport(payParams).then(res => {
  45 + console.log("res", res);
  46 + if (!res.code) {
  47 + let { prepayId,starCurrency,setEnv } = res.data;
  48 + qq.requestMidasPayment({
  49 + prepayId,
  50 + starCurrency,
  51 + setEnv,
  52 + success(res) {
  53 + // console.log("调用函数成功", res);
  54 + resolve({ code: 0, msg: '支付成功!' })
  55 + },
  56 + fail(err) {
  57 + // console.log("调用函数失败", res);
  58 + resolve({ code: err.errCode, msg: '支付失败' });
  59 + },
  60 + complete(res) {
  61 + console.log("调用完成", res);
  62 + },
  63 + })
  64 + } else {
  65 + reject(res);
  66 + }
  67 + })
  68 + });
  69 + }
  70 +
  71 + private async handlePaySuccess(data: { payid: string, goodid: string, money: number; orderid: string, platform: string }, opts: any, resolve: any, reject: any, t = 1000) {
  72 + let extend = "";
  73 + for (let key in opts) {
  74 + extend += (`${key}=${opts[key]}&`)
  75 + }
  76 + extend = extend.substring(0, extend.length - 1);
  77 + extend = encodeURIComponent(extend);
  78 + let params = {
  79 + ...this.buildParams(),
  80 + extend,
  81 + midasenv: DataService.I.EnvEnum === EnvCode.Prod ? 0 : 1,
  82 + orderid: data.orderid,
  83 + payid: data.payid, goodid: data.goodid,
  84 + type: 1,
  85 + money: data.money,
  86 + platform: data.platform
  87 + };
  88 + var that = this;
  89 + SDKApi.qqOrderReport(params)
  90 + .then(res => {
  91 + if (!res.code) {
  92 + resolve(res);
  93 + } else {
  94 + t = Math.min(t * 2, 60000)
  95 + // console.error("上报失败,重新上报", t)
  96 + setTimeout(() => {
  97 + that.handlePaySuccess(data, opts, resolve, reject, t)
  98 + }, t);
  99 + }
  100 + })
  101 + }
  102 +
  103 + private handlePayError(data: { payid: string, goodid: string, money: number; orderid: string, platform: string }, opts, err: any, reject: any) {
  104 + console.log("支付失败", JSON.stringify(err));
  105 + let type = 2;
  106 + if (err.errCode + '' == '1') {
  107 + type = 3;
  108 + }
  109 + let extend = "";
  110 + for (let key in opts) {
  111 + extend += (`${key}=${opts[key]}&`)
  112 + }
  113 + extend = extend.substring(0, extend.length - 1);
  114 + extend = encodeURIComponent(extend);
  115 + let params = {
  116 + ...this.buildParams(),
  117 + extend,
  118 + midasenv: DataService.I.EnvEnum === EnvCode.Prod ? 0 : 1,
  119 + orderid: data.orderid,
  120 + payid: data.payid, goodid: data.goodid,
  121 + type,
  122 + money: data.money,
  123 + platform: data.platform
  124 + };
  125 + SDKApi.qqOrderReport(params)
  126 + reject(err);
  127 + }
  128 +
  129 + /**
  130 + * 构建支付公用参数
  131 + */
  132 + private buildParams() {
  133 + let gameid = GAMEDATA.game_id;
  134 + let channel = DataService.I.ChannelId;
  135 + let openid = DataService.I.OpenId;
  136 + let brand = WxSystem.I.brand;
  137 + let model = WxSystem.I.model;
  138 + let version = WxSystem.I.version;
  139 + let system = WxSystem.I.system;
  140 + let sdkversion = WxSystem.I.SDKVersion;
  141 + let scene = DataService.I.Scene + '';
  142 + let uid = DataService.I.UserId;
  143 + let token = DataService.I.Token;
  144 + let env = DataService.I.EnvEnum === 1 ? 'pre' : 'prod';
  145 + return {
  146 + gameid,
  147 + openid,
  148 + channel,
  149 + brand,
  150 + model,
  151 + version,
  152 + system,
  153 + sdkversion,
  154 + scene,
  155 + uid,
  156 + token,
  157 + env
  158 + };
  159 + }
  160 +
  161 + private static _instance: QQPay;
  162 + static get I(): QQPay {
  163 + return this._instance || (this._instance = new QQPay);
  164 + }
  165 +}
0 166 \ No newline at end of file
... ...
wxsdk/service/GameService.ts
... ... @@ -6,6 +6,7 @@ import WxApi from &quot;../wx/WxApi&quot;;
6 6 import WxPay from "../wx/WxPay";
7 7 import WxSystem from "../wx/WxSystem";
8 8 import DouyinPay from "../douyin/DouyinPay";
  9 +import QQPay from "../qq/QQPay";
9 10  
10 11  
11 12 export default class GameService {
... ... @@ -64,8 +65,8 @@ export default class GameService {
64 65 return SDKApi.adList({ adtyp, uid: DataService.I.UserId, token: DataService.I.Token })
65 66 }
66 67  
67   - wxencrypted(iv,encryptedData) {
68   - return SDKApi.wxencrypted({iv,encryptedData,openid:DataService.I.OpenId,token: DataService.I.Token,uid: DataService.I.UserId})
  68 + wxencrypted(iv, encryptedData) {
  69 + return SDKApi.wxencrypted({ iv, encryptedData, openid: DataService.I.OpenId, token: DataService.I.Token, uid: DataService.I.UserId })
69 70 }
70 71  
71 72  
... ... @@ -107,7 +108,12 @@ export default class GameService {
107 108 if (cc.sys.platform === cc.sys.BYTEDANCE_GAME) {
108 109 return DouyinPay.I.pay(params, opts);
109 110 } else {
110   - return WxPay.I.pay(params, opts);
  111 + if (typeof qq != 'undefined') {
  112 + console.log("QQ支付")
  113 + return QQPay.I.pay(params, opts);
  114 + } else {
  115 + return WxPay.I.pay(params, opts);
  116 + }
111 117 }
112 118 }
113 119 /**
... ...