前端移动支付(微信、支付宝)

微信支付

微信移动端支付分为两种:在微信浏览器内支付、在其他浏览器支付;

微信浏览器内支付(JSAPI):

在开始使用微信支付之前需要明确一个变量 trade_type ,这个变量有三个值:
NATIVE:扫码支付使用;
JSAPI:微信内置浏览器唤起微信支付使用;
MWEB:非微信浏览器且非支付宝内置浏览器唤起微信支付使用;

然后判断当前浏览器是不是微信浏览器(在支付宝内不能唤起微信支付),具体判断逻辑如下:

isWechat = () => {const userAgent = navigator.userAgent.toLowerCase();if (userAgent.match(/MicroMessenger/i) == 'micromessenger') {return true;}return false;
};

确定是微信浏览器后可以使用如下JSAPI的方式调用统一预支付接口进行唤起:

wechatMobilePay = data => {WeixinJSBridge.invoke('getBrandWCPayRequest',{appId: data.appid, // 公众号名称,由商户传入timeStamp: data.timestamp, // 时间戳,自1970年以来的秒数nonceStr: data.nonce_str, // 随机串package: `prepay_id=${data.prepay_id}`,signType: 'MD5', // 微信签名方式:paySign: data.sign, // 微信签名},function(res) {if (res.err_msg == 'get_brand_wcpay_request:ok') {// 使用以上方式判断前端返回,微信团队郑重提示:// res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。// TODO add query after payed}});};if (typeof WeixinJSBridge === 'undefined') {if (document.addEventListener) {document.addEventListener('WeixinJSBridgeReady',this.wechatMobilePay(res),false);} else if (document.attachEvent) {document.attachEvent('WeixinJSBridgeReady', this.wechatMobilePay(res));document.attachEvent('onWeixinJSBridgeReady', this.wechatMobilePay(res));}} else {this.wechatMobilePay(res);}

参考官方文档: 微信内H5调起支付
*: 此时调用预支付接口的 trade_type 应该是JSAPI,如果使用NATIVE会出现 支付场景非法 的错误信息,且无法唤起微信支付;

非微信浏览器支付(H5支付):

首先确保此浏览器非支付宝内置浏览器,此时需要调用统一下单接口,借助于后端发起下单请求,需要注意的是 trade_type 应该是MWEB;
同时需要配置一个名为 mweb_url 的url,以唤起微信支付中间页,中间页将进行H5权限校验和安全检查;

参考官方文档:H5支付

支付宝支付

支付宝支付必须在非微信浏览器内进行,随后需要调用API 手机网站支付接口 alipay.trade.wap.pay,前端通过Form表单的形式进行请求,如果手机安装有支付宝会自动唤起,如果手机未安装支付宝需要进行友好交互提示。

网站支付时需要执行接口返回的部分代码:

const divForm = document.getElementsByTagName('divform');if (divForm.length) {document.body.removeChild(divForm[0]);}const div = document.createElement('divform');div.innerHTML = res; // res里的data就是接口返回的form 表单字符串document.body.appendChild(div);document.forms[0].setAttribute('target', ''); // 新开窗口跳转document.forms[0].submit();

*:注意区分后台下单时接口的不同,PC端使用 alipay.trade.page.pay ,移动端使用 alipay.trade.wap.pay。

前端使用支付宝和微信进行移动支付相关推荐

  1. 银联支付java代码实现_[VIP源码]【S008】Java实现支付宝、微信、银联支付项目实例项目源码 百度云 网盘...

    java源码项目名称:Java实现支付宝.微信.银联支付项目实例项目源码  支付项目源码& X3 U' W# h0 z# K 百度网盘下载链接: ( y! x% n" V9 F9 s ...

  2. ios 支付宝、微信、银联支付集成

    一 .支付宝集成 支付宝官方集成文档 1.下载支付宝官方demo,将AlipaySDK.bundle.AlipaySDK.framework两个框架导入到项目中,如下图: 2.选择工程中 Build ...

  3. JAVA支付宝和微信(APP支付,提现,退款)

    公共参数图表: 接口 需要参数 通知方式 支付宝APP支付 应用公钥,应用私钥 异步 支付宝APP提现 应用公钥,应用私钥,支付宝公钥 同步 支付宝APP退款 应用公钥,应用私钥,支付宝公钥 同步 微 ...

  4. java对接支付宝微信银联_经典设计模式之策略模式【如何重构聚合支付平台,对接【支付宝,微信,银联支付】】(示例代码)...

    写在前面:设计模式源于生活,而又高于生活! 为什么要使用设计模式重构代码 使用设计模式可以重构整体架构代码.提高代码复用性.扩展性.减少代码冗余问题. Java高级工程师装逼的技能! 什么是策略模式 ...

  5. 支付宝、微信免接口支付方案

    title: 支付宝.微信免签约接口支付方案 tags: 支付宝.微信 背景 相信很多开发者或者运营者,在为网站(博彩.棋牌 )即时到账充值发愁.还在为无法申请支付宝即时到账接口而担忧. 在这里我将为 ...

  6. 微擎支付返回商户单号_支付宝,微信,银联支付

    https://open.unionpay.com/tjweb/index 银联支付 统一支付接口 接口描述 用于线下刷卡交易.生物特征识别(例如人脸).被扫支付等后台交易. 对于被扫支付,收银员使用 ...

  7. 支付宝、微信(pc+h5)支付

    //支付宝支付(pc端是一个二维码,移动端是唤起app进行支付) function aliipay(order) {let orderList = {orderId: order}; //订单号wai ...

  8. web版收银系统,支持支付宝,微信扫描枪支付,数字输入

    Web版收银系统 这是一款web版的系统,可以在PC,平板,手机等多平台使用,支持微信,支付宝扫码支付,对接小程序订单,界面简洁明了,而且支持键盘输入. 在线测试地址:https://admin.zj ...

  9. 支付宝和微信的发起支付/h5支付

    //拿到后台返回的支付信息,调用onBridgeReady onBridgeReady: function (response) {this.initWeixinReady(response);},i ...

最新文章

  1. win7怎么关闭虚拟机服务器,大师教您Win7系统怎么彻底关闭退出vmware虚拟机的处理要领...
  2. MXNET源码中NDArray数据的获取和打印
  3. 虚拟打印的实现-DDK部分
  4. apache重定向无效
  5. Labview-浅谈Labview中VISA的设计
  6. java 21-13 合并
  7. 【RAC】 RAC For W2K8R2 安装--总体规划 (一)
  8. 预编码 matlab,无线通信-预编码-MATLAB代码合集
  9. 机器学习中的随机过程_机器学习过程
  10. HDU6428-Calculate-数论函数
  11. uva11361数位dp
  12. druid连接池以及数据源了解
  13. SAP License:ERP具有的九种优势
  14. Python爬虫之一键保存全部必应高清1080P壁纸
  15. http抓包实践--(四)-http压缩和url encode
  16. The proxy server is refusing connections 怎么解决呢?
  17. 基于区块链技术实现“资产通证化”
  18. 窃 听 器--郭德纲相声
  19. iOS地图定位系统语言为英文时,返回中文位置信息
  20. 笔记 黑马程序员C++教程从0到1入门编程——基础语法入门

热门文章

  1. [笔记].上拉电阻的作用之一 - 将 TTL电平提升至CMOS电平
  2. 字节跳动张一鸣身价594亿美元超马化腾
  3. 3.7 51单片机-LED 16*16点阵
  4. Hologres X TapTap:毫秒级实时在线推荐
  5. Android audio篇章(1)------Audio架构
  6. 五子棋下法C#语言,C#实现简单的五子棋游戏
  7. 从贝叶斯计算、深度学习、智能投顾看人工智能与区块链技术
  8. hMailServer+foxmail配置局域网邮件服务器
  9. 告别“手抄报表” 锐捷网络RIIL引领南方医科大学南方医院数字运营
  10. Better Scroll+Vue、div的@click无效解决方法