微信小程序嵌套h5页面怎么实现小程序支付

2023-11-03

微信小程序嵌套h5页面怎么实现小程序支付

小程序嵌套h5页面怎么实现小程序支付小程序中嵌套h5页面,但是不能再h5页面拉起小程序支付,这时是需要小程序方拉起支付

目前的流程,外链发送订单请求拿到预支付的prepay_id和其他参数,小程序这边只需要将它传过来的参数(wxJson)接收并解析完拼接到wx.requestPayment微信调起支付的接口参数中用来发起微信支付

<--interHosp.wxml-->
<view bindtap="gopay" style="color: red;">打开支付页面</view>
//interHosp.js
// 测试打开支付页面
  gopay(){
    var am={
      success:1,
      data:{
      "sign":"A7BC1E3515F",
      "result_code":
      "SUCCESS",
      "mch_id":"150022",
      "timeStamp":1616142724,
      "prepay_id":"w91610c0c90000",
      "return_msg":"OK",
      "appid":"e695d4",
      "nonce_str":"PLiMflq5F2xDPtU2",
      "return_code":
      "SUCCESS",
      "trade_type":"JSAPI"
    }
    }
    wx.navigateTo({
      url: `./../payhosp/payhosp?amount=${JSON.stringify(am)}`,
    })
  },

payhosp.js,payhosp.wxml的页面直接是空白的

   onLoad: function (options) {
        // 支付前需要prepay_id,
        var res= JSON.parse(options.amount); //打开支付页面时,传过来的信息
        console.log(res)

        wx.requestPayment({
            'timeStamp': res.data.timeStamp.toString(),   //时间戳
            'nonceStr': res.data.nonce_str,     //随机字符串
            'package': `prepay_id=${res.data.prepay_id}`,       //prepay_id参数值
            'signType': 'RSA',                      //签名类型
            'paySign': res.data.sign,       //签名,使用appId、timeStamp、nonceStr、package计算得出的签名值
            'success': function (res) {
                console.log(res)
                //定义小程序页面集合
                var pages = getCurrentPages();
                //当前页面 (wxpay page)
                var currPage = pages[pages.length - 1];
                //上一个页面 (index page)
                var prevPage = pages[pages.length - 2];
                //通过page.setData方法使index的webview 重新加载url 有点类似于后台刷新页面
                //此处有点类似小程序通过加载URL的方式回调通知后端 该订单支付成功。后端逻辑不做赘述。
                wx.redirectTo({ url: '/pages/interHosp/interHosp' });
                //小程序主动返回到上一个页面。即从wxpay page到index page。此时index page的webview已经重新加载了url 了
                //微信小程序的page 也有栈的概念navigateBack 相当于页面出栈的操作
                wx.navigateBack();
                
            },
            'fail': function (res) {
                console.log("支付失败");
              console.log(res);
              var pages = getCurrentPages();
              var currPage = pages[pages.length - 1];
              var prevPage = pages[pages.length - 2];
              console.log("准备修改数据");
            //   wx.redirectTo({ url: '/pages/index/index' });
            wx.redirectTo({ url: '/pages/interHosp/interHosp' });
              console.log("准备结束页面")
              // wx.navigateBack();
            },
            complete:function(res){

            }
        })
    },

注意:

在wx.requestPayment支付方法中不能用success来判断用户支付成功,在这里面只有用户点击了“完成”后,才会执行success函数,但是此时用户可能已经支付完成

那怎么判断用户已经支付成功了呢?

微信小程序支付文档中提到“支付通知”

https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter4_5_5.shtml

微信支付通过支付通知接口将用户支付成功消息通知给商户

注意:

• 同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。 推荐的做法是,当商户系统收到通知进行处理时,先检查对应业务数据的状态,并判断该通知是否已经处理。如果未处理,则再进行处理;如果已处理,则直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。

• 如果在所有通知频率后没有收到微信侧回调,商户应调用查询订单接口确认订单状态。

