官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6,即可看到h5调起支付需要的参数。

获取后台调用微信生成的支付签名,

$scope.onBridgeReady = function () {$http.post("/wechat/createSign", $scope.payOrder).then(function (data) {var order = data.data.data;WeixinJSBridge.invoke('getBrandWCPayRequest', {"appId": order.appid,     //公众号名称,由商户传入"timeStamp": order.timeStamp,         //时间戳,自1970年以来的秒数"nonceStr": order.nonce_str, //随机串"package": "prepay_id=" + order.prepay_id,"signType": "MD5",         //微信签名方式"paySign": order.sign   //微信签名}, function (res) {if (res.err_msg == "get_brand_wcpay_request:ok") {//alert("微信支付成功!");$http.post("/wechat/toPaySuccessUrl").then(function (data) {window.location.href = data.data.data + "?orderNo=" + order.out_trade_no;})// window.location.href = "http://qiansheng.imwork.net/paydone.html?orderNo=" + order.out_trade_no;} else if (res.err_msg == "get_brand_wcpay_request:cancel") {//alert("用户取消支付!");} else {alert("支付失败!");}});})
}

签名算法:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3

参考:微信公众号支付(二)H5调起支付 https://blog.csdn.net/zsm15623544116/article/details/79392263

通用demo: https://gitee.com/1600875665/weixinPay

然后需要实现iframe内调起支付

在iframe内发起

top.postMessage(data,'*');

外部做业务处理,可以做支付调起等

window.addEventListener("message", function (e) {wxPay(JSON.parse(e.data))
})

 微信支付方法封装

function wxPay(wxParams) {// 微信支付APIfunction onBridgeReady() {WeixinJSBridge.invoke('getBrandWCPayRequest', wxParams,function (res) {if (res.err_msg == "get_brand_wcpay_request:ok") {// 使用以上方式判断前端返回,微信团队郑重提示://res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。console.log(res)alert("成功")} else if (res.err_msg == "get_brand_wcpay_request:cancel") {console.log(res)alert("失败")// window.history.go(-1)}});}if (typeof WeixinJSBridge == "undefined") {if (document.addEventListener) {document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);} else if (document.attachEvent) {document.attachEvent('WeixinJSBridgeReady', onBridgeReady);document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);}} else {onBridgeReady();}}

注:想在iframe调起window.WeixinJSBridge是不行的,会返回undefined

1.设置监听window.addEventListener('message', function (msg) {
console.log(msg.data);
})2.发送 messagewindow.postMessage(”message“, '*');实现多页面通讯;使用postMessage 需要精确的目标origin,不要用 *。

iframe: https://www.w3school.com.cn/tags/tag_iframe.asp

跨域iframe实例: https://www.jb51.net/article/123740.htm https://www.cnblogs.com/qidian10/p/3316714.html

调用parent页面的方法: https://blog.csdn.net/shuaidao_wupengyou/article/details/73497528?locationNum=10&fps=1

window.addeventlistener使用方法:https://www.cnblogs.com/ConfidentLiu/p/7815624.html

微信公众号支付,iframe跨域相关推荐

  1. prepay id为空php,微信公众号支付踩坑笔记

    微信公众号支付,简单说主要分为如下几个步骤. 1.openId的获取 openId是微信用户与特定公众号对应关系的记录. 1.1设置回调域名 官方解释:用户在网页授权页同意授权给公众号后,微信会将授权 ...

  2. 微信openid绑定java,微信公众号支付(一)如何获取用户openId

    一.获取apikey,appsecret与商户号 注册公众号.商户号 二.获取用户的OpenId 1.设置[授权回调页面域名] 官方解释:用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回 ...

  3. 微信公众号支付的那些坑

    在之前记录了一下做微信公众号支付的过程,但是有些混乱,之前做的内个也不是直接接的微信官方,而是转接的别人在接的微信官方,他们赚个手续费,在这之后因为app停用了一段时间,上游公司把我们的appid给关 ...

  4. 微信公众号支付(JSAPI)对接备忘

    0 说明 本文里说的微信公众号支付对接指的是对接第三方支付平台的微信公众号支付接口. 非微信支付官方文档里的公众号支付开发者文档那样的对接.不过,毕竟腾讯会把一部分渠道放给银行或有支付牌照的支付机构, ...

  5. vue 调用共众url_vue单页面,在微信公众号支付中遇到的URL未注册BUG解决方法-Go语言中文社区...

    今天在做微信公众号支付的时候,遇到一个bug,在当前支付页面点击支付,就会报错,提示当前页面的URL未注册.如下图: 但是,这个URL我们是在后台微信公众号配置了的,所以说不会出错. 但是我们刷新一次 ...

  6. yii2嵌入微信公众号支付

    序言 随着微信被越来越多的人使用,微信商城成为如今的热门.每一个商城都需要有自己的支付方式,微信商城也不例外.微信公众号支付就是微信商城的一种支付方式,微信支付随着微信的推广使用也被广泛应用.今天我主 ...

  7. 微信公众号支付调用chooseWXPay提示“errmsg choosewxpay fail”

    微信公众号支付一直提示"errmsg choosewxpay fail",也没有提示具体错误信息,签名没有问题(签名验证地址:https://pay.weixin.qq.com/w ...

  8. 微信公众号页面支付接口java,[Java教程]微信公众号支付(三):页面调用微信支付JS并完成支付...

    [Java教程]微信公众号支付(三):页面调用微信支付JS并完成支付 0 2015-09-15 15:00:30 一.调用微信的JS文件 1.首先要绑定[JS接口安全域名],"公众号设置&q ...

  9. js如何调用h5的日期控价_微信公众号支付H5调用支付解析

    最近项目需要微信支付,然后看了下微信公众号支付,虽然不难,但是细节还是需要注意的,用了大半天时间写了个demo,并且完整的测试了一下支付流程,下面分享一下微信公众号支付的经验. 一.配置公众号微信支付 ...

最新文章

  1. STL中的list详解
  2. Activity(活动)之Intent(意图)(显式与隐式)的使用
  3. 多页面(MPA)开发 VS 单页面(SPA)开发
  4. Foundations of Machine Learning: Rademacher complexity and VC-Dimension(2)
  5. mongoose查询不到数据表中的数据的问题
  6. GIT项目管理工具(part7)--移动或者删除文件
  7. 全新玖五社区系统整站源码
  8. 百度地图POI数据爬取,突破百度地图API爬取数目“400条“的限制11。
  9. 前端开发中,如何优化图像?图像格式的区别?
  10. 小米手机全黑屏9008救砖
  11. linux中硬链接为什么不能跨分区
  12. Vivado时钟之间的三种关系
  13. 我亦无他,唯手熟尔:Verilog基本语法目录
  14. UIGestureRecognizer触控手势
  15. 入门c语言。(1建立开发环境)
  16. 企业网站推广步骤有哪些?
  17. 【全奖博士】香港大学招收计算机视觉方向博士/博后/研究助理
  18. ringbuff | 通用FIFO环形缓冲区实现库
  19. 豆豆趣事[2015年08月]
  20. 传感器模拟器——python

热门文章

  1. Piano-PIR:Extremely Simple, Single-Server PIR with Sublinear Server Computation
  2. ODrive0.5.1程序分析#3 FOC算法程序
  3. Electron 简介
  4. 如何安装projectlombok
  5. 2023武汉集训总结
  6. 自由程序员们是如何赚钱的
  7. Linux搭建邮箱服务器
  8. MATLAB产生伪随机数
  9. 模块化多电平变换器,MMC载波移相脉冲宽度调制
  10. 英语六级写作必备短语词汇1