微信小游戏内购米大师支付,不同金额创单问题处理

这篇具有很好参考价值的文章主要介绍了微信小游戏内购米大师支付,不同金额创单问题处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、问题描述
        微信小游戏的内购支付,接入的是米大师支付。先简单介绍下通用逻辑:

1)、用户点击游戏内下单

2)、客户端构造订单物品等参数并发给服务端

3)、服务端接收后,生成唯一订单号等内部逻辑处理后,返回客户端下单需要的参数

4)、客户端调用微信下单接口,wx.requestMidasPayment(Object object) | 微信开放文档,并将结果上报给服务端

5)、服务端根据客户端的支付上报结果,分时轮询对应订单的用户余额

6)、对用户余额进行扣款,并修改对应订单状态

7)、通知游戏服务端订单状态,并发货给用户

初看,逻辑很清晰,没啥问题,但是第4步经常会返回错误的结果(客户端),比如没有返回(比较多出现)或者说用户支付了但返回支付失败(相对比较少)。这样就导致部分用户支付后没有得到应有的物品,掉单。

微信小游戏内购米大师支付,不同金额创单问题处理

 文章来源地址https://www.toymoban.com/news/detail-494371.html

二、旧解决方案

        1)通过上面问题描述,知道靠客户端返回的结果不可靠,那为了用户不掉单,就只能自己想办法了,曲线救国。首先就是服务端不依赖于客户端的返回结果才去请求验证用户余额,或者说没收到返回的时候依然去请求验证用户余额(失败的如果压力不大,订单少也可以请求验证,成)。这样就保证了订单都有轮询到去验证。这样虽然解决了掉单问题,但是衍生出了新的麻烦。

        2) 麻烦就是,所有订单都轮询了,这样就包含很多用户实际没支付的订单,这样就容易出现串单问题了。串单原因就是,微信是通过用户查询余额的,并没有订单啥事。那假如用户查询到余额有12块钱,用户有两笔6块和一笔12块的订单。那查询到的这12块钱,到底算2笔6块身上,还是12块订单身上呢。要知道用户支付到轮询结果是有时间差的,并不是即时结果。这样甚至会出现先扣了小金额的,比如先扣了1笔6块,后面的12块订单也不够余额扣款了。

        3)为了减少串单问题,之前我们这边的做法就是如果余额不等于订单金额,就先记录下来,等用户所有订单查询完,再先扣大金额订单后扣小金额订单。这样虽然能减少部分串单情况,但依然没彻底解决问题,偶尔也会跑出一两笔串单的,这时候就得手动折腾处理了,很是麻烦

        4)这个问题由来已久,最开始18年接入时候询问的,至今没找到啥好办法,一度怀疑是只有我们遇到而已

        小游戏米大师支付串单 | 微信开放社区

微信小游戏内购米大师支付,不同金额创单问题处理

 三、新方案

1)串单解决思路,就是无法确定哪笔订单是有实际支付的,以前一直停留在这个思路上,一直没找到合适方案。后面经同事提醒转变了思路,不能区分订单,就区分订单金额,手动给订单区分,比如6块钱的一类,12块钱的一类,这样至少6块不会串到12块的来,就是剩下可能的串单也是同金额的串,就问题不大了。

2)重新查看【wx.requestMidasPayment(Object object) | 微信开放文档】这个接口说明,看到里面有一个zoneId分区的参数,我们的解决方式就通过这个参数。我们先按照游戏内可能的金额挡位配置分区,或者将微信里面所有挡位都配置上。然后用户下单请求接口的时候,根据订单金额,带上对应的分区。这样相当于用户钱包人为区分成多个小钱包,每个小钱包对应不同的订金额,6块的就只去6块的钱包查询余额,如此就解决了不同金额串单的问题了。

微信小游戏内购米大师支付,不同金额创单问题处理

 

