| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import { compile, uncompile, unixTimestamp } from "../utils/index.js";
- import request from "../utils/request.js";
- import DnSdk from "./DnSdk.js";
- class checkOrderToReport {
- static instance = null;
- static timer = null;
- static reportDelayMap = [
- //index是report次数 值是delayTime(秒)
- 20, // 立即
- 60, // 1分钟
- 120, // 2分钟
- 180, // 3分钟
- 300, // 5分钟
- 600, // 10分钟
- 1200, // 20分钟
- 1800, // 30分钟
- 3600, // 1小时
- 7200, // 2小时
- ];
- constructor() {}
- async checkOrder() {
- const res = wx.getStorageInfoSync();
- for (let storageKey of res.keys) {
- if (storageKey.indexOf("_extOrderToReport_") > -1) {
- const order = uncompile(wx.getStorageSync(storageKey));
- console.log("order",order);
- const delayTimeMap = checkOrderToReport.reportDelayMap;
- const delayTime = delayTimeMap[order.reportCount];
- const timeDiff = unixTimestamp() - order.timestamp;
- let currentMapIndex = -1;
- for (let i = delayTimeMap.length - 1; i >= 0; i--) {
- if (timeDiff >= delayTimeMap[i]) {
- currentMapIndex = i;
- break;
- }
- }
- if (delayTime == undefined) {
- // 删除超过重试次数的订单
- wx.removeStorageSync(storageKey);
- console.log(storageKey + " removed!");
- continue;
- }
- if (timeDiff >= delayTime) {
- let isPaid=0;
- let isRefused=0;
- // 请求判断是否支付成功
- const res = await request.api("COMMON", {
- do: "getExtPayStatus",
- ext: order.ext,
- order_no: order.order_no ?? null,
- });
- isPaid = res.isPaid ?? 0;
- isRefused = res.isRefused ?? 0;
- // isRefused=1 说明不需要上报
- if (isRefused) {
- wx.removeStorageSync(storageKey);
- console.log(storageKey + " report Refused and removed!");
- } else if (isPaid) {
- DnSdk.getInstance().onPurchase(order.amt * 100); // 腾讯广告小游戏SDK上报
- wx.removeStorageSync(storageKey);
- console.log(storageKey + " report success and removed!");
- } else {
- if (currentMapIndex == delayTimeMap.length - 1) {
- // 删除超过最长重试延时的订单
- wx.removeStorageSync(storageKey);
- console.log(storageKey + " removed!");
- continue;
- }
- if (currentMapIndex > order.reportCount) {
- order.reportCount = currentMapIndex;
- }
- order.reportCount += 1;
- wx.setStorageSync(storageKey, compile(order));
- }
- }
- }
- }
- checkOrderToReport.getInstance().timer = setTimeout(
- checkOrderToReport.getInstance().checkOrder,
- 60000
- );
- }
- run() {
- if (!checkOrderToReport.getInstance().timer) {
- checkOrderToReport.getInstance().checkOrder();
- }
- }
- static getInstance() {
- if (!this.instance) {
- this.instance = new checkOrderToReport();
- }
- return this.instance;
- }
- }
- export default checkOrderToReport;
|