ios 中 localStorage 与 微信支付 的坑(工作记实)

2024-09-05 02:38

本文主要是介绍ios 中 localStorage 与 微信支付 的坑(工作记实),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系统:IOS

浏览器:Safari

上星期遇到一个IOS支付的问题。需求如下:

  1. 在 页面A 拉起 微信支付;
  2. 支付成功后返回 页面A 弹出支付确认弹窗;
  3. 点击弹窗校验订单支付情况;

根据需求代码实现如下:

  1. 在 页面A 请求后端接口 创建 微信支付链接 和 订单编号 并 通过 localStorage 保存本次的 订单编号(设id:1);
  2. 在 页面A 打开 微信支付链接 成功拉起微信支付功能;
  3. 微信支付后 返回 页面A 点击 支付确认弹窗 将 localStorage 的 id 发送给后端校验订单支付情况;

正常情况下,确实没有问题。可是当用户首次取消支付,再重新创建订单 (设 id:2)。再支付成功后 返回 页面A ,这时候再点击 支付确认弹窗按钮时,读取的 localStorage 的值既然是 第一次创建的订单编号 id=1。

当我点击 Safari 浏览器的窗口管理时,发现居然同时存在两个 页面A,恰好 微信支付成功后返回的页面居然是第一次的窗口,所以不管后面重新创建多少次订单,localStorage 的数据 id 始终是第一次创建时保存的。切换到浏览器的另一个 页面A 窗口,发现值又是最新的。这就难受了,好好的居然出这茬,怎么办?

最开始我是使用的 sessionStorage 经过网上一顿操作后,得知要使用 localStorage。后来 localStorage 都有问题后,我才去排查是不是 订单编号 出了问题。最后找到了原因,解决办法其实很简单,使用 cookie 就可以啦。此时此刻,除了想太阳库克,也没有别的想法了。

也许除了文中的情况之外 ,其它的有可能创建新窗口的情况下也有同样的问题,大家在使用 sessionStorage 和 localStorage 时应当考虑该问题。

本篇文章希望能帮助到与我一样“捉鸡”的大前端。没啥想说的,一起太阳他!

作者:黄河爱浪 QQ:1846492969,邮箱:helang.love@qq.com

公众号:web-7258,本文原创,著作权归作者所有,转载请注明原链接及出处。

更多精彩文章,请扫下方二维码关注我的公众号

这篇关于ios 中 localStorage 与 微信支付 的坑(工作记实)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137733

相关文章

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

Redis迷你版微信抢红包实战

《Redis迷你版微信抢红包实战》本文主要介绍了Redis迷你版微信抢红包实战... 目录1 思路分析1.1hCckRX 流程1.2 注意点①拆红包:二倍均值算法②发红包:list③抢红包&记录:hset2 代码实现2.1 拆红包splitRedPacket2.2 发红包sendRedPacket2.3 抢

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I