到了这里,关于微信小游戏内购米大师支付,不同金额创单问题处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity - 微信小游戏

    总参考:Unity WebGL 微信小游戏适配方案(公测)   下载 Unity插件,并导入至游戏项目中,版本更新请查看更新日志 请查阅推荐引擎版本,安装时选择 WebGL 组件 最终选择 Unity2021.2.5f1c1 InstantGame 前往Node官网安装长期稳定版 之前已安装 v16.17.0 前往微信开发者工具下载安装 Stable

    2024年02月06日
    浏览(58)
  • 现有Unity转微信小游戏

    关于微信小游戏开发的内容在《Unity WebGL 微信小游戏适配方案》中有详细,这里会忽略大部分更深入的细节,大家可以自行在下面的地址中找到答案。 此篇文章的目的是带着大家快速的把自己已有的游戏转成微信小游戏。 《Unity WebGL 微信小游戏适配方案》地址: https://gith

    2023年04月08日
    浏览(81)
  • 微信小程序猜数字小游戏

     我的首页(效果图)使用的是index03 开始游戏使用的是index 游戏规则使用的是index01 关于其他使用的是index02 (创建文件在app.json里面,这是我的app.json创建的文件) (由于我的首页效果图使用的是index03,所以要放在前面) WXML代码 WXSS代码 WXML代码 WXSS代码 index.js代码 WXML代码 WX

    2023年04月10日
    浏览(52)
  • 小程序游戏对接广告收益微信小游戏抖音游戏软件

    小程序游戏对接广告是一种常见的游戏开发模式,开发者可以通过在游戏中嵌入广告来获取收益。以下是一些与小程序游戏对接广告收益相关的关键信息: 小程序游戏广告平台选择: 选择适合你的小程序游戏的广告平台非常重要。不同的平台提供不同类型的广告,包括横幅

    2024年02月04日
    浏览(49)
  • unity转微信小游戏数据存储

    unity程序转成微信小游戏以后 File.WriteAllText 和 File.ReadAllText由于路径问题不生效。 这个时候需要采用微信自己的存储路径来把用户信息保存下来。 private void LoadPlayerData() { #if UNITY_EDITOR || UNITY_ANDROID || UNITY_IOS if (File.Exists(filePath)) { playerDataString = File.ReadAllText(filePath); m_PlayerData

    2024年02月10日
    浏览(47)
  • unity微信小游戏——排行榜

    设置时记住排行榜唯一标识 此处建议使用官方案例的UI进行修改 minigame-unity-webgl-transform: Unity WebGL 微信小游戏适配方案 (gitee.com) DemoRanking这个项目就是 1.新建Canvas 此处要选择Overlay 否则排行榜会无法拖动 此处RankingBox默认状态为SetActive(false) bg:排行榜背景 也可以把背景让在

    2024年02月02日
    浏览(56)
  • 【C++】做一个飞机空战小游戏(六)——给两架飞机设置不同颜色(cout输出彩色字符、结构体使用技巧)

      [导读]本系列博文内容链接如下: 【C++】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C++】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动 【C++】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C++】做一个飞

    2024年02月14日
    浏览(48)
  • Unity微信小游戏使用微信云开发记录

    最近项目上架微信小游戏,首先使用了微信官方sdk转成微信小游戏,官方地址如下: https://github.com/wechat-miniprogram/minigame-unity-webgl-transform 官方给了各种指导,虽然都有但是都不太精哈哈 因为要做排行榜,云存档,而我司没服务器,那只能用微信云开发了。具体开通啥的初始

    2023年04月09日
    浏览(54)
  • 用微信小游戏实现龙舟大战-打粽子

    端午节来啦!各位c粉有没有吃粽子啊! 端午节来啦!今天沉默带大家来做个关于端午节的小游戏,我的设计思路是用龙舟打粽子,类似于飞机大战,只不过我们的场景是在河中。源码在文章后获取哟! 提示:以下是本篇文章正文内容,下面案例可供参考 下面是小游戏的开发

    2024年02月09日
    浏览(42)
  • 微信小程序、小游戏反编译获取源码

    提示:需要准备如下材料 Node.js 去下载 反编译脚本git地址: https://gitee.com/lmqandwfy/wechat-applet-decompile-script.git 模拟器,这里我使用的是夜神模拟器,自行安装 废话不多说,直接进入正题,以下为我使用的夜神模拟器示例 设置夜神模拟器,设置中找到超级用户 点击右上角设置 自

    2024年02月13日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包