**特别提醒:**商户系统对于开启结果通知的内容一定要做签名验证,并校验通知的信息是否与商户侧的信息一致,防止数据泄露导致出现“假通知”,造成资金损失。

  • 支付通知是在基础下单接口中的请求参数“notify_url”来设置的,要求必须为https地址。请确保回调URL是外部可正常访问的,且不能携带后缀参数,否则可能导致商户无法接收到微信的回调通知信息。回调URL示例: “https://pay.weixin.qq.com/wxpay/pay.action”

  • 用户支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理该消息,并返回应答。

  • 支付通知是以post的方式,已json格式发送通知结果,通知的数据包括了加密的支付结果详情。

具体的通知参数详见微信文档

小程序拉起支付参考文档:https://blog.csdn.net/weixin_30378311/article/details/97171759

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序嵌套h5页面怎么实现小程序支付 的相关文章

  • JAVA:List复制

    ArrayList的复制方法有几种 我们这边分别列出来 并且判断了更改复制的List会不会对原List有影响 初始List ArrayList
  • 测试及时通讯工具

    来自 51Testing软件测试论坛 测试像QQ那样的及时通讯工具 应该如何测试 参考答案 1 首先以核心功能为中心进行测试工作的部署 比如 关键功能或核心功能 收发等等 因为有可能联动一些其他辅助功能 事先进行规划部署 2 综合利用场景分
  • Java中的装包(装箱)和拆包(装包)

    装箱和拆箱 在Java的学习中 我们有的时候会设计装箱和拆箱的概念 也就是常说的装包和拆包 这篇博客将详细讲解一下装箱和拆箱的概念及其用途 装箱 装包 将基本数据类型转换成包装类类型 拆箱 拆包 将包装类类型转换成基本数据类型 装箱 注意
  • 2023年应届生招聘和薪酬管理

    导读 2023年高校毕业生春季招聘正在如火如荼开展 校招选拔 应届生起薪等话题成为企业近期关注的焦点 随着校招需求增加 企业表示招聘难度也有所加大 尤其是热门岗位 紧缺专业和优质生源的应届生 如何制定有吸引力的校招策略和有竞争力的应届生起薪
  • 博客地址 linlin.fun

    暂时不用csdn了 网络太慢了 csdn博客内容已经抓取到linlin fun
  • 基于springboot微服务项目的父工程、common模块的构建

    概述 以微服务项目的方式 对软件体系进行一个简单的探究 简略说明 为什么这样做 软件中这样做的原因是什么 结合一定的案例给出 父工程 对于父工程模块中重要的是其中的pom文件 在微服务体系下 不能够过多 比如在子模块中会自己引入的 就不要在
  • 最长滑雪道-蓝桥杯练习-python实现

    最长滑雪道 问题描述 小袁非常喜欢滑雪 因为滑雪很刺激 为了获得速度 滑的区域必须向下倾斜 而且当你滑到坡底 你不得不再次走上坡或者等待升降机来载你 小袁想知道在某个区域中最长的一个滑坡 区域由一个二维数组给出 数组的每个数字代表点的高度

