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和微信内置浏览器的更多相关文章

  1. 微信内分享第三方H5链接无法使用内置浏览器打开的解决方案

    很多朋友在微信内想分享转发H5链接的时候都会很容易碰到H5链接在微信内无法打开或在微信内无法打开app下载页的情况.通常这种情况微信会给个提示 “已停止访问该网址” ,那么导致这个情况的因素有哪些呢, ...

  2. 微信支付之h5方式(非微信内置浏览器中支付)

    这两天完成了公司网站手机和PC端的支付对接,就是支付宝和微信. 对接完后有所感触,我们来聊一聊,微信支付的坑,为什么这么说呢,因为我在对接完支付宝后是很愉快的,基本上在demo上稍加修改就ok了, 对 ...

  3. APIcloud制作APP 微信支付与支付宝支付

    首先要在云端绑定相应模块如alipay和wxpay其次编写代码. 配置区域 var cfg = { webName:'',//APP名字 payDebug:true, isUseWxPay:true, ...

  4. apicloud含有微信支付。支付宝支付和苹果内购的代码

    apicloud含有微信支付.支付宝支付和苹果内购的代码 <!DOCTYPE html> <html> <head> <meta charset=" ...

  5. 微信支付、支付宝支付和QQ钱包支付

    最近忙于对接微信支付和支付宝支付,注册微信公众号,认证公众号,注册微信支付商户号并进行认证: 签约支付宝支付产品(手机网站支付.PC网站支付),注册支付宝企业账号(企业账号权限更大): 注册QQ钱包商 ...

  6. 微信支付与支付宝支付java开发注意事项

    说明:这里只涉及到微信支付和淘宝支付 以官网的接口为准,主要关注[网关].[接口].[参数][加密方式][签名][回调] 第一步,了解自己的项目要集成的支付方式 常见的有扫码支付.网页支付.APP支付 ...

  7. 用js限制网页只能在微信内置浏览器或支付宝内置浏览器中打开

    function is_weixinOrAli(){ var ua = navigator.userAgent.toLowerCase(); //判断浏览器的类型 if (ua.match(/Micr ...

  8. 微信内置浏览器浏览H5页面弹出的键盘遮盖文本框的解决办法(转)

    最近在做微信公众号的内嵌页面,发现点击输入框时键盘盖住文本框,找到一段代码解决了这个问题. iOS和android手机都已亲测,需要的可以直接拷贝到代码中使用. js代码如下: $(function ...

  9. 如何判断微信内置浏览器(JS & PHP)

    转自:http://blog.wpjam.com/m/is_weixin/ 为什么要进行判断呢?answer:微信授权登录,微信支付都可以 微信内置浏览器的 User Agent 如何判断微信内置浏览 ...

  10. js判断微信内置浏览器

    做了一个h5页面来下载app,但如果页面是用微信扫一扫打开的,点击下载按钮下载不了app,原因是微信内置浏览器屏蔽了下载链接.所以增加了检测,如果用户是用微信浏览器打开的,则提示用户使用浏览器打开.那 ...

随机推荐

  1. gcc_to_use

    gcc 目录 gcc 概要 基本指令及功能(以gcc为例) gcc -gdb gcc -cmake 概要 GCC:GNU Compiler Collection(GUN 编译器集合),是GNU项目中符 ...

  2. 「postOI」Cross Swapping

    题意 给出一个 \(n\times n\) 的矩阵 \(A\),你可以进行下述操作任意多次:指定整数 \(k\)(\(1\le k\le n\)),使 \(A_{ni}\) 与 \(A_{in}\) ...

  3. (二)用go实现二叉查找树

    本篇,我们用go简单的实现二叉查找树. 1.节点定义 type BSNode struct{ data int left, right, parent *BSNode } 2.前序遍历 func (p ...

  4. vue3 门户网站搭建7-eslint

    为了方便阅读和维护,代码规范还是有必要的 1.安装:npm i eslint --save-dev 2.配置 .eslintrc.cjs 文件,增加 rules: rules: { 'semi': [ ...

  5. env_config

    import sys import os root_path = os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__f ...

  6. Kotlin属性委托

    业务定义 对于属性,我们可以读取(get)和赋值(set),在Java中会定义get和set方法来操作属性,Kotlin的属性建议直接操作,一些业务的要求会对属性有额外的功能需求,在Java中会在ge ...

  7. linux命令测试中运行

      1.1 scp 命令-拷贝文件 scp local_file remote_username@remote_ip:remote_folder eg : scp G96S.Z.16m root@19 ...

  8. IIS部署HTTPS站点

    常用的IIS大体有二个版本: IIS8和IIS7,分别有不同的配置方法如下: IIS8.5以上版本 1).新建一个站点,切记尽量不要与旧http协议站点共用一个站点,容易冲突 2).先将https证书 ...

  9. CANas分析软件,DBC文件解析,CAN报文分析,仿CANoe曲线显示

    2023.01.01:增加对Kvaser的支持参考了CANoe写了下面的软件,主要用途是对报文的回放及曲线的分析. 1.CAN连接,支持周立功CAN.CANFD及PCAN 2.DBC解析与生成文件 打 ...

  10. ES相关问题

    取消写入保护 参考:https://blog.csdn.net/xudailong_blog/article/details/80850159