JS交互微信之JSAPI支付

JavaScript04

JS交互微信之JSAPI支付,第1张

本篇为 JS交互微信系列篇 的第四篇 微信JSAPI支付 ,记录在微信内置浏览器内用调用微信支付过程。

JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付。

要拥有两个账号:

要开通产品中心的JSAPI支付。然后 产品中心=>开发配置=>支付配置=>公众号支付配置 绑定支付授权目录,写已通过ICP备案的域名。

另外,要在ip白名单中,配置测试地址ip和线上生产地址ip,不然各种回调都会失败!

由于在微信内支付需要获取用户的 openid ,要获取它则必须通过网页授权配置。在公微信公众平台中, 公众号设置=>功能设置=>网页授权域名 中按要求填写。

在支付流程方面,重点依然都在后端处理,前端方面步骤比较简单。本文只叙述前端内容。

在将要进入支付的前一页面,直接接入微信授权,然后跳转进要支付的那个页面。举个例子:有a、b两个页面,在b页面用到支付,b页面由a页面跳转而来。那么在a页面跳b页面的时候,别直接跳转b的url,而是跳转到:

https://open.weixin.qq.com/connect/oauth2/authorize?appid={appId}&redirect_uri={b.html}&response_type=code&scope=snsapi_base#wechat_redirect

我们注意到,这里有这两个需要自己写的参数: appid 和 redirect_uri ,意义是:

另外,还有一个注意的点是, b.html这个url我们要进行encode转码,不然地址解析可能会出现问题!

上一步执行完后,在微信浏览器中,我们会得到一个链接,类似:

b.html?&code={code}&state=#/

在此处,我们得到了一个code值,这就是我们获取 openid 的凭证了。

获取方法当然是把值传给后台,后台去处理啦~

在上一步中,我们拿到code值后,就可以提交一些信息给后端了,比如商品相关属性、总价等,另外加上code值,传给后端。后端一顿操作后,返回给前端。我们需要的参数如下(后端返回下面这些参数):

上个步骤拿到需要交互微信的参数后,就开始调用微信的支付接口了,如下:

至此,调用微信JSAPI来完成在微信内的支付就完成了。

在微信浏览器里面开启H5网页中执行JS调起支付

在微信浏览器中访问你制作的HTML5的介面。

介面中使用了微信提供的JS程式码,该程式码可以唤起微信支付,让使用者进行支付。

在微信浏览器中执行js: typeof(WeixinJSBridge) 为什么是undefined呢 页面需要引入什么js么?

不需要引用js,但是你要这么写:

