微信小游戏/抖音小游戏SDK接入踩坑记录

文章目录

  • 前言
  • 问题记录
    • 1、用是否存在 wx 这个 API 来判断是微小平台还是抖小平台不生效
    • 2、微小支付的参数如何获取?
    • 3、iOS 平台不支持虚拟支付怎么办?
      • 微小 iOS 端支付时序图:
      • 抖小 iOS 端支付:
    • 4、展示广告时多次回调 onClose
    • 5、在使用单例时 this 引起的 bug
    • 6、使用 fetch 或 axios 封装网络请求框架时编译报错

前言

上两篇文章写了如何搭建一个小游戏聚合SDK以及如何打包前端SDK,这篇文章会记录我在接入微小和抖小时遇到的问题及解决办法。

问题记录

1、用是否存在 wx 这个 API 来判断是微小平台还是抖小平台不生效

官方没有提供判断是微小环境和抖小环境的API,在聚合SDK里需要想办法判断当前环境然后调用对应环境的API,比如在微小环境下不能调用到抖音的登录。微小的API都是 wx 调用,抖音的API 都是 tt 调用,当使用这个区别来区分环境时发现并不生效,原因是抖小也引入了wx api 。需要查找其他办法。

**方法一:**可以根据小游戏 appId 来判断,微小 appIdwx 开头的,比如 wx05be1ceba191eb56 ,抖小的 appIdtt 开头的,比如:tt98abci12lhhiopw52

**方法二:**在官方 API 文档中查到各自特有方法判断,比如抖小的 API tt.getLaunchOptionsSync 微小就没有。另 tt.getLaunchOptionsSync 这个 api 可以获取抖小的小游戏 appIdwx.getAccountInfoSync 就是微小特有的 API。

// 平台检测
export function getPlatformType() {
  if (typeof wx.getAccountInfoSync !== 'undefined' && typeof wx.getSystemSetting === 'function') {
    return WeChatMiniSDK
  } else if (typeof tt.getLaunchOptionsSync !== 'undefined' && typeof tt.canIUse === 'function') {
    return DouyinMiniSDK
  } 
}

2、微小支付的参数如何获取?

根据微小支付文档API https://developers.weixin.qq.com/minigame/dev/api/midas-payment/wx.requestMidasPaymentGameItem.html 在前端调用微小支付接口时需要传递 paySigsignature ,但是这两个参数的参数签名都不是前端生成的,需要服务端生成。也就是在用户创建微小订单时需要先向开发者服务端获取签名信息,至于如何简化流程可以和开发者服务端商量。

3、iOS 平台不支持虚拟支付怎么办?

根据微小/抖小后台虚拟支付的开通里提示,虚拟支付是不支持 iOS 端的。经过调研现有小游戏,iOS 端的支付都是开发者另辟蹊径实现的。微小/抖小的流程也并不一致,下面分开说。

微小 iOS 端支付时序图:

在这里插入图片描述

  1. 用户发起支付
  2. CP创建订单,向中台前端SDK

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/925253.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

wkhtmltopdf的安装与使用

本文来记录下wkhtmltopdf的安装与使用 文章目录 概述下载路径安装配置wkhtmltopdf 参数详解代码实现本文小结 概述 将html转为pdf的组件有很多,但是还没有哪一款能达到这个效果,其只要原因是wkhtmltopdf使用webkit网页渲染引擎开发的用来将 html转成 pdf…

消息队列详解:从基础到高级应用

本文主旨 撰写这篇文章的目的在于向读者提供一个全面理解消息队列概念及其在实际应用中重要性的指南。通过从RocketMQ的基础组件如生产者、消费者、主题等的介绍到更高级的概念,比如集群消费与广播消费的区别、顺序消息的重要性等,我们希望能够帮助开发…

