微信小程序 支付功能(前端)的实现


Posted in Javascript onMay 24, 2017

微信小程序 支付功能(前端)的实现

只提供微信小程序端代码:

var app = getApp();
Page({
  data: {},
  onLoad: function (options) {
    // 页面初始化 options为页面跳转所带来的参数
    var that = this
    //登陆获取code
    wx.login({
      success: function (res) {
        console.log(res.code)
        //获取openid
        that.getOpenId(res.code)
      }
    });
  },
  getOpenId: function (code) {
    var that = this;
    wx.request({
      url: "https://api.weixin.qq.com/sns/jscode2session?appid=小程序appid&secret=小程序应用密钥&js_code=" + code + "&grant_type=authorization_code",
      data: {},
      method: 'GET',
      success: function (res) {
        that.generateOrder(res.data.openid)
      },
      fail: function () {
        // fail
      },
      complete: function () {
        // complete
      }
    })
  },
  /**生成商户订单 */
  generateOrder: function (openid) {
    var that = this
    //统一支付
    wx.request({
      url: '后台路径',
      method: 'GET',
      data: {
        gfee: '商品价钱',
        gname: '商品名称',
        openId:openid
        (商品价钱和商品名称根据自身需要是否传值,openid为必传)
      },
      success: function (res) {
        var pay = res.data
        //发起支付
        var timeStamp = pay[0].timeStamp;
        var packages = pay[0].package;
        var paySign = pay[0].paySign;
        var nonceStr = pay[0].nonceStr;
        var param = { "timeStamp": timeStamp, "package": packages, "paySign": paySign, "signType": "MD5", "nonceStr": nonceStr };
        that.pay(param)
      },
    })
  },

  /* 支付  */
  pay: function (param) {
    console.log("支付")
    console.log(param)
    wx.requestPayment({
      timeStamp: param.timeStamp,
      nonceStr: param.nonceStr,
      package: param.package,
      signType: param.signType,
      paySign: param.paySign,
      success: function (res) {
        // success
        wx.navigateBack({
          delta: 1, // 回退前 delta(默认为1) 页面
          success: function (res) {
            wx.showToast({
              title: '支付成功',
              icon: 'success',
              duration: 2000
            })
          },
          fail: function () {
            // fail

          },
          complete: function () {
            // complete
          }
        })
      },
      fail: function (res) {
        // fail
      },
      complete: function () {
        // complete
      }
    })
  }
})

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
如何正确使用javascript 来进行我们的程序开发
Jun 23 Javascript
常用的jQuery前端技巧收集
Dec 24 Javascript
使用ionic播放轮询广告的实现方法(必看)
Apr 24 Javascript
jQuery+ajax实现修改密码验证功能实例详解
Jul 06 jQuery
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 jQuery
JS设计模式之数据访问对象模式的实例讲解
Sep 30 Javascript
Node.js npm命令运行node.js脚本的方法
Oct 10 Javascript
Node.js之readline模块的使用详解
Mar 25 Javascript
Vue vm.$attrs使用场景详解
Mar 08 Javascript
JavaScript图像放大镜效果实现方法详解
Jun 28 Javascript
ES2020系列之空值合并运算符 '??'
Jul 22 Javascript
VUE中setTimeout和setInterval自动销毁案例
Sep 07 Javascript
微信小程序 选项卡的简单实例
May 24 #Javascript
JS回调函数基本定义与用法实例分析
May 24 #Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
May 24 #jQuery
详解前后端分离之VueJS前端
May 24 #Javascript
JQuery Ajax 异步操作之动态添加节点功能
May 24 #jQuery
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
May 24 #Javascript
使用jQuery.Pin垂直滚动时固定导航
May 24 #jQuery
You might like
解决中英文字符串长度问题函数
2007/01/16 PHP
php设计模式 Template (模板模式)
2011/06/26 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
javascript delete 使用示例代码
2010/03/29 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
JavaScript删除指定子元素代码实例
2015/01/13 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
Python中的pack和unpack的使用
2018/03/12 Python
python邮件发送smtplib使用详解
2020/06/16 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
公司活动策划方案
2014/01/13 职场文书
《鸟岛》教学反思
2014/04/26 职场文书