微信公众号H5支付接口调用方法
作者:来自星星的马 发布时间:2023-07-02 05:19:04
标签:H5,微信公众号,支付
本文实例为大家分享了 微信内H5调用支付接口的具体代码,供大家参考,具体内容如下
官方文档地址
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>微信公众号H5接口调用</title>
<script src='./js/md5.js'></script>
</head>
<body>
<script>
// 判断微信版本是否在5.0以上
// window.navigator.userAgent 属性包含了浏览器类型,版本,操作系统类型,浏览器引擎等信息
var ua = window.navigator.userAgent.toLowerCase()
// 通过正则表达式匹配 ua 中是否含有 MicroMessenger 字符串
if (ua.match(/MicroMessenger/i) != 'micromessenger') {
return false
}
var appId = 'wx123456789'
// 微信H5接口调用准备
// 1,时间戳
var timeStamp = new Date()
timeStamp = timeStamp.getTime()/1000
console.log('时间戳', timeStamp)
// 2,生成32位随机字符串
function randomString(len) {
len = len || 32
// 默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1
var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
var charsLen = chars.length;
var pwd = '';
for (var i=0;i<len;i++) {
pwd += chars.charAt(Math.floor(Math.random() * charsLen))
}
return pwd
}
console.log('nonceStr,32位随机字符串', randomString())
// 3,package,统一下单接口返回的prepay_id 参数值
// 4,paySign:微信签名
function wxSignFunc() {
// 4.1,将参数改写成 key=value&key2=value2 形式,需要按照参数名ASCII字典序排序
var stringA = 'appId=' + appId
+'&nonceStr=' + randomString()
+'&package=prepay_id=u802345jgfjsdfgsdg888'
+'&signType=MD5'
+'&timeStamp=' + timeStamp
///// 4.2,拼接API 密钥
var stringSignTemp = stringA + '&key=192006250b4c09247ec02edce69f6a2d' //注:key为商户平台设置的密钥key
var sign = hex_md5(stringSignTemp).toUpperCase()
return sign
}
console.log(wxSignFunc())
//////////// 微信接口实例
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": appId, //公众号名称,由商户传入
"timeStamp": timeStamp, //时间戳,自1970年以来的秒数
"nonceStr": randomString(), //随机串
"package":"prepay_id=u802345jgfjsdfgsdg888", // 统一下单接口返回的prepay_id 参数值
"signType":"MD5", //微信签名方式:
"paySign": wxSignFunc() //微信签名
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ){
// 使用以上方式判断前端返回,微信团队郑重提示:
// res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
console.log(111)
}
}
)
}
// 调用微信接口
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
} else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
}else{
onBridgeReady();
}
</script>
</body>
</html>
来源:https://blog.csdn.net/M_wolf/article/details/82343480
0
投稿
猜你喜欢
- 1.安装MySql目前MySQL有两种形式的文件,一个是msi格式,一个是zip格式的。msi格式的直接点击setup.exe就好,按照步骤
- 一、序言前段时间一直在弄报表,快被这些报表整吐了,然后接触到了Oracle的table()函数。所以今天把table()函数的具体用法整理下
- 在urls.py文件中按照如下步骤写,即可正确使用DRF的内置路由.from .views import BookModel # 1. 导入
- 前言其实Python 的列表(list)内部实现是一个数组,也就是一个线性表。在列表中查找元素可以使用 list.index() 方法,其时
- 前言在之前的一篇文章Python可视化神器-Plotly动画展示展现了可视化神器-Plotly的动画的基本应用,本文介绍如何在Python中
- 1.安装step1step 2 首先是更改安装地址,推荐安装在D盘,如果和我一样C盘容量大的话,也可以不改,直接点击【Next】😄step3
- 前言:在了解 Python 的特性之前,我们首先要了解 Python 编程语言是什么。Python 编程语言是世界上发展最快的编程语言。这一
- 内连接(inner join)。 外连接: 全连接(full join)、左连接(left join)、右连接(right join)。 交
- 官方的说法: classmethod(function)中文说明:classmethod是用来指定一个类的方法为类方法,没有此参数指定的类的
- 前言ppi-cpi 剪刀差大家可能都听说过,通过这个指标可以了解当前的经济运行状况,小编为了学习 python 的图形绘制,通过爬
- 本文实例讲述了微信扫码支付模式。分享给大家供大家参考,具体如下:背景:因为微信占据众多的用户群,作为程序开发,自然而然也成了研究的重点。毕竟
- 本文列举了所有关于PHP语言中使用socket相关服务的一些函数。注意使用如下函数之前,你需要确保你的socket已打开,如果你没有打开,请
- 前言本文主要给大家介绍关于Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS的相关内容,分享出来供
- 在《数据库原理》里面,对聚簇索引的解释是:聚簇索引的顺序就是数据的物理存储顺序,而对非聚簇索引的解释是:索引顺序与数据物理排列顺序无关。正式
- 导言:在前面2节教程,我们探讨了如何使用FileUpload控件从客户端向服务器上传文件,以及如何在数据Web控件里显示二进制数据。在本节,
- 1.现在我本机系统已内置python2.62.下载进行源码安装复制链接下载到/root/mypackage,解压接着mkdir /usr/l
- LMDB的全称是Lightning Memory-Mapped Database(快如闪电的内存映射数据库),它的文件结构简单,包含一个数据
- 本文介绍的实例成功的实现了动态行转列。下面我以一个简单的数据库为例子,说明一下。数据表结构这里我用一个比较简单的例子来说明,也是行转列的经典
- 前言由于pycharm自带的pip源网站是国外网址,这就导致了许多国内用户在pycharm中下载其他软件包速度极慢,有时还会跳出下载失败的界
- 但是如果是让你接手一个二等残废的网站,并让你在上面改版,而且不能推翻式改版,只能逐步替换旧的程序,那么你会非常痛苦,例如我遇到的问题: 问题