if (typeof WeixinJSBridge == "undefined") {

if (document.addEventListener) {

document.addEventListener('WeixinJSBridgeReady', wxPayCall, false)

} else if (document.attachEvent) {

document.attachEvent('WeixinJSBridgeReady', wxPayCall)

document.attachEvent('onWeixinJSBridgeReady', wxPayCall)

你要在注册一下WeixinJSBridgeReady

不需要引入js

现在已经被禁用了

function weixinShareTimeline(title,desc,link,imgUrl)

WeixinJSBridge.invoke('shareTimeline',

"img_url":imgUrl,

"img_width":"640",

"img_height":"640",

"link":link,

"desc": desc,

"title":title

如何在IOS的safari浏览器调起微信支付

在浏览器中调起微信支付,一般情况下,是在后台接入微信支付的介面,然后当用户需要支付的时候,在前台显示一个支付的二维码,使用者使用微信支付的扫一扫功能,扫描该二维码,获取相应的支付资讯,使用手机进行支付

如何才能只让网页在微信浏览器里开启

在手机端吗?需要root或者越狱之后,修改预设浏览器的应用为微信客户端就行了。

在微信内建浏览器里面能直接开启的wap网页吗

这个是网站的证书问题 跟你的电脑浏览器没有问题 一般你认为那个网站上是安全的 那么就是安全的; 一般商业网站才会使用SSL证书的

理论上是可以的,但是微信有它自己的一套安全机制,不是什么网页都允许在内部开启。有时它会提示“点选右上角选单选择在浏览器开启”,所以在里面开启的页面最好要简单一些,不要太复杂。

你好。

微信内建浏览器可以直接开启的wap网页的。

1、开启微信。随便找到一个好友聊天。

2、在聊天内容里输入你想浏览的网页网址。如果想浏览百度,就输入百度网址。

3、这时候发现网址是蓝色的,点选网址,就可跳转到百度网站了。在这里可以随心所欲的搜寻内容了。

可以,不过你得先把地址复制传送给某个人。才能点选开启,微信没有导航栏

如何在浏览器开启微信网页

你直接复制网页地址,然后在浏览器中开启就好了,怎么复制那,直接通过开启微信文章或者微信的h5页面,然后再通过分享之档案助手或者QQ我的电脑上,就可以看到了!

那么今天我就用JavaScript代码来实现这个效果吧,那么首先介绍一下整个的思路,首先我们先将确定输入密码的位数,我的需求是5位,那么就用一个div标签包住5个input标签

现在很多时候大家付款的场景都是在手机上面,而随着H5页面的开发变得越来越方便,很多场景也从客户端搬到了浏览器中,其中支付这个场景就很自然的被放在了浏览器中。那么这样的输入框大家一定不会陌生吧:

那么今天我就用JavaScript代码来实现这个效果吧,那么首先介绍一下整个的思路,首先我们先将确定输入密码的位数,我的需求是5位,那么就用一个div标签包住5个input标签。

并且给这个5个input设置display: inline-block 属性,同时用<!- ->来消除元素直接的margin值,那么HTML就是如下的样子:

<div class="input"><input type="tel" placeholder="随" maxlength=""><!--><input type="tel" placeholder="机" maxlength=""><!--><input type="tel" placeholder="" maxlength=""><!--><input type="tel" placeholder="位" maxlength=""><!--><input type="tel" placeholder="数" maxlength=""></div>

在代码中我们需要设置最多输入的位数,不然就不像了嘛~当然为了在移动端输入的时候能唤起数字键盘来,我们也需要设置type="tel"。那么接下来就是CSS样式的代码了,这里我就简单的贴出一些代码,具体高仿的像不像其实就是这里了~

input {display: inline-block&:last-child {border-right: px solid #}input {border-top: px solid #border-bottom: px solid #border-left: px solid #width: pxheight: pxoutline:nonefont-family: inheritfont-size: pxfont-weight: inherittext-align: centerline-height: pxcolor: #cccbackground: rgba(,,,)}}

那么接下来就是最关键的JavaScript部分了,

/*** 模拟支付宝的密码输入形式*/(function (window, document) {var active = ,inputBtn = document.querySelectorAll('input')for (var i = i <inputBtn.lengthi++) {inputBtn[i].addEventListener('click', function () {inputBtn[active].focus()}, false)inputBtn[i].addEventListener('focus', function () {this.addEventListener('keyup', listenKeyUp, false)}, false)inputBtn[i].addEventListener('blur', function () {this.removeEventListener('keyup', listenKeyUp, false)}, false)}/*** 监听键盘的敲击事件*/function listenKeyUp() {var beginBtn = document.querySelector('#beginBtn')if (!isNaN(this.value) &&this.value.length != ) {if (active <) {active += }inputBtn[active].focus()} else if (this.value.length == ) {if (active >) {active -= }inputBtn[active].focus()}if (active >= ) {var _value = inputBtn[active].valueif (beginBtn.className == 'begin-no' &&!isNaN(_value) &&_value.length != ) {beginBtn.className = 'begin'beginBtn.addEventListener('click', function () {calculate.begin()}, false)}} else {if (beginBtn.className == 'begin') {beginBtn.className = 'begin-no'}}}})(window, document)

首先我们对最外层的div进行监听,当发现用户选择div的时候就将input的焦点设置到active上面去,而这个active则是一个计数器,默认的时候是第一位的,也就是0,而当我们输入了正确的数字后将会增加一个active,这样input的焦点就会向后移动了,这样就完成了输入一个向后移动一位的功能了,而同时我们监听键盘上的退格键,当用户点击了退格键之后就对active减一,这样输入框的焦点也就向前移动了,当然,当input失去焦点的时候我们也同时移除绑定在上面的监听事件,这样就不会造成多次触发的问题了。