微信公众号sdk

微信公众号开发
能享用微信公众号的API,比如分享给好友,分享到朋友圈,禁止菜单功能,选择图片,获取地址,以及支付

微信的功能有两种执行方式
一种是 wx.xx
一种是 WeixinJSBridge.call()

WeixinJSBridge是很老的方式,在微信网页才能使用的全局变量,不需要引入js插件,现在都不用了,但是去查资料会有很多,看了没用的,但是有两个是可以用的

// 禁止菜单功能
WeixinJSBridge.call('hideOptionMenu');

// 关闭当前页面
WeixinJSBridge.call('closeWindow');

除了上面的这两个,其他的功能都要用下面的写法
而且需要前提条件

  1. 公众号需要通过认证,认证之后才能在微信公众号后台的==开发==的==接口权限==里看到功能都是已获得,未获得就不配调用微信的API
  2. 需要有服务器域名,域名配置在公众号后台的==JS接口安全域名==名单里
  3. 需要引入wx的js插件,专业叫wxsdk文件
    js文件在微信公众号开发文档里下载,现在的版本是1.4
    如果是vue使用,weixin-js-sdk

配置阶段

// 引入js之后需要配置
// 除了jsApiList这个数组,其他的值都来自后端,就是跟后端拿值就行
wx.config({
  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  appId: '', // 必填,公众号的唯一标识
  timestamp: , // 必填,生成签名的时间戳
  nonceStr: '', // 必填,生成签名的随机串
  signature: '',// 必填,签名
  jsApiList: [] // 必填,需要使用的JS接口列表
});
// 跟config写在一起就行,如果config配置成功,就会执行这个
wx.ready(function(){
  // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});
// 跟config写在一起就行,如果config配置出错,就会执行这个
wx.error(function(res){
  // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});

// jsApiList需要传参需要的功能
// 内容在下载js的链接的最下面就能看到

分享功能

// 微信文档有两个分享
// 一个是onMenuShareTimeline 和 onMenuShareAppMessage (即将废弃)
// 一个是updateAppMessageShareData 和 updateTimelineShareData
// 用哪个,用废弃的那个,新的只能在苹果手机使用,废弃的苹果手机和安卓都没问题

// 先配置
jsApiList: ["onMenuShareTimeline","onMenuShareAppMessage"]

// ready是配置完成后会自动执行的
// 不是所有的方法都需要写在ready里的
// 但这两个需要
wx.ready(function(){
    wx.onMenuShareTimeline({
    title: '参数传标题',
    imgUrl: '参数传图片',
        success: function(){ ... }
    });
    wx.onMenuShareAppMessage({
    title: '参数传标题',
    imgUrl: '参数传图片',
    desc: '参数传副标题',
        success: function(){ ... }
    });
});

选择图片
这个是完美了解决了画布的兼容和BUG

// 需要用到的配置
jsApiList: ["chooseImage","getLocalImgData"]
// 当用户点击上传图片的按钮后
function ImgUpload(){
   // 打开微信相册的功能
   wx.chooseImage({
       count: 1, // 默认9,如果选多个是返回的数组
       sizeType: ['compressed'], // 可以指定是原图'original'还是压缩图,默认二者都有,这里屏蔽了原图
       sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机'camera',默认二者都有,这里屏蔽了相机
       success: function (res) {
            //这意味着只有IOS8以上的手机才能用这个本地图片接口,而以下的版本如果使用JSSDK1.2.0版本会导致无法获取图片数据,或者使用1.1.0又无法预览图片的尴尬场面,另外用了1.2.0版本后uploadImage会出现file not exists的错误
            var localIds = res.localIds;  //这是数组
            getImgData(localIds[0]);  //但是这个程序只要一张图片,所以取值arr[0]
        }
    })
}

function getImgData(localIds){
    // 选择图片后用微信的功能转成base64
    wx.getLocalImgData({
        localId:localIds,
        success: function (res){
            //base64
            var localData = res.localData;
            /*判断ios是不是用的 wkwebview 内核*/
            if (window.__wxjs_is_wkwebview){
                localData = localData.replace('data:image/jgp', 'data:image/jpeg');
            }else{
                if (localData.indexOf('data:image') != 0) {
                    //判断是否有这样的头部
                    localData = "data:image/jpeg;base64," + localData;
                }
            }
            // 这个值就可以直接传给后端了
            console.log(localData)
        }
    })
}

获取当前经纬度
这个配合腾讯地图使用,查看下一篇

支付
需要商家向微信申请开通支付
然后配置白名单,查看配置方式

WeixinJSBridge.invoke('getBrandWCPayRequest',{
     "appId":appId,     //公众号名称,由商户传入
     "timeStamp":timeStamp,         //时间戳,自1970年以来的秒数
     "nonceStr":nonceStr, //随机串
     "package":package,
     "signType":signType,         //微信签名方式:
     "paySign":paySign //微信签名
  },function(res){
    methods.hideLoading();
    if(res.err_msg == "get_brand_wcpay_request:ok" ) {
        console.log('支付成功');
    }else if(res.err_msg == "get_brand_wcpay_request:cancel"){
        console.log('支付取消');
    }else if(res.err_msg == "getBrandWCPayRequest:fail_nopermission"){
        console.log('当前版本不支持,请检查升级或到微信中支付!');
     }else if(res.err_msg == "get_brand_wcpay_request:fail_nopermission"){
        console.log('当前版本不支持,请检查升级或到微信中支付!');
     }else if(res.err_msg == "get_brand_wcpay_request:fail"){
        console.log('支付失败');
    }
});

原文地址:https://www.cnblogs.com/pengdt/p/12072476.html

时间: 2024-11-05 18:56:01

微信公众号sdk的相关文章

VopSdk一个高逼格微信公众号开发SDK:自动化生产(装逼模式开启)

VopSdk一个高逼格微信公众号开发SDK(源码下载) VopSdk一个高逼格微信公众号开发SDK:自动化生产(装逼模式开启) 针对第一版,我们搞了第二版本,老规矩先定个目标. 一 我们的目标 a.移除PayExcute,统一执行入口,目前只保留一个入口Excute b.序列化特性统一,目前只用设置xml特性即可(反序列化时xml和json都可以直接用) c.支持文件上传,目前只有多客服管理上传头像接口用到过 d.使用T4模板自动生产所有Request.Response.以及所有测试Test(装

SAE微信公众号PHP SDK, token一直验证失败

用的是SAE,创建的是微信公众号PHP SDK框架,里面example文件夹下有server.php用来验证token的.但是问题来了,无论我怎么输入URL和token,一直告诉我token验证失败.我尝试过:1.URL:http://XXXXXXX.sinaapp.com/example/server.phptoken:weixin(就是文件里面默认的token值) 这是建立之初教程指示的地址.仍然 显示token验证失败2.我在官网,微信公众平台开发手册里下载的实例代码URL:http://

使用开源库MAGICODES.WECHAT.SDK进行微信公众号支付开发

概要 博客使用Word发博,发布后,排版会出现很多问题,敬请谅解.可加群获取原始文档. 本篇主要讲解微信支付的开发流程,相关业务基于MAGICODES.WECHAT.SDK实现.通过本篇教程,您可以很方便的快速完成微信公众号支付的开发. 关于Magicodes.WeChat.SDK MAGICODES.WECHAT.SDK为心莱团队封装的轻量级微信SDK,现已全部开源,开源库地址为:https://github.com/xin-lai/Magicodes.WeChat.SDK 更多介绍,请关注后

微信公众号退款开发

博主是小菜鸟,这篇文章仅是自己开发的随笔记录,不足博友可以指出来,一起进步 1.[微信支付]公众号支付开发者文档链接地址 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4 调用微信退款接口,需要发送特定的xml格式字符串到到微信退款接口: 2.微信申请退款需要双向证书, JAVA只需要使用apiclient_cert.p12即可,证书从 https://pay.weixin.qq.com/index.php/core/hom

微信公众号开发总结

最近公司用到了微信公众平台,所以研究了一下微信公众号的开发技术,总体来说比较简单,结合现有的平台核技术,实现起来非常方便. 首先先来了解一下微信公众平台. "微信,是一个生活方式" ,这是微信的自我评价,是不是觉得如果那天不在朋友圈里分享一下自己的最新状态, 并且收到几个赞和评价的话,会觉得空虚寂寞呢?它实实在在的改变了我们的生活方式. " 微信,也是一个生意方式 ",在微信成为我们日常必备之app的同时,它同样具备巨大的的商业 或许不应该称为潜力,因为有很多人已经

利用H5开发微信公众号

一. 首先授权配置 公众号设置 -->功能设置 设置业务域名!  这里的MP_verify_w7tdZrafqhkK9Mcj.txt文件,需要放到你项目的根目录下,例子:你的项目war包叫 test.war ,里面包含了src,WEB-INFO两个文件夹,则把MP_verify_w7tdZrafqhkK9Mcj.txt放到这两个文件夹的同级目录下;即现在test.war下有两个文件夹一个txt文件:src,WEB-INFO,MP_verify_w7tdZrafqhkK9Mcj.txt. 后面就需

微信公众号支付总结

微信公众号支付总结大致可以分为三步, 第一步获取用户授权,第二步调用统一下单接口获取预支付id,第三步H5调起微信支付的内置JS进行支付. 注意: 不得不提的是,每个公众号(公众平台),每一个APP(开放平台), 如果要进行微信支付得单独进行开通微信支付功能.开通成功后会为每一个公众号,APP 分配一个商户号.最开始没有搞清楚这层关系,导致出现类似"appid与商户号没有关联",授权时没有"scope 权限"这样的问题. 获取用户授权 String wxaccess

国内流行的两大开源.net微信公众平台SDK对比分析

最近忙于微信周边的开发 难免手痒去搜索一下有没有相关的sdk直接拿来使 还真发现了不少 这里总结两个看起来比较不错的.net平台下基于C#语言开发的SDK 一个强大一个小巧 (1) Senparc.Weixin.MP Github: https://github.com/JeffreySu/WeiXinMPSDK (Fork:500+) 标语:微信公众平台SDK Senparc.Weixin for C# 达到1000+ commits,15个contributors,5个branches. (

微信公众号内H5调用微信支付国内服务商模式

最近在折微信公众号内H5用JSAPI调用微信支付,境内服务商版支付,微信支付给出的官方文档以及SDK不够详细,导至我们走了一些弯路,把他分享出来,我这边主要是用PHP开发,所以未加说的话示例都是PHP代码 微信的官方文档  https://pay.weixin.qq.com/wiki/doc/api/jsapi_sl.php?chapter=7_1 1.服务商模式下调用统一下单 独立商户模式统一下单:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php