微信支付开发流程

  记录下微信JSAPI支付的流程

1、判断是微信浏览器则直接请求微信授权的链接,需要传递给微信重定向回的页面,及订单id

// 微信浏览器直接调用
if (this.isWeixin) {let redirectUri = 'http://192.168.1.6/weChat'window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxe0701b98700ac86e&redirect_uri=' 
    + encodeURI(redirectUri) + '&response_type=code&scope=snsapi_base&state=' + this.order.orderId + '#wechat_redirect' }

2、上一步获取授权之后,就会拿到code,及传递的订单id,会以query的形式拼在重定向的路由上,然后通过拿到的code和订单id去请求后台获取该支付对应的需要的参数,后台返回。

created () {let _query = this.$route.queryif (Object.keys(_query).length > 0 && _query.code) {wxChatPublicPayApi({code: _query.code,orderId: _query.state}).then(res => {this.params = res.dataif (typeof WeixinJSBridge === 'undefined') {if (document.addEventListener) {document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady, false)} else if (document.attachEvent) {document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady)document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady)}} else {this.onBridgeReady()}})}
}

3、拿到后台返回的参数之后,直接调用微信的api即可

onBridgeReady () {let _this = thisWeixinJSBridge.invoke('getBrandWCPayRequest', _this.params, function (res) {if (res.err_msg === 'get_brand_wcpay_request:ok') {// 使用以上方式判断前端返回,微信团队郑重提示:// res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
      _this.checkPayStatus()} else {_this.$message({message: res.err_msg + '支付失败',type: 'error'})_this.$router.push('/orderDetail/' + _this.$route.query.state)}})
},

  详细参数可以查看下面微信支付官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6

转载于:https://www.cnblogs.com/goloving/p/10632020.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vb对数据库操作用存储过程

存储过程如下create proc sp_recordset bbb int as select * from aaa where bbb bbbvb代码如下: Dim cmd As ADODB.Command Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim ADOPrm Set ADOPrm New ADODB.Parameter Set rs New AD…

[vue] `<template></template>`有什么用?

[vue] <template></template>有什么用&#xff1f; 包裹嵌套其它元素&#xff0c;使元素具有区域性&#xff0c;自身具有三个特点&#xff1a; *隐藏性&#xff1a;不会显示在页面中 *任意性&#xff1a;可以写在页面的任意地方 *无效性&#xff1a; 没有一个根元…

linux域文件夹权限设置密码,如何配置Linux 文件权限(经典详细版本: rwxst)

在Linux中&#xff0c;Linux文件权限一共分为三种。本文将向读者展示如何正确配置Linux文件权限。三种特殊权限简介SUID当一个设置了SUID 位的可执行文件被执行时&#xff0c;该文件将以所有者的身份运行&#xff0c;也就是说无论谁来执行这个文件&#xff0c;他都有文件所有者…

ASP如何限定中英文混合的文字输出字数?

1<%2字符串截取函数&#xff0c;用于信息标题 3strWord需要截取的字符串 4intByteLength显示的字节长度&#xff0c;1个汉字两个字节 5intPadDotAmount背截取后尾部补充点的个数 6字符串截取函数&#xff0c;用于信息标题 7Function FixString()Function FixString(ByVal st…

【译】索引进阶(十一):SQL SERVER中的索引碎片【上篇】

原文链接&#xff1a;传送门。 第十章节我们分析了索引的内部结构。有了这些关于索引结构的知识&#xff0c;我们便可以分析索引碎片了&#xff1a;其产生的原因&#xff0c;如何防止&#xff0c;以及何时可以不去关注它们。 一些背景知识 / 复习 以下知识对于理解索引碎片来说…

linux备份mysql部分表数据,linux mysql 数据按表名称备份

1、按表名称备份#!/bin/bash#user#数据库用户dbuser"root"#数据库密码dbpassword"chenyong"#时间date$(date %Y%m%d)#数据库名称dbnamesungrowv3#备份数据保存的路劲url/home/test/sql/#指定数据库的所以表tables$(mysql -u$dbuser -p$dbpassword -ss -e &…

