由于最近公司业务调整,需要在小程序的webview中拉起小程序的微信支付,经过各种爬坑和搜索,找到如下结果方法,供大家参考:

一、判断小程序浏览器

使用 USER_AGENT判断小程序还是公众号浏览器还是APP:

if(strstr($_SERVER['HTTP_USER_AGENT'],'mini')){

$isminiapp= 1;

}

$payParam = array(); //支付参数

然后生成支付的参数,支付的签名和统一下单不在此细说,可自行百度或者使用各种开源代码

二、将支付的参数返回给小程序

首先使用php引入一个小程序的js包:

echo '';

然后跳转给小程序的某个页面:

echo '

url: '/pages/login/login?json='.json_encode($payParam);

})';

url 的地址由小程序提供

三、在小程序里接收此json参数,拉起微信支付

onLoad: function (obj) {

console.log(obj)

//获取options的订单Id

var orderId = obj.orderId;

//调起微信支付

wx.requestPayment({

'appId': '',

'timeStamp': obj.timestamp,

'nonceStr': obj.nonceStr,

'package': 'prepay_id=' + obj.prepay_id,

'signType': obj.signType,

'paySign': obj.paySign,

//小程序微信支付成功的回调通知

'success': function (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的方式回调通知后端 该订单支付成功。后端逻辑不做赘述。

prevPage.setData({

url: '',

}),

//小程序主动返回到上一个页面。即从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("准备修改数据")

prevPage.setData({

url: "https://xxxxxxxxxx/wx_isPayment.jhtml?orderId=" + orderId + '&ispay=0',

}),

console.log("准备结束页面")

wx.navigateBack();

}

})

},

webview 个人小程序_微信小程序webview中,拉起小程序的微信支付 | 剑花烟雨江南...相关推荐

  1. asp.net应用程序_如何在ASP.NET中为聊天应用程序构建键入指示器

    asp.net应用程序 by Neo Ighodaro 由新Ighodaro 如何在ASP.NET中为聊天应用程序构建键入指示器 (How to build a typing indicator fo ...

  2. python日程提醒小程序_用手机APP管理日程太繁琐?试试这个微信小程序

    随着我们日常生活.学习以及工作的日益繁忙,合理安排自己的日程事项变得越来越重要.相信大家在自己的手机里也安装过一些任务管理APP,可是真正坚持用下来的人又有多少呢?如果你觉得手机里的任务管理APP功能 ...

  3. 微软小娜打开应用程序_利用您现有的Microsoft投资进行应用程序白名单

    微软小娜打开应用程序 Application Whitelisting? What Is It? 应用白名单? 它是什么? I consider a firewall to be a Yes / No ...

  4. python中函数是一段子程序_用Python来写一个男女相亲小程序|码农的情人节

    功能: 你输入你的性别,年龄,生日,我程序就给匹配一下你喜欢的类型,下面我们具体来讲讲怎么用Python写 第一部分:用户输入部分 1.获取用户的输入:我们用raw_input() args =raw ...

  5. python烟花小程序_七夕用python给男朋友写的小程序,感动哭了。

    tkinter做的GUI图形界面 登陆界面,输入账号密码点击照片登陆. 登陆界面 密码输入错误则出现以下弹窗: 试图关闭界面,则出现以下弹窗: image.png 输入密码登陆以后开始答题,请忽视这个 ...

  6. listview 每行后面的小箭头_几个简单而有用的电脑小知识

    1: 怎么用批处理文件删除桌面快捷菜单的小箭头? A:在电脑记事本中,复制以下内容并保存为.bat 后缀名文件,保存在桌面双击运行即可 清除快捷菜单的小箭头! @ECHO OFF reg delete ...

  7. vscode中运行2个程序_在64位系统中运行32位或16位程序

    由于CPU和系统架构的更新,现行主流的Windows系统已经是64位.然而许多人还恋恋不舍的一些老游戏或老程序已经没有了更新.在64位的系统上运行这些程序,往往会出现运行故障.如何才能解决这个烦心事? ...

  8. 用java编写验证码程序_编写,验证和分析实时Java应用程序

    本文是" 用实时Java开发"系列的第三篇也是最后一部分,展示了如何设计,编写,验证和分析基本的实时应用程序. 我们将说明: 应用程序的时间和性能要求. 为什么传统的非实时Java ...

  9. 蓝牙小电池图标_方寸间、掌握中,omthing小方盒开箱测评

    市面上的蓝牙耳机越来越多,每一款都让"打工人"感觉到迷惑,到底什么是最好?什么才是最适合"打工人"的耳机?今天我们开箱的这款万魔声学旗下品牌omthing的首款 ...

最新文章

  1. iOS 图片处理-利用GPUImage 磨皮和美白图片
  2. Eclipse生成jar文件
  3. 【大厂攻略】Android开发3年当了2年咸鱼每天CRUD,复习2个月幸运拿下美团offer!
  4. 数字货币 矿池 矿场 区别
  5. 量子计算机怎么储存,单个比特可以存储更多的信息 量子计算机时代真的要来了?...
  6. hdu5248序列变换(二分+贪心)基础题
  7. 【深度学习】ReLU激活函数的缺点
  8. 5.Excel日期时间函数类应用
  9. [Swift]LeetCode897. 递增顺序查找树 | Increasing Order Search Tree
  10. CodeForces Round #191 (327C) - Magic Five 等比数列求和的快速幂取模
  11. jqueryui时间插件_jQueryUI Progressbar插件
  12. UPS输出连接要求IEC C320 C13,输入连接要求(6)IEC 320 C14
  13. Redis主从复制知识点
  14. 第三方网站接入秀米,实现秀米编辑的文章同步到自己的网站平台
  15. 怎么查计算机的ip,教你如何查询电脑ip地址的方法
  16. 关于RTP的一些背景知识
  17. Xrm.WebApi 多对多关系处理
  18. 知识蒸馏 | (1) 知识蒸馏概述
  19. Log4j2 重大漏洞与解决方案
  20. Connection id “0HMGNTPDIIA4M“.Request id “0HMGNTPDIIA4M:00000001“:An unhandled exception was thrown

热门文章

  1. 软件测试面试题:优惠券的测试点包含哪些方面?测试点包含哪些方面?
  2. EBAZ4205矿机摄像头扩展板
  3. Zabbix监控服务器异常IP登录
  4. Excel基础(二):Excel公式函数
  5. Android开启telnet服务
  6. 测试工程师,跳槽涨了4k,年总包算下来还降薪了?
  7. SQL Server中遇到的(1行受影响)
  8. KDD2021 | 左右互搏:基于协同对比学习的自监督异质图神经网络
  9. 对DBpedia各子数据集特点分析
  10. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和, 例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19