随机推荐

  • FileZilla Server超详细配置

    FileZilla Server超详细配置 FileZilla Server下载安装完成后 必须启动软件进行设置 由于此软件是英文 本来就是一款陌生的软件 再加上英文 注 本站提供中文版本 请点击下载 配置难度可想而知 站长从网上找到一篇非
  • mac m2 编译dubbo3.1.x版本报Missing:com.google.protobuf:protoc:exe:osx-aarch_64

    原因是低版本的protobuf和grpc不支持MacBook m1或m2 protobuf 需要使用x86的protobuf 解决方法 1 单独修改configuration
  • JavaScript中数组去重的5种方法是什么

    数组去重的5种方法 1 用 new Set arr 语句去重 2 用 Array from new Set arr 语句去重 3 利用indexOf 去重 4 利用includes 去重 5 利用filter 去重 数组去重的方法 1 ne
  • vue this.$emit(‘close‘)

    父页面
  • 【matlab-in-vscode配置流程】在vscode上的逐块编译matlab

    读了 https zhuanlan zhihu com p 616873284 这篇文章 看起来好像很厉害的样子 于是想部署一下matlab in vscode这个插件 遇到了一些坑 于是记录 安装插件 直接在vscode搜索maltab
  • Java 解压压缩文件,springMVC 接收压缩文件

    解压 zip rar 类型的压缩文件 1 首先需要 jar 包 ant 1 6 5 jar 解压zip格式的压缩文件 junrar 0 7 jar 解压rar 格式 如果是 maven
  • Spring Beans 详解

    目录 1 如何命名 Beans 2 如何实例化 Beans 3 确定 Bean 的运行时类型 Spring IoC 容器用来管理一个或多个 bean 这些 bean 通过用户提供的配置文件创建 例如 xml 格式的
  • 论文写作课程收获总结

    1 学术论文的作用 达到毕业条件 评职称 知识的传承和学术的宣传 2 小白写论文的初期步骤 读文献 总结模板 最后在自己的模板上写 当然也可以用别人的模板写 3 写论文得趁早 因为论文发表周期真的很长 ps 徐媛媛老师有一篇论文好像就经历了
  • Maven如何导入jar包

    一 通过修改pom xml文件添加依赖关系 1 到http maven aliyun com nexus welcome上搜索相应的包 复制文本内容 2 打开项目中的pom xml文件 图中2处需先添加
  • ElasticSearch第十五讲 ES数据写入过程和写入原理以及数据如何保证一致性

    Es的数据并发冲突 ES 数据并发冲突控制是基于的乐观锁和版本号的机制 一个document第一次创建的时候 它的 version内部版本号就是1 以后 每次对这个document执行修改或者删除操作 都会对这个 version版本号自动加
  • deepin 远程linux,在Deepin系统下快速安装和配置XRDP远程连接的关键点

    在Deepin系统下安装XRDP非常的简单 只需要在终端中执行sudo apt install xrdp命令即可 配置实现XRDP远程连接也非常的简单 通过以下方法使你快速完成安装和配置XRDP的操作 前言 在系统中安装XRDP后 Deep
  • APK安装后在桌面的图标列表里不显示/显示的方法

    当我们的程序在被安装后再次重启系统时系统会自动创建我们的APK程序 在所有的APK程序都安装完后系统会最后安装Luncher2 apk 应用程序 Luncher2 apk就是我们的系统界面应用程序 它会检测系统已经安装的应用软件的包名 然后
  • HDU-2061 汉诺塔III (简单DP)

    约19世纪末 在欧州的商店中出售一种智力玩具 在一块铜板上有三根杆 最左边的杆上自上而下 由小到大顺序串着由64个圆盘构成的塔 目的是将最左边杆上的盘全部移到右边的杆上 条件是一次只能移动一个盘 且不允许大盘放在小盘的上面 现在我们改变游戏
  • latex 1图加标题_LaTeX 公式篇

    LaTeX 始于公式 忠于优雅 很长一段时间 数学公式的编辑都是采用MathType解决的 但是直到我遇到了LaTeX的公式便一见倾心 久久不能释怀 简介 相信很多做学术的科研狗应该都是听过LaTeX排版写出来的Paper是多么的好看 颜值
  • 2013年8月20日星期二(DEMO7-19DX与GDI混合使用)

    只需要在ddraw中找到一个兼容DC 就可以使用 使用完之后再释放 函数实现为 int Draw Text GDI char text int x int y COLORREF color LPDIRECTDRAWSURFACE7 lpdd
  • 修改网站图标以apache tomcat为例

    路径在 opt apache tomcat 9 0 6 webapps ROOT 把该路径下的favicon ico文件换成自己的 名字必须也是要favicon ico
  • [技术讨论]遇到电路反馈怎么办,看这里

    在做电路反馈分析的时候 经常会看到术语电压串联负反馈 电流串联负反馈之类的定义 那么这些定义对电路分析的作用在哪里呢 各种教科书都讲到 反馈的性质和反馈类型的确定是讨论反馈放大器性能的前提 在大部分实际电路中 放大器和反馈网络总是联系到一起
  • 在终端上查询git的工具

    tig
  • [YOLO专题-22]:YOLO V5 - ultralytics代码解析-超参数详解

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122372614 目录 前言 第1章
  • 微信小程序嵌套h5页面怎么实现小程序支付

    微信小程序嵌套h5页面怎么实现小程序支付 小程序嵌套h5页面怎么实现小程序支付小程序中嵌套h5页面 但是不能再h5页面拉起小程序支付 这时是需要小程序方拉起支付 目前的流程 外链发送订单请求拿到预支付的prepay id和其他参数 小程序这