Maverick.Net介绍 (来自http://www.cnblogs.com/RicCC/archive/2006/09/17/506890.html)

Maverick.Net介绍 Maverick.Net是Java社区开源MVC Web框架Maverick的.Net版本&#xff0c;相关资料可以查看项目主页。不管Maverick.Net的是非好坏&#xff0c;了解一下它的思想还是不错的。下面的内容是对Maverick.Net整体做一个简单的介绍&#xff0c;以求能够从全局的角度了…

惊了!最通俗易懂的Djongo入门竟然在这里!

Django简介python下有多款不同的web框架&#xff0c;Django是最有代表行的一种。许多成功的网站和app都基于djanfo。django是一个开源的web应用框架&#xff0c;由python写成。django采用了MVC的软件设计模式&#xff0c;即模型M,视图V和控制器C。Django特点强大的数据库功能&a…

linux z是什么文件夹,Linux znew初学者命令实例教程

原标题&#xff1a;Linux znew初学者命令实例教程您是否知道Linux提供了一种将.Z文件重新压缩为.gz文件的方法&#xff1f; 是的&#xff0c;znew命令可以让你这样做。 在本教程中&#xff0c;我们将使用一些易于理解的示例讨论此命令行实用程序的基础知识。 但在我们这样做之前…

使用X.509数字证书加密解密实务(一)-- 证书的获得和管理

一、 获得证书... 21、 从CA获得... 22、 从windows2003证书服务中获得... 23、 使用makecert工具获得... 2二、 证书的保存... 21、 保存在证书存储区... 22、 以文件形式保存... 42.1. 带有私钥的证书... 42.2. …

第四届cccc团体程序设计天梯赛

蒟蒻的第一次参加天梯赛&#xff0c;也能也是最后一次参加天梯赛了&#xff0c;下半年打完icpc就要退役了&#xff0c;准备考研复习了 本人的第一次天梯赛&#xff0c;也是本校的第一次天梯赛&#xff0c;由于大家都缺少经验&#xff0c;痛失银奖&#xff0c;只拿了个铜奖回来&…

aix 到 linux的网络,DB2从AIX server上转移(迁移)到linux上-通信/网络-与非网

首先说一下大致情况&#xff0c;就是目前生产环境(AIX server)上边有一数据库 product&#xff0c;现在想迁移到本地做一下测试环境&#xff0c;由于本地服务器只是linux server所以&#xff0c;不可以直接的用backup 和restore恢复。需要用db2look和db2move配合一下来实现迁移…

JVM分析

在运行java进程是&#xff0c;可以通过jps命令查看进程PID&#xff0c;使用java的同居jmap命令可以得到jvm的dump文件&#xff1b; 在网上找了两种方式获取dump文件 获取JVM的dump文件的两种方式&#xff1a;转载来源https://www.cnblogs.com/liu-ke/p/6622350.html【流柯】 1.…

VSTS2008和FTS2008的系统要求好高啊~

系统要求 支持的操作系统&#xff1a; Windows Server 2003; Windows Vista; Windows XP 处理器&#xff1a;1.6GHz Pentium IIIRAM&#xff1a;1 GB 可用物理 RAM内存得1G啊。我玩魔兽世界的内存也只有1G~ 看来以后配新机器内存起码要搞个3-4G 转载于:https://www.cnblogs.com…

linux进行monkey压力测试,App Monkey压力测试(一)

1&#xff1a;常用选项代码如下:--help&#xff1a;打印帮助信息-v&#xff1a;指定打印信息的详细级别&#xff0c;一个 -v增加一个级别 &#xff0c; 默认级别为 0 。2&#xff1a;事件选项复制代码代码如下:-s&#xff1a;指定产生随机事件种子值&#xff0c;相同的种子值产…

[vue] vue组件里的定时器要怎么销毁?

[vue] vue组件里的定时器要怎么销毁&#xff1f; const timer setInterval(() >{ // 某些定时器操作 }, 500); // 通过$once来监听定时器&#xff0c;在beforeDestroy钩子可以被清除。 this.$once(hook:beforeDestroy, () > { clearInterval(timer); })个人简介 我是歌…