微信充值页面开发总结

上周开发了公司项目的微信充值页面,下面对项目遇到的问题做一个总结。

1、下单流程

前端获取code---把code给后端去获取openID---将openID和订单信息发给后端获取微信支付所需参数(订单号、appid、微信签名等信息)---调起微信支付api---成功回调(失败回调)

2、需求实现

产品需求是用户输入id并查询出昵称,以确定id正确,然后点击金额进行充值。这里有个点,查询昵称的接口在什么时候调用最合适。

开始我是在input的keyup事件里调用,导致用户每输入一个字符就会查询一次,接口调用过多,然后我加了去抖函数,设置在keyup完成1.5s后再调用接口,但是对于复制粘贴的内容无法监听,且

如果使用输入框失去焦点事件,会出现用户点击充值金额昵称才展示,并被微信支付蒙层遮挡看不清楚问题,昵称出现过晚,所以这个方法也不行

 $(‘.input‘).keyup(debounce(function () {
  let id = $(‘.input‘).val()
  if(id.length > 7){
    getNick(id)
  }
  }, 1500))

最后决定监听软键盘的下一步按钮,苹果为send键。

找到了在input外加form标签,使用form的submit事件的方法,可以监听ios软键盘发送按钮,但是安卓不行

<form action="" id="form">

<input id="input" class="input" type="number" placeholder="请输入你的番薯id">

</form>

$(‘#form‘).submit(function (e) {
  getNick($(‘.input‘).val())
})

还找到一个监听软键盘隐藏的事件

$(document).on(‘focusout‘, function () {
    软键盘收起的事件处理
    alert(‘键盘收起‘)
    getNick($(‘.input‘).val())
  });

但是这个会导致查询昵称接口请求多次,也不合适

最后采用监听软键盘具体某个键的值的方式来处理,打印event.keyCode来实测各个键盘对应的值,取得ios和安卓回退键值 8 ,安卓下一步按键值9,ios前往按键值13,区分判断

/ 监听软键盘  keycode 回退8 安卓下一步9 ios前往13
  $(document).keydown(function (event) {
    if (event.keyCode == 8) {
      $(‘.nick‘).html(‘‘)
    }
    if (event.keyCode == 9) {
      getNick($(‘.input‘).val())
    }
    if(event.keyCode == 13) {
      getNick($(‘.input‘).val())
    }
  });

3、兼容性问题

当监听点击事件时,ios不支持click事件,针对此问题,有两种方法解决

方法1,对相应的dom节点添加cursor: pointer; css属性

    $(function(){
        $(‘.div‘).on("click", function(data){
            console.log("123");
        });
    })

.div {     cursor: pointer; }

方法2,使用click代替on(‘click‘,function(){})

$(‘.close‘).click(function () {
    $(‘.modal‘).hide()
    $(‘.overlay‘).hide()
  })

另外,调用微信支付可以用WeixinJSBridge.invoke,也可以引入wxsjsdk,两种方法目前都可以使用。

原文地址:https://www.cnblogs.com/wuyuchao/p/9946575.html

时间: 2024-10-21 21:21:45

微信充值页面开发总结的相关文章

C#开发微信门户及应用(44)--微信H5页面开发的经验总结

在我们开发微信页面的时候,需要大量用到了各种呈现的效果,一般可以使用Boostrap的效果来设计不同的页面,不过微信团队也提供很多这方面的资源,包括JSSDK的接口,以及Weui的页面样式和相关功能页面,给我们提供了很大的便利,本文是在自己做的一些H5微信应用页面上做了一些功能总结,希望能够给大家提供一定的帮助. 1.微信网页开发 1) JSSDK 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包.通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语

微信公众平台开发 - 页面自适应

通过以下标签实现页面自适应: <meta name="viewport" content=" height = [pixel_value | device-height] , width = [pixel_value | device-width ] , initial-scale = float_value , minimum-scale = float_value , maximum-scale = float_value , user-scalable = [ye

微信页面开发 第三次总结