【MySQL篇】持久化和非持久化统计信息的深度剖析(第一篇,总共六篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

redis大key和热key

redis中大key、热key 什么是大key大key可能产生的原因大key可能会造成什么影响如何检测大key如何优化删除大key时可能的问题删除大key的策略 热key热key可能导致的问题解决热key的方法 什么是大key 大key通常是指占用内存空间过大或包含大量元素的键值对。 数据量大&#xff…

C++语法·叭

阁下何不乘风起,扶摇直上九万里。 qi fei 目录 内存管理 分区介绍 1.栈区: 2.内存映射段: 3.堆: 4.数据段: 5.代码段: 补充: C内存管理(简略回忆) C内存…

elasticsearch单节点模式部署

原文地址:elasticsearch单节点模式部署 – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 第一步:下载 官方下载地址:Download Elasticsearch | Elastic,可以 wget 直接下载。 命令:wg…

【北京迅为】iTOP-4412全能版使用手册-第二十章 搭建和测试NFS服务器

iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…

Spring AOP相关知识详解

难 文章目录 1.AOP介绍1.1 面向切面编程 - Aspect Oriented Programming (AOP)1.2 优点 2.AOP的概念2.1 连接点、切入点、通知、切面:2.2 注解2.2.1 通知类型2.2.1.1 通知的优先级排序 2.2.2 其他重要注解2.2.3 示例代码(四种通知) 3.Spring …

外包干了3年,技术退步明显...

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…

【阅读记录-章节4】Build a Large Language Model (From Scratch)

文章目录 4. Implementing a GPT model from scratch to generate text4.1 Coding an LLM architecture4.1.1 配置小型 GPT-2 模型4.1.2 DummyGPTModel代码示例4.1.3 准备输入数据并初始化 GPT 模型4.1.4 初始化并运行 GPT 模型 4.2 Normalizing activations with layer normal…

C7.【C++ Cont】范围for的使用和auto关键字

目录 1.知识回顾 2.范围for 格式 使用 运行结果 运行过程 范围for的本意 作用 注意 3.底层分析范围for的执行过程 反汇编代码 分析 4.auto关键字 格式 基本用法 在范围for中使用auto 1.知识回顾 for循环的使用参见25.【C语言】循环结构之for文章 2.范围for C…

【数据结构】双向链表、单向循环链表、双向循环链表、栈、链栈

目录 一、双向链表 定义类和封装函数以及测试样例如下: 注意事项: 二、循环链表 单循环列表的类和函数封装如下: 注意事项: 三、双向循环链表 结点类和双循环链表的定义部分 函数封装之判空和尾插 双循环链表遍历 双循…

ModuleNotFoundError: No module named ‘_ssl‘ centos中的Python报错

1、检查系统有没有openssl,有的话,就是python安装时没有指定openssl openssl version,有输出版本号就有,没有的话,需要手动安装 下载地址 参见https://www.openssl.org/,包括以下版本: https:/…

C语言:树

在C语言中,树(Tree)是一种常见的数据结构,用于表示分层关系或层次结构的数据集合。树在计算机科学中广泛应用,包括但不限于文件系统、解析表达式、数据压缩、决策树等。 1. 基本概念 节点(Node&#xff0…

python写的服务,用docker制作镜像并且打包

步骤1 简单写一个python服务脚本app.py,通过http访问一个端口,收到helloworld from flask import Flask, request app Flask(__name__) app.route(/, methods[GET]) # 确保包括GET方法 def hello_world(): return Hello, World! if __name__ __main…

NSSCTF web刷题

1 虽然找到了flag,但是我要怎么去改他的代码,让他直接输出flag呢? (好像是要得到他的json代码,这题不让看) 2 wllm应该就是他的密码,进入许可了 意思是服务器可以执行通过POST的请求方式传入参数为wllm的命令,那这就是典型的命令执行,当然&#xff0c…

(0基础保姆教程)-JavaEE开课啦!--11课程(初识Spring MVC + Vue2.0 + Mybatis)-实验9

一、什么是Spring MVC? Spring MVC 是一个基于 Java 的 Web 框架,遵循 MVC 设计模式,用于构建企业级应用程序。它通过控制器(Controller)处理用户请求,模型(Model)处理业务逻辑,视图(View)展示数据,实现了请…

FCBP 认证考试要点摘要

理论知识 数据处理与分析:包括数据的收集、清洗、转换、存储等基础操作,以及数据分析方法,如描述性统计分析、相关性分析、数据挖掘算法等的理解和应用 。数据可视化:涉及图表类型的选择与应用,如柱状图、折线图、饼图…

「Qt Widget中文示例指南」如何为窗口实现流程布局?(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文将展示如何为不…

智能产品综合开发 - 手势识别

1 实训选题目的 本次实训选择的题目是“基于树莓派的手势识别系统”,旨在为人们提供一种便捷的交互方式,使用户能够通过手势控制智能设备,摆脱传统的物理按键操作。通过本项目,我们希望能实现快速、灵活的手势识别,提升…