vue3 微信支付和支付宝支付 H5和微信内置浏览器
vue3微信支付和支付宝支付
// 判断是否为微信内置浏览器
let browser: any = navigator.userAgent.toLowerCase();
let isWechat: any = browser.match(/MicroMessenger/i) == "micromessenger";
// 支付宝支付
if (gather.pay_type == 2) {
orderPay({
pay_type: pay_typeA,
order_sn: order_snA,
gateway: gatewayA,
wap_return_url: wap_return_urlA,
}).then((res: any) => {
if (res.code == 0) {
aliPay(res);
}
});
} else {
// 微信支付
if (!localStorage.OPENID && route.query.openid) {
localStorage.OPENID = route.query.openid;
}
gather.openid = isWechat ? localStorage.OPENID : "";
if (isWechat && !localStorage.OPENID) {
// 获取openid
let url =
window.location.origin +
"/get_wx_info?url=" +
encodeURIComponent(window.location.href);
window.location.href = url;
} else {
orderPay({
pay_type: pay_typeA,
order_sn: order_snA,
gateway: gatewayA,
wap_return_url: wap_return_urlA,
open_id: gather.openid,
}).then((res: any) => {
if (res) {
// 微信H5
if (!isWechat) {
window.location.href =
res.data.option.mweb_url + wap_return_urlA;
return;
} else {
// 微信内置
wechatPay(res.data.option);
}
}
});
}
} const wechatPay = (result: object): void => {
//封装请求微信支付接口数据
var request_data = {
appId: (result as any).appId,
timeStamp: (result as any).timeStamp + "",
nonceStr: (result as any).nonceStr,
package: (result as any).package,
signType: "MD5",
paySign: (result as any).paySign,
};
if (typeof (window as any).WeixinJSBridge == "undefined") {
if ((document as any).addEventListener) {
(document as any).addEventListener(
"WeixinJSBridgeReady",
onBridgeReady(request_data),
false
);
} else if ((document as any).attachEvent) {
(document as any).attachEvent(
"WeixinJSBridgeReady",
onBridgeReady(request_data)
);
(document as any).attachEvent(
"OnWeixinJSBridgeReady",
onBridgeReady(request_data)
);
}
} else {
onBridgeReady(request_data);
}
};
//微信方法
const onBridgeReady = (request_data: object): void => {
(window as any).WeixinJSBridge.invoke(
"getBrandWCPayRequest",
request_data,
(res: any) => {
if (res.err_msg == "get_brand_wcpay_request:ok") {
Notify({ type: "success", message: "支付成功" });
router.push({
path: "/mineSubject",
});
} else if (res.err_msg == "get_brand_wcpay_request:cancel") {
} else if (res.err_msg == "get_brand_wcpay_request:fail") {
}
}
);
};
支付宝支付方法
const aliPay = (res:any)=>{
const div = document.createElement('div');
div.innerHTML = res.data.option; //res.data是返回的表单
console.log('res.option',res.data.option);
document.body.appendChild(div);
(document as any).forms.alipaysubmit.submit();
}
vue3 微信支付和支付宝支付 H5和微信内置浏览器的更多相关文章
- 微信内分享第三方H5链接无法使用内置浏览器打开的解决方案
很多朋友在微信内想分享转发H5链接的时候都会很容易碰到H5链接在微信内无法打开或在微信内无法打开app下载页的情况.通常这种情况微信会给个提示 “已停止访问该网址” ,那么导致这个情况的因素有哪些呢, ...
- 微信支付之h5方式(非微信内置浏览器中支付)
这两天完成了公司网站手机和PC端的支付对接,就是支付宝和微信. 对接完后有所感触,我们来聊一聊,微信支付的坑,为什么这么说呢,因为我在对接完支付宝后是很愉快的,基本上在demo上稍加修改就ok了, 对 ...
- APIcloud制作APP 微信支付与支付宝支付
首先要在云端绑定相应模块如alipay和wxpay其次编写代码. 配置区域 var cfg = { webName:'',//APP名字 payDebug:true, isUseWxPay:true, ...
- apicloud含有微信支付。支付宝支付和苹果内购的代码
apicloud含有微信支付.支付宝支付和苹果内购的代码 <!DOCTYPE html> <html> <head> <meta charset=" ...
- 微信支付、支付宝支付和QQ钱包支付
最近忙于对接微信支付和支付宝支付,注册微信公众号,认证公众号,注册微信支付商户号并进行认证: 签约支付宝支付产品(手机网站支付.PC网站支付),注册支付宝企业账号(企业账号权限更大): 注册QQ钱包商 ...
- 微信支付与支付宝支付java开发注意事项
说明:这里只涉及到微信支付和淘宝支付 以官网的接口为准,主要关注[网关].[接口].[参数][加密方式][签名][回调] 第一步,了解自己的项目要集成的支付方式 常见的有扫码支付.网页支付.APP支付 ...
- 用js限制网页只能在微信内置浏览器或支付宝内置浏览器中打开
function is_weixinOrAli(){ var ua = navigator.userAgent.toLowerCase(); //判断浏览器的类型 if (ua.match(/Micr ...
- 微信内置浏览器浏览H5页面弹出的键盘遮盖文本框的解决办法(转)
最近在做微信公众号的内嵌页面,发现点击输入框时键盘盖住文本框,找到一段代码解决了这个问题. iOS和android手机都已亲测,需要的可以直接拷贝到代码中使用. js代码如下: $(function ...
- 如何判断微信内置浏览器(JS & PHP)
转自:http://blog.wpjam.com/m/is_weixin/ 为什么要进行判断呢?answer:微信授权登录,微信支付都可以 微信内置浏览器的 User Agent 如何判断微信内置浏览 ...
- js判断微信内置浏览器
做了一个h5页面来下载app,但如果页面是用微信扫一扫打开的,点击下载按钮下载不了app,原因是微信内置浏览器屏蔽了下载链接.所以增加了检测,如果用户是用微信浏览器打开的,则提示用户使用浏览器打开.那 ...
随机推荐
- requests学习笔记02
一.会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling 功能. ...
- reduced form(简化式)和structural form(结构式)
在复习软件构造的时候,我发现了这样一道练习题 例题要求我们对照给出的RI和AF画出相应的映射图.在这里产生了一个疑问,什么是reduced form?是分子小于分母的意思吗? 但是根据给出的答案,并不 ...
- 【Linux】从零开始学Linux -01
总结自<鸟哥的linux私房菜> BIOS与BootLoader 一般而言,对于嵌入式系统,BootLoader是写在flash上,开机运行的最底层的引导软件,初始化主板的基本设置,为接收 ...
- JWT 工具类的编写
导入JWT pom依赖 <!--JWT 依赖--><dependency> <groupId>io.jsonwebtoken</groupId> < ...
- journalctl查看内核/应用日志
Systemd统一管理所有Unit的启动日志.带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志).日志的配置文件是/etc/systemd/journald.co ...
- thinkphp5.0 分页用法
$num = input('get.page')?input('get.page'):1; //接收参数 //数据的总数量 $count = Db::name('user')->where([' ...
- linux中的环境变量/etc/profile /etc/bashrc ~/.bash_profile ~/.bashrc
来源:https://blog.csdn.net/zzhongcy/article/details/108663751 /etc/profile ============ 此文件为系统的每个用户设置环 ...
- JSONObject和JSONArray的区别
JSONObject是用{}表示: JSONArray是用[]表示,相当于[{ }, { }],是由JSONObject的集合. 定义一个String类型 JSONObject jsonOject = ...
- git的基本操作(一)
pwd: 显示当前所在的目录路径 ls: 列出当前目录的所有文件 touch: 新建一个文件 rm:删除一个文件 mkdir:新建一个目录 rm -r:删除一个目录 mv:移动一个文件到另一个文件中 ...
- 从各种点理解Unity中的协程
这个写的很好,https://zhuanlan.zhihu.com/p/59619632