暂停微信页面开发,先处理yxt安卓司机版本. 司机端需求: 登入功能(由管理员分配账户),导航地图(提供搜索功能,寻找地点,快速导航) 接单控制=>是否接单,是否自动接单,接单类型 接单:当乘客抢到单后,司机有120秒时间可以抢单.参与抢单的司机会显示订单被抢,显示被谁抢.自己抢到,则显示去接乘客,或者呼叫乘客,去接乘客则显示路线导航,呼叫乘客则拨打乘客电话, 在接乘客时候显示距离和电话按钮,(乘客端可显示司机距离),司机点击接到乘客,订单状态变为服务中,同时,乘客端收到服务开始的消息. 服务过

微信页面开发 第一次总结

总结能让自己的知识体系,经验深度更牛逼更稳固,虽然写一篇博文挺花费时间的. 1.npm下载太慢,可以用cnpm,淘宝的镜像,10分钟同步一次npm,安装方法 npm install --registry=https://registry.npm.taobao.org -d cnpm -d可以显示安装详情. 2.需要实现语音功能,发现可以用百度的text2audio,开发详情地址:http://yuyin.baidu.com/docs/tts/136; h5页面需要引用百度的库,可以直接用百度的链

注册绑定页面及微信二维码登陆页面开发项目总结

乐帝来到新的实习单位,也许是之前面试或者在爱奇艺实习的履历,很快被项目组"委以重任".而不是老套路刚入职,先在架构师那培训两周,专心钻研框架,不问具体业务.乐帝只有几天看框架的时间,当被分配给框架页面时,还是不能得心应手,正如同事所说,学习还得按部就班,写写例子,看代码是不行的.    目前这家公司类似<走出软件作坊>作者阿朱所在行业,是面向中大型企业,提供人才管理解决方案的软件公司,时髦的词叫SAAS.这类公司层次要比外包公司高,却还有很多外包公司的特点,不像互联网公司有

iOS开发之微信聊天页面实现

在上篇博客(iOS开发之微信聊天工具栏的封装)中对微信聊天页面下方的工具栏进行了封装,本篇博客中就使用之前封装的工具栏来进行聊天页面的编写.在聊天页面中主要用到了TableView的知识,还有如何在俩天中显示我们发送的表情,具体请参考之前的博客:IOS开发之显示微博表情,在这儿就不做赘述啦.在聊天页面用到了三对,六种Cell,不过cell的复杂度要比之前的新浪微博(IOS开发之新浪围脖)简单的多.废话少说吧,还是先来几张效果图,在给出实现代码吧. 聊天界面的效果图如下:在下面的聊天界面中中用到了

微信小程序开发07-列表页面怎么做

接上文:微信小程序开发06-一个业务页面的完成 github地址:https://github.com/yexiaochai/wxdemo 我们首页功能基本完成,我对比了下实际工作中的需求,完成度有70%以上,如果再花一两天时间,便能跟之前工作做的差不多了,今天我们继续实现一个页面列表,便结束这次的学习,后面几天要出差,所以总结性的文章本周未必能出来,静待下周吧. 这里考虑demo复杂度,列表页功能完成度也仅仅完成主功能模块,与真实工作完成度对比60%左右吧,于是我们开始愉快的代码,首先是将我们

微信H5页面前端开发,大多数人都会遇到的几个兼容性坑

1.ios端兼容input光标高度 问题详情描述:input输入框光标,在安卓手机上显示没有问题,但是在苹果手机上 当点击输入的时候,光标的高度和父盒子的高度一样.例如下图,左图是正常所期待的输入框光标,右边是ios的input光标. 出现原因分析:通常我们习惯用height属性设置行间的高度和line-height属性设置行间的距离(行高),当点击输入的时候,光标的高度就自动和父盒子的高度一样了.(谷歌浏览器的设计原则,还有一种可能就是当没有内容的时候光标的高度等于input的line-hei

微信页面开发 第二次总结

1.微信目前不支持es6,调试困难.. 2.微信获取页面js-sdk的ticket,参考开发文档. 3.微信支付功能比较困难. 4.后台发起请求,可以用koa-request var response = yield request(options); var json = JSON.parse(response.body); 获取到ticket要保存下来.放在本地文件或者数据库. 5.appid要对应好js的安全域名接口.不然会跳出无效的域名. 6.多看看开发文档和demo,比自己瞎写有效的多