微信开发禁止掉防盗号提示

2018-06-15 11:06:58 qinlulucsdn 阅读数 220

Q:1.5版本基础库的小程序出现了image bindload事件响应两次的问题。
A:你好,感谢反馈,我们会尽快进行修复,敬请关注。

Q:地图里marker的callout在android机型上变成一个黑色块。
A:你好,这是一个已知问题,安卓下默认背景为黑色,我们会在后续版本中进行修复,敬请关注。你可以先手动设置bgColor为白色。

Q:新版微信开发者工具,tabBar选中字体颜色不对。
A:收到,我们会在今天的更新中修复这个问题、

Q:swiper 第一张图片不显示。
A:你好,感谢反馈,我们正在定位问题,会在后续版本中进行修复,敬请关注。

Q:ios中下拉刷新会触发上拉加载,下拉刷新时加个状态值还是会触发。
A:你好,这是一个已知问题,页面太短的时候会导致下拉刷新时同时触发上拉加载,我们会在后续版本中进行改善,敬请关注。

Q:基础库版本1.5.0,调试时,当前页面的AppData错误,很多data为空,进入下一页面,前一页面的数据才有。
A:你好,这是一个已知问题,我们会尽快进行修复。

Q:IOS微信6.5.14版本toast和loading某些特定字数出现省略号。
A:你好,这是一个已知问题,我们会在后续版本中进行修复,敬请关注。

Q:微信更新到6.5.13后 小程序调用蓝牙接口报错 10011
A:10011是没有打开gps定位导致的。

Q:一个手机打开小程序无法搜索出另外在周围打开的蓝牙的手机,无论是安卓或者iOS,一直搜索不出来。
A:我们提供的是低功耗蓝牙接口,不支持经典蓝牙。

Q:小程序UI布局错乱。
A:你好,在新版本中我们已经尝试进行了修复,但是修改涉及代码编译过程。小程序可能需要重新发版后修复才能生效。

Q:新版SDK是不是更改了 binderror 触发的时机,记得之前 image 组件 src 属性值为空的 时候,不触发binderror,现在为空好像会触发binderror
A:你好,感谢反馈,预计1.5.3会修复。

微信小程序常见FAQ(17.8.14-17.8.20)

Q:直播小程序目前应选择什么服务类目?
A:你好,目前小程序平台已关闭直播类目,暂时无法支持直播类小程序接入。

Q:swiper点击指示点切换是需要自己实现吗?
A:你好,点击指示点切换的功能现已移除。因为手机上面较难点击指示点,容易误点。

Q:怎么在标题导航上添加点击事件?
A:你好,目前暂不支持此功能。

Q:三星手机上传的图片,被旋转了90°
A:你好,这是一个已知问题,我们会在后续版本中进行修复,敬请关注。

Q:wx.getUserInfo获取到encryptedData不能在小程序直接解密?
A:只能在服务端解密。

Q:小程序页面高度变大bug
A:已知,应该是偶现。目前也没有可以规避的方法。

Q:wx.getUserInfo 在获取用户授权的时候,关闭屏幕的bug
A:已知问题,在6.5.13带上了修复。

Q:action sheet 字体颜色设置无效。
A:你好 iOS 只允许设置某一项为红色,Android 不允许自定义颜色 。文档中没有说清楚,我们会进行补充。

微信小程序常见FAQ(17.8.7-17.8.13)

Q:测试帐号通道未开通,如何提交测试帐号?
A:建议将小程序的完整体验流程记录在网盘,然后将网盘链接和账号提供到版本描述中。

Q:onShareAppMessage,分享个人shareTickets问题
** 发现安卓分享个人和群聊都有shareTickets属性值,而IOS分享给个人没有该字段。**
A:只有转发到群聊中打开才可以获取到 shareTickets 返回值,单聊没有 shareTickets。之前由于实现问题安卓给个人会返回无效的ticket,请忽略。

Q:video在安卓和开发工具都能看 ios上面就不行?
A:请检查是否因为网站未备案,无法访问。

Q:为什么从分享到群里的卡片进入小程序,再点击导航栏的首页图标进入首页后,每次点击tabbar都会触发onLoad,正常情况不是点击tabbar后,再点击tabbar,是不触发onLoad的吗?
A:你好,感谢反馈,是我们的bug,会在后续版本中进行修复,敬请关注。

Q:wx.navigateTo在安卓手机上不显示返回。
A:你好,安卓系统上使用手机返回键返回,iOS上使用左上角返回按钮返回。针对不同平台用户的使用习惯差异我们会保留。

Q:小程序安卓版蓝牙发送数据后无法关闭连接。
A:安卓系统上存在允许应用对设备持有多份链接实例,因此 “closeBLEConnection接口并没有真正断开与蓝牙设备的连接” 的原因是之前对单个设备做了多次的 createBLEConnection 操作,请尽量保证 create 和 close 成对调用

Q:Page.prototype.setData 频繁。
A:你好,我们已经注意到这个问题,后续会对warning的时机进行优化。感谢反馈。

Q:wx.opensetting bug。res.authSetting 中不管设置什么,弹窗都是用户信息。
A:openSetting功能是调起客户端小程序设置界面,返回用户设置的操作结果,authSetting 不能赋值。

Q:蓝牙搜索得到相同的两个变量。
A:建议用deviceid做去重,iOS系统对于有自定义LocalName字段的设备,可能会上报两次 onDeviceFound

Q:textarea 显示严重bug 苹果设备显示问题。
A:你好,这是一个已知问题,iOS下textarea会有哦默认的内边距。我们会在后续版本中进行修复,敬请关注。

Q:点击小程序右上角的首页(房子)键整个微信闪退。
A:你好,这个问题是 6.5.12 iOS微信引入的问题,有两种解决方案
1、升级微信至 6.5.13
2、导致闪退的原因是在首页的onLoad或onShow上有执行页面跳转的函数(redirectTo、relaunch) ,尝试用 setTimeout 的方法延迟 200ms调用,可以避免这个问题。

Q:swiper里加了bindchange事件,有很多个swiper-item,连续快速切换swiper-item触发bindchange事件,小程序会出现一直无限触发bindchange事件。
A:请不要在change事件中使用setData改变current值。

Q:我的层级是这样:map里嵌套cover-view,cover-view中有一navigator,在电脑测试时跳转正常,但是移到真机上就没有任何反应。
A:你好,cover-view内只能使用cover-* 组件

Q:安卓wx.request导致request:fail:interrupted
A:你好,之前修复的时候漏了部分情况,会在下个安卓版本中解决。

Q:关于网络请求异步访问与 let 报错。
A:使用工具提供的ES6转ES5功能,否则旧版本的系统会不认识这些关键字的。网络请求目前没有同步版本。

微信小程序常见FAQ(17.7.31-17.8.6)

Q:小程序缓存机制是怎么样的?
A:小程序发版,客户端先用之前的包打开,异步更新好。下次重新打开才是用新包。7天之内不使用的小程序会被强制更新一次。

Q:setData方法是有react那样的虚拟dom优化吗?
A:有做虚拟DOM的优化,但设置相同数据还是会触发新渲染的。

Q:关于iOS分享之后的打开首页之后崩溃。
A:你好,已知问题,会在下个版本iOS微信中修复。在onShow或onLoad等中切换页面会导致此问题,目前可以尝试采用延时0.3秒以上进 行暂时规避。

Q:小程序支持FTP协议吗?
A:你好,目前不支持FTP。

Q:地图上设置Marker经纬度时使用的是哪种坐标系?
A:gcj02 火星坐标系。

Q:保存图片到手机saveImageToPhotosAlbum()错误。
A:你好,现在saveImageToPhotosAlbum还不支持保存代码包内的文件,我们会考虑在后续版本中增加支持。

Q:小程序发布后,是否可以回退到上一个版本。
A:你好,版本回退功能已发布,欢迎使用和反馈意见。

Q:什么时候小程序后台可以支持多人登陆?
A:已经开发中了,我们争取早日上线。

Q:winphone端的微信里面支持小程序吗?
A:不支持。

Q:image组件是延迟加载的吗?
A:目前不是,后续会支持lazyLoad功能。

Q:新版开发者工具,开发网页时,如何使用 ios 和 android调试呢?
A:目前不支持 iOS Android真机调试。后续支持。

微信小程序常见FAQ(17.7.24-17.7.30)

Q:置顶后,按HOME键,小程序真的能在后台获取位置信息并上传到服务器吗?
A:系统限制,微信切入后台后目前无法继续获取地理位置。

Q:tabBar是在app.josn中设置的,但是现在我打算加入多语言功能,希望tabBar中的text可以根据多语言设置自动切换为对应的语言文字。
A:你好,目前暂不支持此功能。有需求的话可以自己实现一个tabBar

Q:能否增加自动获取开发环境参数的接口。
** 1、代码能自动获取到appid;**
** 2、代码能自动获取到 开发版 体验版 对外发布版 等参数。**

A:你好,你的反馈我们已收到,我们会在后续的版本中考虑增加类似功能。

Q:encryptedData的意义?
A:1、unionid只有在某些情况下才可以在login阶段和openid一起获取
2、为了安全性。因为前端甚至整个微信都有可能被坏人劫持,坏人可能会传回来一个假的userInfo,但是encryptedData坏人是没办法造假的,因为用于加密和解密的sessionKey只在微信后端和开发者后端传递。所以encryptedData可以用于防止这种情况出现

Q:知乎可以获取微信号关联的手机号的问题。
A:1、小程序确实有部分接口,会邀请个别开发者参与早期测试,以帮助发现问题,逐步完善方案。
2、为方便调试和验证,我们一般会综合考量开发团队的技术实力和产品影响力,特别是与接口功能的契合度。这阶段参与者的数量不会很多,时间也会有不确定性。
3、待接口形态确定后,我们会第一时间制定开放规则,并在文档和公告中周知大家。故尚未看到该能力介绍的开发者,可以耐心等待官方文档的更新。

Q:wx.showToast中image使用gif不正常。
A:showToast 不支持使用gif

Q:一组list图片渲染,怎么去掉元素默认的间距?
A:设置 image的样式为display: block试试。

Q:小程序蓝牙是否还是只支持蓝牙4.0?
A:是的。

Q:onShareAppMessage转发title可以调字体吗?
A:你好,目前暂不支持此功能。

Q:能否在【自定义编译】对话框中加一个可以按钮,可以自动赋值当前场景、页面路径、页面参数呢?
A:已经在list中了,后续版本会添加这个功能。

**
微信小程序常见FAQ(17.7.17-17.7.23)

Q:小程序能否获取本机的蓝牙deviceId相关信息?
A:没有提供类似接口。
从系统能力来说,iOS系统没有提供获取本机蓝牙Mac地址的api,有个方法是可以让外设蓝牙设备来获取已连接的手机蓝牙Mac地址,但是目前 发现有些iOS手机重启后蓝牙Mac地址会改变。

Q:真机wx.captureScreen(OBJECT)截图后缀名为unknown,造成截图后无法保存。
A:你好,这是一个已知bug,我们会尽快进行修复。

Q:真机测试时总是弹出层弹出被Map遮挡。
A:map组件层级最高,目前的确会出现这种情况。后续版本中我们会考虑进行优化。

Q:开发者工具上的样式和真机测试的样式不一样?
A:渲染的问题需要开发者自行解决,工具无法保证三端渲染的统一
https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/details.html

Q:wx.getBackgroundAudioManager() onStop无效。
A:播放结束触发onEnded,手动stop才会触发onStop。

Q:检测picker组件兼容不支持
A:你好,感谢反馈,我们会尽快修复。

Q:picker-view开发者工具可以正常显示,但是真机下就无法显示。不知道是不是跟用了cover-view有关呢?
A:cover-view只能用在原生组件map、video、canvas内。

Q:用户打开小程序后再扫码进入获取不到二维码参数。
A:你好,这是一个已知bug,我们会尽快进行修复。

Q:文件下载 支持暂停继续下载吗?
A:目前不支持断点续传,后续会考虑增加。

Q:微信小程序 如何监听页面左侧的返回按钮?
A:你好,目前暂不支持此功能。

Q:cover-view不会浮在原生组件之上。
A:你好,这是一个已知bug,我们会尽快进行修复。

Q:调用wx.relaunch报错:fail can not invoke relaunch in background。
A:reLaunch 在小程序进入后台不能调用。

Q:小程序现在支持识别图中二维码么?
A:你好,目前暂不支持此功能。

Q:小程序转发怎么获取是转发到了群还是个人?
A:你好,目前暂时无法区分。

Q:playbackgroundaudio 组件,第一次扫码无法正常播放,第二次正常,我是摇动手机时触发,不是点击播放,如何处理?
A:你好,目前对播放功能有用户点击后才能播放的限制。后续版本中会考虑解除这个限制。

微信小程序常见FAQ(17.7.10-17.7.16)

Q:通过接口 https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN 生成的小程序码,用户微信扫描小程序码进入,IOS
** 系统每次扫码都能跳到页面并执行onload事件;安卓系统第一次微信扫描进入是正常的,第二次就不进入onload事件了,这个时候怎么获取参 数?**
A:你好,这是一个已知bug,我们会尽快进行修复。

Q:ios端bug:从分享进入,点击右上角Home键,crash问题。
A:你好,现有版本可以使用setTimeout暂缓redirectTo进行规避。下一版本会修复这个问题。

Q:微信公众平台->自定义菜单->跳转小程序->小程序路径部分可否传参数给小程序。
A:你好,可以的。

Q:微信开发者工具,7/11更新后代码不能自动换行了。
A:不好意思给你带来困扰了,这是 bug,我们后续会修复。

Q:7-11 编辑器更新后,编辑器调试 wx.getBLEDeviceCharacteristics 报错。
A:你好,这是一个已知bug,我们会尽快进行修复。

Q:开发者工具,基础库1.4.0,地图bindtap事件不生效,catchtap可以。
A:你好,这是一个已知bug,我们会尽快进行修复。

Q:新增 API setNavigationBarColor 只能修改首页标题栏颜色,其他页不生效。
A:你好。目前可以尝试setTimeout等进行延迟调用,或者删除掉app.json里面的相关配置。

Q:如何动态设置导航栏的背景颜色?
A:使用 setNavigationBarColor 。动态修改样式可以用setData修改style或class

Q:第三方平台能有权限修改 授权小程序的 “扫普通链接二维码打开小程序” 配置吗?
A:你好,目前不支持进行修改。

Q:蓝牙开启discover后会找到两个同样的设备,连续触发了两次wx.onBluetoothDeviceFound,信息是一样的,请问是bug吗?
A:存在部分设备在iOS上触发两次发现回调的情况,广播数据会有所不同,可以通过UUID判重来过滤这种情况。

Q:rich-text 组件 "’" is not supported.
A:目前暂时只支持 & > < " '
后续会根据反馈情况来支持更多转义字符。

Q:1.开启蓝牙扫描后,用户手动关闭iOS蓝牙,这时出发了wx.onBluetoothAdapterStateChange,里面discorvery=true。
** 2.还有,当discover开启/关闭,不会触发wx.onBluetoothAdapterStateChange回调吗?**
A:1.开启蓝牙扫描后,用户手动关闭iOS蓝牙,这时出发了wx.onBluetoothAdapterStateChange,里面discorvery=true。
这里存在蓝牙关闭时扫描状态没有及时更新的情况,下版本fix
2.还有,当discover开启/关闭,不会触发wx.onBluetoothAdapterStateChange回调吗?
可以通过startBluetoothDevicesDiscovery 和 stopBluetoothDevicesDiscovery的回调 来判定 ,下版本也会和安卓平台一起对齐,会触发回调。

Q:加入appid 返回baseresponse errorcode -14。
A:你好,这是个已知的bug,请退出开发工具重新登录。

Q:用wx.playBackgroundAudio后台音乐播放iphone异常。
A:你好,iOS的playBackgroundAudio存在bug,我们会在后续版本中修复。

微信小程序常见FAQ(17.7.3-17.7.9)

Q:请问如何设置我点击上一页,下一页的时候能出现的是顶部,而不是当前页的位置,就是我从哪里点击的新的一页就会显示当前的位置,怎么让 他回到顶部呢?
A:如果使用了scroll-view,可以使用scrollIntoView,或者scrollTop属性来设置
我们在即将发布的版本也会提供api,可以移动到页面的某一位置。

Q:订阅号里的开发管理页面在哪,上传的小程序版本找不到了呢?
A:小程序和订阅号归属于不同的账号下,两者虽有绑定关系,但是小程序的版本管理要使用小程序的账号登录后进行操作,不能在订阅号的管理页面中进行。

Q:小程序如何去掉顶部导航栏的返回按钮?
A:无法去掉。

Q:组件 border-radius 样式属性,编辑器内预览圆角正常,实机预览时没有圆角。
A:video组件是native组件,仅支持有限的样式设置。组件在开发工具和手机上的底层实现有所差别,表现上有细微差异,最终效果请以手机展现为准。

Q:当input和fixed固定的布局重合的时候,input的提示语可以看见,点击固定布局上的按钮时,也能触发input,在手机上,对固定布局使用z-index,结果也一样。
A:input组件未被激活时可以被z-index覆盖。textarea是native组件,在z轴层级最高,不能覆盖。

Q:Android6.0无法注册notify=true的BLECharacter
A:这里有个bug,忽略这个错误继续尝试下后续步骤看看。

Q:三星S7使用调用蓝牙接口10008错误。
A:已知bug,会在后续版本中进行修复。目前请尝试忽略该错误继续进行后续步骤。当前版本中虽然会报错,但是notify已成功,不影响后续数据传输功能。

Q:当我请求接口,状态为403时,wx.request的fail回调没有触发。
A:4xx、5xx 等 response 的异常状态不会进入fail回调,请在success回调中检查statusCode。fail回调一般源于在url格式、参数类型检查、网络连接、域名解析、response编码问题等

Q:安卓手机升起键盘会后,小程序标题栏会消失。
A:6.5.10已修复。

Q:小程序转发回到主页按钮怎么设置?
A:你好,目前不支持对该按钮进行设置。

Q:wxml中如何输入尖括号?
A:你好,下一版本中text标签会增加对html转义字符支持,请关注小程序更新。

Q:使用 json 生成多个 movable-view, delete 某一个 json 元素后,导致这一个 json 元素后的 movable-view 定位出现问题。
A:你好,这种情况是因为你没有在wx:for的节点中指定wx:key。请尝试一下指定有效的wx:key。

Q:小程序支持多语言国际化吗?
A:你好,目前尚未添加对国际化的支持。

微信小程序常见FAQ(17.6.26-17.7.2)

Q:tab大小不生效,明明设置了4,格式化的为2?
A:谢谢你的反馈,我们下版本会修复。

Q:微信小程序button能否以图片为背景?
A:可以使用label绑定button组件进行样式的修改。

Q:小程序获取微信用户头像url 不是https。
A:这个问题已经在list中了,会尽快解决。
开发者可以先直接替换连接中http => https 来完成功能先。

Q:js 里不支持直接写根路径(根目录)么?
A:你好,暂时不支持绝对路径的引用。
这个需求已记录。谢谢反馈。

Q:在使用 playBackgroundAudio 播放音频时,音频请求的时间越长,会导致 setData 后页面 render 的卡顿越明显。
A:已知问题,下个正式版本会修复。

Q:canvas中ctx.arc()方法中的前两个参数如何加'rpx'单位?
A:可以自行将px转成rpx
1px = 750 / screenWidth rpx

Q:调用腾讯云的小程序会话管理服务login接口,一直提示“鉴权服务调用失败:#1007 - $WEIXIN_RETURN_ERR”,请问怎么回事?
A:这个是腾讯后端返回的错误结果,腾讯云后端应该有在解决
应该是express_in这个参数引起的。

Q:一个AppId能同时上线多个小程序么?
A:不能,只能上线一个小程序。

Q:picker时间粒度为year,选择后点确定,微信直接崩溃。
A:这是客户端上的问题,已经修复,需要等待客户端更新。

微信小程序常见FAQ(17.6.19-17.6.25)

Q:wx.getLocation拒绝授权后,如何重新开启询问是否授权?
A:使用wx.openSetting 引导用户重新打开授权。

Q:wx.navigateTo 无法跳转某个页面?跳转search 页面无效,且跳转其他页面也没有问题, 将页面改成其他字母就行,例如searcher?这是bug吗??
A:请调用api的fail回调。

Q:小程序navigator的url里面能引入第三方链接吗?
A:不能。

Q:getUserInfo获取的用户信息不会更新么?
A:延时是4小时。

Q:wx.startRecord 录音成功后,能否返回录音的时长和音频文件大小?
A:下个版本会更新录音的API会提供文件信息。

Q:没有网络的环境下就不让用开发者工具?
A:目前没有网络是无法使用小程序开发者工具的
因为项目属性和大部分开放的api都是需要做网络获取数据的。

微信小程序常见FAQ(17.6.12-17.6.18)

Q:scroll-view 标签 设置 scroll-y="true"时,bindtouchmove="touchMove", 上下滑动时 不执行 touchMove 方法。
A:感谢反馈。请考虑将touch事件绑定放到scroll-view内部。

Q:页面多个textarea时部分组件随机性地不显示文本的bug。
A:你描述的情况应该是 textarea设置了autoheight,并且内容超过了屏幕长度,因为Android上textarea的滚动事件没处理好,无法滚动使超出屏幕的内容可见,会在近期的版本修复。

Q:wx.navigateTo提示没有权限,无法跳转,之前ok的代码突然报错。
A:开发者工具服务有抖动,部分小程序会获取不到接口权限。
目前已经修复,感谢反馈。

Q:downloadFile和openDocument能否支持data url?
A:目前是不支持的。

微信小程序常见FAQ(17.6.5-17.6.11)

Q:请问小程序与开放平台Oatuth接口能共用吗?
A:不能,小程序没有oauth接口。

Q:在加载完成小程序之后,小程序能否完全不使用外网而在局域网中访问内网链接?
A:小程序不关心域名是局域网内还是局域网外的,只要这个域名是安全域名 而且你的设备能访问到即可。

Q:app.js 里的 wx.redirectTo 有时不执行
A:在移动设备上,在app.js中调用 wx.redirectTo 是有可能失败的。
建议目前不要在app.js中执行相关的方法。

Q:bug ide 新建page 自动app.json添加的行是绝对路径 会编译错误 还要手工去掉斜杠。
A:收到谢谢,下个版本会修复这个问题。

Q:小程序可使用手机NFC功能吗?
A:目前还没有 NFC 相关的规划。
后续看需求情况,决定是否增加。

Q:iphone 点击右上角分享按钮后,任意操作都会造成微信闪退。
A:iOS8有这个问题,下个版本会解决。

Q:小程序无法实现录音的同时播放伴奏?
A:目前不支持,后续版本支持。

Q:scroll-view能否增加列表重用机制解决列表很多时崩溃现象?
A:已经有计划。

Q:小程序的数据分析只能管理员才能看吗?
A:小程序后台目前仅管理员扫码登录,后续会支持其他角色登录查看数据;
小程序数据助手支持管理员或管理员授权的其他微信用户查看数据。可以支持你的需求。
具体参见:https://mp.weixin.qq.com/debug/wxadoc/analysis/assistant/

Q:附近的小程序,门店一定是是资质注册地吗?不能是经营地?
A:如果经营地址与资质注册地不一致,请提供小程序注册主体资质以及异地经营的说明材料(如租赁合同)。多个门店需要选择相关主体,并提供不同门店位置的说明材料(资质)以及相关关系说明,适用于连锁公司。

Q:企业申请小程序账号,小程序的服务类目可以超出企业营业执照上写的经营范围吗?
A:小程序的服务类目和营业资质的营业范围无关,如果是选择涉及资质的类目,只要可以提供相关资质就可以了。

微信小程序常见FAQ(17.5.29-17.6.4)

Q:app.json 文件删除一行之后关闭,就会显示为空白文档。
A:谢谢反馈,这是 bug,下版本会修复。

Q:预览前上传扫二维码之后提交提示"未为绑定为第三方平台的开发小程序"?
A:请确认 tabbar 的icon的大小是不是超过 40kb了。

Q:prepay_id 发送模板消息提示 invalid form id hint
A:如果你是支付场景,一定要用手机小程序支付,才有效的,开放工具上扫码支付是无效的。

Q:开发者工具0.17.172600,使用Page的新建功能,会出现如下提示,检查app.json发现生成的目录为:"/pages/logs/index",正确的应该是"pages/logs/index"。
A:收到 下个版本会修复这个问题。

Q:系统错误,错误代码:-80063,错误信息:undefined,
A:是因为tabbar的 icon 大小超过了40kb导致,
下个版本工具会给出友好的提示。

Q:开发者工具建议加上CTRL+TAB 快捷键切换文件修改。
A:收到建议 下个版本会加上该功能。

Q:您好,可以开通获取手机通讯录的API吗?
A:目前不支持获取手机通讯录。

Q:小程序需要用到openid,但是用的时间太长了,最长时间用了近20秒……
A:1.我们监控没有查到改接口获取数据缓慢
2.请不要再客户端调用api.weixin.qq.com相关的API , 这个接口应该是在服务端来调用的。

微信小程序常见FAQ(17.5.22-17.5.28)

Q:如何在事件中取消对Slider的滑动修改?
A:感谢反馈。对于小程序的所有组件,因为事件回调是异步执行的,所以做不到“取消变更”之类的行为。你可以在bindchange中将非法值设为合法值,这样来实现你的需求。

Q:getBackgroundAudioManager onEnded没反应?
A:所有 onXXX 接口都是接收一个 Function 类型的参数 callback,在事件发生时会调用 callback:
backgroundAudioManager.onEnded = (function(){
// 这里处理 onEnded
})

Q:我用npm install 下载的第三方库文件夹中不能再小程序开发工具中显示,什么原因?
A:小程序不支持直接引入node_modules 所以编辑器中不会显示这个目录
同时这个目录中的文件也不会被编译到小程序的代码包中。

Q:downloadFile的文件大小能否设置?
A:这个是无法设置的。

Q:最新的开发工具找不到“移动调试”?
A:目前不支持移动调试的功能。

Q:小程序如何检查GPS是否开启?如何调转到GPS设置页?
A:目前不支持检查和跳转到GPS设置页。

Q:wx.uploadFile,fail返回500已配置uploadFile合法域名。
A:500是服务器错误,
请查服务器原因。

Q:微信小程序加载信息超时 (-1,-1,-1)怎么解决?
A:这个是android手机客户端的一个bug 目前正在修复中。

Q:在开发者工具从首页进内页左上角有返回按钮,真机测试却直接是关闭按钮。
A:android 的有物理返回键。

Q:涉及社交,通不过审核。
A:你好,该小程序建群、发布任务,回复等内容有明显的社交属性,需选择社交类目。

微信小程序常见FAQ(17.5.15-17.5.21)

Q:对WXML进行格式化代码时遇到小于号会出现格式错误。
A:谢谢你的反馈,我们后续会修复这个问题。

Q:为什么wx.getShareInfo(OBJECT)无法获取群名称?
A:群名的开放涉及到隐私问题,推出之后受到了质疑。
所以我们对小程序群相关能力进行调整,开发者可先使用wx.getShareInfo接口中的群ID进行功能开发。

Q:input调用系统身份证号码键盘时,在iOS与Android下键盘X键表现不一致,iOS下X返回大写字母,Android下X返回小写字母。
A:已知问题。已发版本修复了。

Q:wx.uploadFile上传视频报错415是什么错误?
A:415 是你服务器的网络错误码。

Q:wx.chooseLocation()安卓无法获取第一个默认选中的地址?
A:谢谢你的反馈,我们后续会修复。

Q:小程序可以用安卓的api来自动调整手机屏幕的亮度吗?
A:即将开放相应的api。

Q:服务站点大于10个以上,怎么解决附近的小程序?
A:http://kf.qq.com/faq/170401MbUnim17040122m2qY.html,请查看文档。

微信小程序常见FAQ(17.5.8-17.5.14)

**Q:小程序发布新版本,老用户本地缓存会被清理掉? **
A:不会被清理掉。

Q:公众号绑定小程序后,小程序能否跳转到公众号其中的一个页面?
A:暂时不支持。

Q:刚更新了0.17.170800 mac. 现在预览项目时,如果勾选上‘开启代码压缩上传’. 部分页面会出现样式错误. 关闭就好了.
** 是因为新增的‘wxss文件代码压缩功能’ bug吗?**
A:这是一个bug
我们尽快修复,
原因是因为压缩 wxss 文件导致 @import 进来的文件丢失了。

Q:模拟鼠标消失?
A:这是显卡问题。
如有需要,请打开控制面板->鼠标->指针与轨迹
开启鼠标轨迹,就可以显示了。

Q:即使给组件设置了hover="false",与此同时另外设置了hover-class时,false是不生效的,正确的不应该是false时,hover-class不生效么?
A:抱歉,确认了下 hover 这个属性已废弃,文档未更新。
请使用hover-class="none" 来取消点击态。

Q:checkbox事件后仍有可能触发handleSwiper?
A:是的。这是因为JS运行于一个独立线程。从在JS中使用setData设置current值,到current值被应用到swiper,会有一小段时差。这段时间内,swiper仍可能触发change事件。

Q:刷新和地址栏下拉都没效果呢刷新和地址栏下拉都没效果呢刷新和地址栏下拉都没效果呢。
A:这是一个bug,下个版本修复。

Q:新建的模块,js模板的方法都重复。
A:谢谢你的反馈,这是已知 bug,我们下版本会修正。

Q:个别安卓真机利用wx.getSystemInfo获取不到SDKVersion。
A:当前 Android 客户端存在一个 bug,确实有概率出现微信是新版,但是基础库版本较旧,下个线上版本会修复这个问题。在此之前确实只能通过重装微信解决。

Q:点击pdf进行下载,但是提示的是 downloadFile:fail wxceed max file size .
wx.downloadFile 限制的文件大小是多少呢?
A:10M

Q:小程序是否能支持iFrame嵌套?
A:不支持。

Q:ble 启动notify错误代码10007是什么错误?
A:10007 property not support 当前特征值不支持此操作。

微信小程序常见FAQ(17.5.1-17.5.7)

Q:既然每个页都有一些基础固定的文件和格式,开发者工具如果提供一个命令行,可以一键快捷建页工具就好了,例如命令行下输入 wx page pagename1 或者集成到开发者工具 新建选项里。
A:谢谢反馈,下个版本会加上的。

Q:调试工具和手机调用getSystemInfo获取的screenHeight不一样。
A:这是一个没有对齐的bug
下个版本工具会解决。

Q:微信开发者工具有没有意向添加分栏编辑功能,像其他编辑器那样可以同时显示编辑两个文件?
A:收到建议 后续会添加这个功能。

Q:安卓微信内测版6.5.8,wx.reLaunch 可返回,无法继续点击,报错。
A:已知问题,近期版本会修复。

Q:场景值在开发者工具和手机上获取的类型不同。
A:谢谢反馈 下个版本会修复。

Q:微信小程序 无法获取response header
A:下个版本开始会支持。

Q:多名开发者开发一个微信小程序如何如何实现代码共享。
A:请使用svn 或者 git 等代码管理工具。

Q:应该添加一个保存全部页面的快捷键。
A:下个版本会支持保存全部文件。

Q:为什么图片只在本地调试的时候显示,手机预览和发布后 图片都不显示了?
A:假如是背景图片的话,是因为不能使用本地路径;
假如不是背景图片的话,可能跟你设置了反盗链有关系;

Q:form表单提交后怎样清空数据?
A:用两个按钮,或者将表单数据绑定到this.data中,通过清空data的数据来达到清空表单的目的。

Q:小程序服务器是否会存储小程序应用的数据?
A:是不会储存的。

微信小程序常见FAQ(17.4.24-17.4.30)

Q:小程序与小程序之间可不可跳转?
A:暂时不支持。

Q:图片服务器需要对小程序的refer放开限制,这是什么意思?
A:有些服务器为了防盗链会去检查请求的 referer。
小程序的 referer 是 https://servicewechat.com
所以需要服务器放过这个 referer

Q:模板消息 form input的value值color 真机测试不起作用。
A:在 input 是 disabled 的情况下 color 在客户端是不会生效的,会被默认配置所覆盖,但这个可以通过通过设置 -webkit-text-fill-color 来解决,如下:
-webkit-text-fill-color: red;

Q:小程序开发版本能正常访问网络,但是体验版本,则不能访问网络请求。
A:一般可能是如下情况:
a:域名不是HTTPS
b:域名带有端口
c:域名没有备案
d:域名https有问题
e:公众后台没有配置相应域名
f:TLS版本不足1.2

Q:安卓机中使用wx.relaunch跳转界面后,依然可以按系统自带的返回键返回到上一页。
(如果按照relaunch关闭所有页面的逻辑,此时应该是不能返回的,而是直接退出小程序才合理)
** 返回到上一页、再次调用relaunch,会报错 navigateBack with an unexist webviewId**
A:非常感谢,你的反馈已记录,之后会修复。

Q:怎么修改右上角的分享按钮的内容?
A:暂时还不支持。

Q:不能接入新浪云吗?applinzi.com 和 xxx.applinzi.com都不行,因为违规被禁止设置,这个要怎么办?
A:请在微信客户端打开该域名进行申述。

微信小程序常见FAQ

Q:是否支持视频直播或音频直播,如HLS?
A:我们正在技术上正不断完善,很快将提供支持。

Q:能否从小程序中打开普通的网页链接 ,比如我要链到我们的客服页面?
A:暂时不支持。

Q:没收到内测邀请,能给我们发个邀请码吗?
A:小程序很快将开放申请,请留意官方公告。

Q:请问下小程序有计划支持二维码扫描吗?迫切需要这一功能,希望能尽快提供接口支持,谢谢
A:暂时不支持,后续会逐步完善。

Q:开发工具不支持linux环境以及windows 2003或XP系统吗?
A:是的,目前不支持

Q:请问微信小程序的组件中有没有多行文本的组件?
A:6.3.30 已支持 textarea 组件。

Q:getUserInfo接口获取不到unionid该怎么办?
A:需要到open.weixin.qq.com网站上,绑定小程序和你的其他公众号或app,才会返回unionid。

Q:安装了小程序调试工具(wechat_web_devtools_0.9.092300_x64.exe)后,把原来的开发者调试工具覆盖了?没法做到两个工具兼容?直接覆盖?
A:请升级到最新的开发者工具版本,已经兼容普通网页调试和小程序调试。

Q:我在wxss文件里编写css3动画,点击编译直接就报错了,编译不通过。
A:Css3 的更多特性,我们正在陆续支持中。目前部分功能支持不足,如animation动画。

Q:小程序路由/info?appId=1,通过wb.navigateTo 跳转页面后。如何在新的页面中拿到appId的值?我看文档中没有描述。
A:可以通过 Page 的 onLoad 事件拿到,可以参考navigator组件

Q:微信小程序支持和硬件的交互吗? 比如和硬件通过蓝牙或者wifi的方式进行数据通信?
A:我们正在规划中,目前暂不支持

Q:wx.setStorage(OBJECT) 小程序存储的容量有多大限制?
A:目前每个小程序限制5M

Q:目前提供的canvas绘图接口,我们发现不能跟网页原生api兼容,所以也就无法使用现有的绘图库了是吗?
A:是的。

Q:在微信小程序的canvas相关api中,发现缺少将canvas转换成图片的相关api接口。如drawImage系列接口。
A:6.3.30 已支持 wx.canvasToTemFilePath 用于将 canvas 转成图片临时文件路径。

Q:下载下来的zip文件如何解压缩,是否有相关api?
A:目前暂不支持,我们将很快提供。

Q:我想问一下,在小程序里面怎么进行组件化开发?我在文档中看到了template,但是个人来看只能绑定数据。如果我想绑定事件,类似component该怎么办?还是在小程序里有其他办法实现组件化?
A:目前暂不支持,我们很快将提供自定义组件。

Q:最近在看微信的小程序开发,有个顶部tab需求,查看文档没有发现此组件,看到设计规范上有,请问在哪里可以看到。
A:6.3.30 已支持在 tabBar 设置 position 参数。

Q:请问微信公众号开发功能除了调用微信提供的API之外,可以调用自己写的api接口或者服务吗?
A:可以使用request接口请求自己的服务器api。

Q:您好,在小程序的api 中是否有获取图片原始宽高的接口?具体需求场景:在canvas 中实现对wx.chooseImage后的图片进行一定比例的放缩功能。
A:6.3.30 已支持,image 组件的 bindload 事件可以返回图片的原始宽高。

Q:开发者工具如何录音,录音完成是什么格式呢?
A:暂不支持模拟录音,手机上录音目前是silk格式。

Q:请问小程序能引用外部的图表库吗,比如ECharts?
A:暂不支持。

Q:WXML中"Mustache"语法(双大括号)来绑定数据,
例如:
** ****{{**

message }}

Page({
data: {
message: "Hello MINA!"
}
})
** 如果message是一段HTML文本,能不能绑定?应该怎么绑定?**
A:目前不支持绑定HTML代码。

Q:代码里面可以用一些工具库吗?比如像 lodash这种工具库,我觉得可以用的话是比较方便的,比如可以通过 npm install 这种方式来安装第三方的工具库。
A:目前暂不支持。

Q:小程序开发时能否使用我们自定义的字体图标。A:自定义字体是支持的,但是需要使用线上字体,并且存放字体的服务器需要允许跨域。

Q:在小程序中如何将富文本内容显示出来,我已经在小程序中加入了div和样式做了测试发现样式都无效?
A:目前暂不支持。

Q:小程序是否开放用户手机通讯录的读取/写入权限?
A:目前暂不支持

Q:好像无法通过js获取图片宽和高,请问有解决方案吗?
A:目前只能显示设置图片宽高

Q:iPad好像无法预览小程序?
A:目前暂不支持iPad。

Q:微信小程序有拨打电话和发送email的方法吗?
A:可以拨打电话,暂不支持发送email

Q:我在一台机器上同时开发微信小程序和服务器程序,请问微信小程序在开发时怎么访问我本机的服务器呢?用localhost还是开发机器的IP地址?
A:目前服务器必须使用域名,不支持本地调试。

Q:我在文档中,没看到如何修改右上角三个点操作区按钮的方法。
A:这里不支持自定义,统一显示官方按钮。

Q:我这在布局的时候用到了rpx单位,在安卓手机(小米4)下真机预览的时候750rpx并显示全屏,经过测试发现在安卓手机(小米4)下850rpx 才能显示全屏; 但文档里面写道:规定屏幕宽为750rpx;是不是意味着开发者需要适配不一样的手机(不一样的手机设置不一样的rpx值)?
A:我们会持续优化rpx,兼容大部分主流机型。不需要开发者做适配。

Q:文章中的image,如果想单击后浏览图片,可以放大缩小之类,有没有相关接口?
A:可以使用图片预览接口。

Q:我在使用贵方提供的canvas组件时,并没有找到一个可以保存画布信息的接口。
A:暂不支持,我们会很快支持。

Q:滚动页面,滚动到底部,加载新的内容不能实现。
A:6.3.30 已支持页面配置 onReachBottom 事件。

Q:如果是支付给子商户,调用接口跟之前web开发的用法是一样的还是怎么做?
A:目前暂不支持支付给子商户。

Q:请问小程序里支持把文字、图片、链接转发到IM给好友、朋友圈吗,API文档里没写。
A:分享能力会很快提供,请留意官方文档。

Q:请问微信小应用除了自带的api接口, 是否支持其他的外部api或js插件的加载?
A:目前暂不支持。

Q:我调用小程序的微信支付api,一直报签名验证错误,参与签名的参数有timeStamp、nonceStr、package、signType。使用微信支付签名校验工具生成的签名跟我自己服务器生成的签名是一样的,但还是报签名错误。
A:appId不需要传入支付api,但是需要参与签名。

Q:想请教checkbox是否只能通过checkbox-group绑定事件。
A:heckbox不会触发change事件, checkbox-group才会触发。

Q:我们在微信开发工具,选择图片后,尝试上传或下载图片 都没有任何反应,请问是什么原因?
A:最新版本的开发工具已经支持 uploadFile 和 downloadFile 的调试。

2017-09-05 11:30:17 rolan1993 阅读数 4231

给提问的开发者的建议:
提问之前先查询 文档、通过社区右上角搜索搜索已经存在的问题。 写一个简明扼要的标题,并且正文描述清楚你的问题。 提交 BUG:需要带上基础库版本号,设备信息(iOS, Android,开发工具等等),操作系统信息(系统版本),以及可以让他人重现的信息,最好能够提供重现 demo. 对于提供信息过少的问题,会直接关闭,请提供完整信息以后重新打开问题。
另外,对于如何做某某功能,可否做某某功能的问题,会直接关闭。


微信小程序常见FAQ(17.8.21-17.8.27)

Q:1.5版本基础库的小程序出现了image bindload事件响应两次的问题。
A:你好,感谢反馈,我们会尽快进行修复,敬请关注。

Q:地图里marker的callout在android机型上变成一个黑色块。
A:你好,这是一个已知问题,安卓下默认背景为黑色,我们会在后续版本中进行修复,敬请关注。你可以先手动设置bgColor为白色。

Q:新版微信开发者工具,tabBar选中字体颜色不对。
A:收到,我们会在今天的更新中修复这个问题、

Q:swiper 第一张图片不显示。
A:你好,感谢反馈,我们正在定位问题,会在后续版本中进行修复,敬请关注。

Q:ios中下拉刷新会触发上拉加载,下拉刷新时加个状态值还是会触发。
A:你好,这是一个已知问题,页面太短的时候会导致下拉刷新时同时触发上拉加载,我们会在后续版本中进行改善,敬请关注。

Q:基础库版本1.5.0,调试时,当前页面的AppData错误,很多data为空,进入下一页面,前一页面的数据才有。
A:你好,这是一个已知问题,我们会尽快进行修复。

Q:IOS微信6.5.14版本toast和loading某些特定字数出现省略号。
A:你好,这是一个已知问题,我们会在后续版本中进行修复,敬请关注。

Q:微信更新到6.5.13后 小程序调用蓝牙接口报错 10011
A:10011是没有打开gps定位导致的。

Q:一个手机打开小程序无法搜索出另外在周围打开的蓝牙的手机,无论是安卓或者iOS,一直搜索不出来。
A:我们提供的是低功耗蓝牙接口,不支持经典蓝牙。

Q:小程序UI布局错乱。
A:你好,在新版本中我们已经尝试进行了修复,但是修改涉及代码编译过程。小程序可能需要重新发版后修复才能生效。

Q:新版SDK是不是更改了 binderror 触发的时机,记得之前 image 组件 src 属性值为空的 时候,不触发binderror,现在为空好像会触发binderror
A:你好,感谢反馈,预计1.5.3会修复。

微信小程序常见FAQ(17.8.14-17.8.20)

Q:直播小程序目前应选择什么服务类目?
A:你好,目前小程序平台已关闭直播类目,暂时无法支持直播类小程序接入。

Q:swiper点击指示点切换是需要自己实现吗?
A:你好,点击指示点切换的功能现已移除。因为手机上面较难点击指示点,容易误点。

Q:怎么在标题导航上添加点击事件?
A:你好,目前暂不支持此功能。

Q:三星手机上传的图片,被旋转了90°
A:你好,这是一个已知问题,我们会在后续版本中进行修复,敬请关注。

Q:wx.getUserInfo获取到encryptedData不能在小程序直接解密?
A:只能在服务端解密。

Q:小程序页面高度变大bug
A:已知,应该是偶现。目前也没有可以规避的方法。

Q:wx.getUserInfo 在获取用户授权的时候,关闭屏幕的bug
A:已知问题,在6.5.13带上了修复。

Q:action sheet 字体颜色设置无效。
A:你好 iOS 只允许设置某一项为红色,Android 不允许自定义颜色 。文档中没有说清楚,我们会进行补充。

微信小程序常见FAQ(17.8.7-17.8.13)

Q:测试帐号通道未开通,如何提交测试帐号?
A:建议将小程序的完整体验流程记录在网盘,然后将网盘链接和账号提供到版本描述中。

Q:onShareAppMessage,分享个人shareTickets问题
** 发现安卓分享个人和群聊都有shareTickets属性值,而IOS分享给个人没有该字段。**
A:只有转发到群聊中打开才可以获取到 shareTickets 返回值,单聊没有 shareTickets。之前由于实现问题安卓给个人会返回无效的ticket,请忽略。

Q:video在安卓和开发工具都能看 ios上面就不行?
A:请检查是否因为网站未备案,无法访问。

Q:为什么从分享到群里的卡片进入小程序,再点击导航栏的首页图标进入首页后,每次点击tabbar都会触发onLoad,正常情况不是点击tabbar后,再点击tabbar,是不触发onLoad的吗?
A:你好,感谢反馈,是我们的bug,会在后续版本中进行修复,敬请关注。

Q:wx.navigateTo在安卓手机上不显示返回。
A:你好,安卓系统上使用手机返回键返回,iOS上使用左上角返回按钮返回。针对不同平台用户的使用习惯差异我们会保留。

Q:小程序安卓版蓝牙发送数据后无法关闭连接。
A:安卓系统上存在允许应用对设备持有多份链接实例,因此 “closeBLEConnection接口并没有真正断开与蓝牙设备的连接” 的原因是之前对单个设备做了多次的 createBLEConnection 操作,请尽量保证 create 和 close 成对调用

Q:Page.prototype.setData 频繁。
A:你好,我们已经注意到这个问题,后续会对warning的时机进行优化。感谢反馈。

Q:wx.opensetting bug。res.authSetting 中不管设置什么,弹窗都是用户信息。
A:openSetting功能是调起客户端小程序设置界面,返回用户设置的操作结果,authSetting 不能赋值。

Q:蓝牙搜索得到相同的两个变量。
A:建议用deviceid做去重,iOS系统对于有自定义LocalName字段的设备,可能会上报两次 onDeviceFound

Q:textarea 显示严重bug 苹果设备显示问题。
A:你好,这是一个已知问题,iOS下textarea会有哦默认的内边距。我们会在后续版本中进行修复,敬请关注。

Q:点击小程序右上角的首页(房子)键整个微信闪退。
A:你好,这个问题是 6.5.12 iOS微信引入的问题,有两种解决方案
1、升级微信至 6.5.13
2、导致闪退的原因是在首页的onLoad或onShow上有执行页面跳转的函数(redirectTo、relaunch) ,尝试用 setTimeout 的方法延迟 200ms调用,可以避免这个问题。

Q:swiper里加了bindchange事件,有很多个swiper-item,连续快速切换swiper-item触发bindchange事件,小程序会出现一直无限触发bindchange事件。
A:请不要在change事件中使用setData改变current值。

Q:我的层级是这样:map里嵌套cover-view,cover-view中有一navigator,在电脑测试时跳转正常,但是移到真机上就没有任何反应。
A:你好,cover-view内只能使用cover-* 组件

Q:安卓wx.request导致request:fail:interrupted
A:你好,之前修复的时候漏了部分情况,会在下个安卓版本中解决。

Q:关于网络请求异步访问与 let 报错。
A:使用工具提供的ES6转ES5功能,否则旧版本的系统会不认识这些关键字的。网络请求目前没有同步版本。

微信小程序常见FAQ(17.7.31-17.8.6)

Q:小程序缓存机制是怎么样的?
A:小程序发版,客户端先用之前的包打开,异步更新好。下次重新打开才是用新包。7天之内不使用的小程序会被强制更新一次。

Q:setData方法是有react那样的虚拟dom优化吗?
A:有做虚拟DOM的优化,但设置相同数据还是会触发新渲染的。

Q:关于iOS分享之后的打开首页之后崩溃。
A:你好,已知问题,会在下个版本iOS微信中修复。在onShow或onLoad等中切换页面会导致此问题,目前可以尝试采用延时0.3秒以上进 行暂时规避。

Q:小程序支持FTP协议吗?
A:你好,目前不支持FTP。

Q:地图上设置Marker经纬度时使用的是哪种坐标系?
A:gcj02 火星坐标系。

Q:保存图片到手机saveImageToPhotosAlbum()错误。
A:你好,现在saveImageToPhotosAlbum还不支持保存代码包内的文件,我们会考虑在后续版本中增加支持。

Q:小程序发布后,是否可以回退到上一个版本。
A:你好,版本回退功能已发布,欢迎使用和反馈意见。

Q:什么时候小程序后台可以支持多人登陆?
A:已经开发中了,我们争取早日上线。

Q:winphone端的微信里面支持小程序吗?
A:不支持。

Q:image组件是延迟加载的吗?
A:目前不是,后续会支持lazyLoad功能。

Q:新版开发者工具,开发网页时,如何使用 ios 和 android调试呢?
A:目前不支持 iOS Android真机调试。后续支持。

微信小程序常见FAQ(17.7.24-17.7.30)

Q:置顶后,按HOME键,小程序真的能在后台获取位置信息并上传到服务器吗?
A:系统限制,微信切入后台后目前无法继续获取地理位置。

Q:tabBar是在app.josn中设置的,但是现在我打算加入多语言功能,希望tabBar中的text可以根据多语言设置自动切换为对应的语言文字。
A:你好,目前暂不支持此功能。有需求的话可以自己实现一个tabBar

Q:能否增加自动获取开发环境参数的接口。
** 1、代码能自动获取到appid;**
** 2、代码能自动获取到 开发版 体验版 对外发布版 等参数。**

A:你好,你的反馈我们已收到,我们会在后续的版本中考虑增加类似功能。

Q:encryptedData的意义?
A:1、unionid只有在某些情况下才可以在login阶段和openid一起获取
2、为了安全性。因为前端甚至整个微信都有可能被坏人劫持,坏人可能会传回来一个假的userInfo,但是encryptedData坏人是没办法造假的,因为用于加密和解密的sessionKey只在微信后端和开发者后端传递。所以encryptedData可以用于防止这种情况出现

Q:知乎可以获取微信号关联的手机号的问题。
A:1、小程序确实有部分接口,会邀请个别开发者参与早期测试,以帮助发现问题,逐步完善方案。
2、为方便调试和验证,我们一般会综合考量开发团队的技术实力和产品影响力,特别是与接口功能的契合度。这阶段参与者的数量不会很多,时间也会有不确定性。
3、待接口形态确定后,我们会第一时间制定开放规则,并在文档和公告中周知大家。故尚未看到该能力介绍的开发者,可以耐心等待官方文档的更新。

Q:wx.showToast中image使用gif不正常。
A:showToast 不支持使用gif

Q:一组list图片渲染,怎么去掉元素默认的间距?
A:设置 image的样式为display: block试试。

Q:小程序蓝牙是否还是只支持蓝牙4.0?
A:是的。

Q:onShareAppMessage转发title可以调字体吗?
A:你好,目前暂不支持此功能。

Q:能否在【自定义编译】对话框中加一个可以按钮,可以自动赋值当前场景、页面路径、页面参数呢?
A:已经在list中了,后续版本会添加这个功能。

**
微信小程序常见FAQ(17.7.17-17.7.23)

Q:小程序能否获取本机的蓝牙deviceId相关信息?
A:没有提供类似接口。
从系统能力来说,iOS系统没有提供获取本机蓝牙Mac地址的api,有个方法是可以让外设蓝牙设备来获取已连接的手机蓝牙Mac地址,但是目前 发现有些iOS手机重启后蓝牙Mac地址会改变。

Q:真机wx.captureScreen(OBJECT)截图后缀名为unknown,造成截图后无法保存。
A:你好,这是一个已知bug,我们会尽快进行修复。

Q:真机测试时总是弹出层弹出被Map遮挡。
A:map组件层级最高,目前的确会出现这种情况。后续版本中我们会考虑进行优化。

Q:开发者工具上的样式和真机测试的样式不一样?
A:渲染的问题需要开发者自行解决,工具无法保证三端渲染的统一
https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/details.html

Q:wx.getBackgroundAudioManager() onStop无效。
A:播放结束触发onEnded,手动stop才会触发onStop。

Q:检测picker组件兼容不支持
A:你好,感谢反馈,我们会尽快修复。

Q:picker-view开发者工具可以正常显示,但是真机下就无法显示。不知道是不是跟用了cover-view有关呢?
A:cover-view只能用在原生组件map、video、canvas内。

Q:用户打开小程序后再扫码进入获取不到二维码参数。
A:你好,这是一个已知bug,我们会尽快进行修复。

Q:文件下载 支持暂停继续下载吗?
A:目前不支持断点续传,后续会考虑增加。

Q:微信小程序 如何监听页面左侧的返回按钮?
A:你好,目前暂不支持此功能。

Q:cover-view不会浮在原生组件之上。
A:你好,这是一个已知bug,我们会尽快进行修复。

Q:调用wx.relaunch报错:fail can not invoke relaunch in background。
A:reLaunch 在小程序进入后台不能调用。

Q:小程序现在支持识别图中二维码么?
A:你好,目前暂不支持此功能。

Q:小程序转发怎么获取是转发到了群还是个人?
A:你好,目前暂时无法区分。

Q:playbackgroundaudio 组件,第一次扫码无法正常播放,第二次正常,我是摇动手机时触发,不是点击播放,如何处理?
A:你好,目前对播放功能有用户点击后才能播放的限制。后续版本中会考虑解除这个限制。

微信小程序常见FAQ(17.7.10-17.7.16)

Q:通过接口 https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN 生成的小程序码,用户微信扫描小程序码进入,IOS
** 系统每次扫码都能跳到页面并执行onload事件;安卓系统第一次微信扫描进入是正常的,第二次就不进入onload事件了,这个时候怎么获取参 数?**
A:你好,这是一个已知bug,我们会尽快进行修复。

Q:ios端bug:从分享进入,点击右上角Home键,crash问题。
A:你好,现有版本可以使用setTimeout暂缓redirectTo进行规避。下一版本会修复这个问题。

Q:微信公众平台->自定义菜单->跳转小程序->小程序路径部分可否传参数给小程序。
A:你好,可以的。

Q:微信开发者工具,7/11更新后代码不能自动换行了。
A:不好意思给你带来困扰了,这是 bug,我们后续会修复。

Q:7-11 编辑器更新后,编辑器调试 wx.getBLEDeviceCharacteristics 报错。
A:你好,这是一个已知bug,我们会尽快进行修复。

Q:开发者工具,基础库1.4.0,地图bindtap事件不生效,catchtap可以。
A:你好,这是一个已知bug,我们会尽快进行修复。

Q:新增 API setNavigationBarColor 只能修改首页标题栏颜色,其他页不生效。
A:你好。目前可以尝试setTimeout等进行延迟调用,或者删除掉app.json里面的相关配置。

Q:如何动态设置导航栏的背景颜色?
A:使用 setNavigationBarColor 。动态修改样式可以用setData修改style或class

Q:第三方平台能有权限修改 授权小程序的 “扫普通链接二维码打开小程序” 配置吗?
A:你好,目前不支持进行修改。

Q:蓝牙开启discover后会找到两个同样的设备,连续触发了两次wx.onBluetoothDeviceFound,信息是一样的,请问是bug吗?
A:存在部分设备在iOS上触发两次发现回调的情况,广播数据会有所不同,可以通过UUID判重来过滤这种情况。

Q:rich-text 组件 "’" is not supported.
A:目前暂时只支持 & > < " '
后续会根据反馈情况来支持更多转义字符。

Q:1.开启蓝牙扫描后,用户手动关闭iOS蓝牙,这时出发了wx.onBluetoothAdapterStateChange,里面discorvery=true。
** 2.还有,当discover开启/关闭,不会触发wx.onBluetoothAdapterStateChange回调吗?**
A:1.开启蓝牙扫描后,用户手动关闭iOS蓝牙,这时出发了wx.onBluetoothAdapterStateChange,里面discorvery=true。
这里存在蓝牙关闭时扫描状态没有及时更新的情况,下版本fix
2.还有,当discover开启/关闭,不会触发wx.onBluetoothAdapterStateChange回调吗?
可以通过startBluetoothDevicesDiscovery 和 stopBluetoothDevicesDiscovery的回调 来判定 ,下版本也会和安卓平台一起对齐,会触发回调。

Q:加入appid 返回baseresponse errorcode -14。
A:你好,这是个已知的bug,请退出开发工具重新登录。

Q:用wx.playBackgroundAudio后台音乐播放iphone异常。
A:你好,iOS的playBackgroundAudio存在bug,我们会在后续版本中修复。

微信小程序常见FAQ(17.7.3-17.7.9)

Q:请问如何设置我点击上一页,下一页的时候能出现的是顶部,而不是当前页的位置,就是我从哪里点击的新的一页就会显示当前的位置,怎么让 他回到顶部呢?
A:如果使用了scroll-view,可以使用scrollIntoView,或者scrollTop属性来设置
我们在即将发布的版本也会提供api,可以移动到页面的某一位置。

Q:订阅号里的开发管理页面在哪,上传的小程序版本找不到了呢?
A:小程序和订阅号归属于不同的账号下,两者虽有绑定关系,但是小程序的版本管理要使用小程序的账号登录后进行操作,不能在订阅号的管理页面中进行。

Q:小程序如何去掉顶部导航栏的返回按钮?
A:无法去掉。

Q:组件 border-radius 样式属性,编辑器内预览圆角正常,实机预览时没有圆角。
A:video组件是native组件,仅支持有限的样式设置。组件在开发工具和手机上的底层实现有所差别,表现上有细微差异,最终效果请以手机展现为准。

Q:当input和fixed固定的布局重合的时候,input的提示语可以看见,点击固定布局上的按钮时,也能触发input,在手机上,对固定布局使用z-index,结果也一样。
A:input组件未被激活时可以被z-index覆盖。textarea是native组件,在z轴层级最高,不能覆盖。

Q:Android6.0无法注册notify=true的BLECharacter
A:这里有个bug,忽略这个错误继续尝试下后续步骤看看。

Q:三星S7使用调用蓝牙接口10008错误。
A:已知bug,会在后续版本中进行修复。目前请尝试忽略该错误继续进行后续步骤。当前版本中虽然会报错,但是notify已成功,不影响后续数据传输功能。

Q:当我请求接口,状态为403时,wx.request的fail回调没有触发。
A:4xx、5xx 等 response 的异常状态不会进入fail回调,请在success回调中检查statusCode。fail回调一般源于在url格式、参数类型检查、网络连接、域名解析、response编码问题等

Q:安卓手机升起键盘会后,小程序标题栏会消失。
A:6.5.10已修复。

Q:小程序转发回到主页按钮怎么设置?
A:你好,目前不支持对该按钮进行设置。

Q:wxml中如何输入尖括号?
A:你好,下一版本中text标签会增加对html转义字符支持,请关注小程序更新。

Q:使用 json 生成多个 movable-view, delete 某一个 json 元素后,导致这一个 json 元素后的 movable-view 定位出现问题。
A:你好,这种情况是因为你没有在wx:for的节点中指定wx:key。请尝试一下指定有效的wx:key。

Q:小程序支持多语言国际化吗?
A:你好,目前尚未添加对国际化的支持。

微信小程序常见FAQ(17.6.26-17.7.2)

Q:tab大小不生效,明明设置了4,格式化的为2?
A:谢谢你的反馈,我们下版本会修复。

Q:微信小程序button能否以图片为背景?
A:可以使用label绑定button组件进行样式的修改。

Q:小程序获取微信用户头像url 不是https。
A:这个问题已经在list中了,会尽快解决。
开发者可以先直接替换连接中http => https 来完成功能先。

Q:js 里不支持直接写根路径(根目录)么?
A:你好,暂时不支持绝对路径的引用。
这个需求已记录。谢谢反馈。

Q:在使用 playBackgroundAudio 播放音频时,音频请求的时间越长,会导致 setData 后页面 render 的卡顿越明显。
A:已知问题,下个正式版本会修复。

Q:canvas中ctx.arc()方法中的前两个参数如何加'rpx'单位?
A:可以自行将px转成rpx
1px = 750 / screenWidth rpx

Q:调用腾讯云的小程序会话管理服务login接口,一直提示“鉴权服务调用失败:#1007 - $WEIXIN_RETURN_ERR”,请问怎么回事?
A:这个是腾讯后端返回的错误结果,腾讯云后端应该有在解决
应该是express_in这个参数引起的。

Q:一个AppId能同时上线多个小程序么?
A:不能,只能上线一个小程序。

Q:picker时间粒度为year,选择后点确定,微信直接崩溃。
A:这是客户端上的问题,已经修复,需要等待客户端更新。

微信小程序常见FAQ(17.6.19-17.6.25)

Q:wx.getLocation拒绝授权后,如何重新开启询问是否授权?
A:使用wx.openSetting 引导用户重新打开授权。

Q:wx.navigateTo 无法跳转某个页面?跳转search 页面无效,且跳转其他页面也没有问题, 将页面改成其他字母就行,例如searcher?这是bug吗??
A:请调用api的fail回调。

Q:小程序navigator的url里面能引入第三方链接吗?
A:不能。

Q:getUserInfo获取的用户信息不会更新么?
A:延时是4小时。

Q:wx.startRecord 录音成功后,能否返回录音的时长和音频文件大小?
A:下个版本会更新录音的API会提供文件信息。

Q:没有网络的环境下就不让用开发者工具?
A:目前没有网络是无法使用小程序开发者工具的
因为项目属性和大部分开放的api都是需要做网络获取数据的。

微信小程序常见FAQ(17.6.12-17.6.18)

Q:scroll-view 标签 设置 scroll-y="true"时,bindtouchmove="touchMove", 上下滑动时 不执行 touchMove 方法。
A:感谢反馈。请考虑将touch事件绑定放到scroll-view内部。

Q:页面多个textarea时部分组件随机性地不显示文本的bug。
A:你描述的情况应该是 textarea设置了autoheight,并且内容超过了屏幕长度,因为Android上textarea的滚动事件没处理好,无法滚动使超出屏幕的内容可见,会在近期的版本修复。

Q:wx.navigateTo提示没有权限,无法跳转,之前ok的代码突然报错。
A:开发者工具服务有抖动,部分小程序会获取不到接口权限。
目前已经修复,感谢反馈。

Q:downloadFile和openDocument能否支持data url?
A:目前是不支持的。

微信小程序常见FAQ(17.6.5-17.6.11)

Q:请问小程序与开放平台Oatuth接口能共用吗?
A:不能,小程序没有oauth接口。

Q:在加载完成小程序之后,小程序能否完全不使用外网而在局域网中访问内网链接?
A:小程序不关心域名是局域网内还是局域网外的,只要这个域名是安全域名 而且你的设备能访问到即可。

Q:app.js 里的 wx.redirectTo 有时不执行
A:在移动设备上,在app.js中调用 wx.redirectTo 是有可能失败的。
建议目前不要在app.js中执行相关的方法。

Q:bug ide 新建page 自动app.json添加的行是绝对路径 会编译错误 还要手工去掉斜杠。
A:收到谢谢,下个版本会修复这个问题。

Q:小程序可使用手机NFC功能吗?
A:目前还没有 NFC 相关的规划。
后续看需求情况,决定是否增加。

Q:iphone 点击右上角分享按钮后,任意操作都会造成微信闪退。
A:iOS8有这个问题,下个版本会解决。

Q:小程序无法实现录音的同时播放伴奏?
A:目前不支持,后续版本支持。

Q:scroll-view能否增加列表重用机制解决列表很多时崩溃现象?
A:已经有计划。

Q:小程序的数据分析只能管理员才能看吗?
A:小程序后台目前仅管理员扫码登录,后续会支持其他角色登录查看数据;
小程序数据助手支持管理员或管理员授权的其他微信用户查看数据。可以支持你的需求。
具体参见:https://mp.weixin.qq.com/debug/wxadoc/analysis/assistant/

Q:附近的小程序,门店一定是是资质注册地吗?不能是经营地?
A:如果经营地址与资质注册地不一致,请提供小程序注册主体资质以及异地经营的说明材料(如租赁合同)。多个门店需要选择相关主体,并提供不同门店位置的说明材料(资质)以及相关关系说明,适用于连锁公司。

Q:企业申请小程序账号,小程序的服务类目可以超出企业营业执照上写的经营范围吗?
A:小程序的服务类目和营业资质的营业范围无关,如果是选择涉及资质的类目,只要可以提供相关资质就可以了。

微信小程序常见FAQ(17.5.29-17.6.4)

Q:app.json 文件删除一行之后关闭,就会显示为空白文档。
A:谢谢反馈,这是 bug,下版本会修复。

Q:预览前上传扫二维码之后提交提示"未为绑定为第三方平台的开发小程序"?
A:请确认 tabbar 的icon的大小是不是超过 40kb了。

Q:prepay_id 发送模板消息提示 invalid form id hint
A:如果你是支付场景,一定要用手机小程序支付,才有效的,开放工具上扫码支付是无效的。

Q:开发者工具0.17.172600,使用Page的新建功能,会出现如下提示,检查app.json发现生成的目录为:"/pages/logs/index",正确的应该是"pages/logs/index"。
A:收到 下个版本会修复这个问题。

Q:系统错误,错误代码:-80063,错误信息:undefined,
A:是因为tabbar的 icon 大小超过了40kb导致,
下个版本工具会给出友好的提示。

Q:开发者工具建议加上CTRL+TAB 快捷键切换文件修改。
A:收到建议 下个版本会加上该功能。

Q:您好,可以开通获取手机通讯录的API吗?
A:目前不支持获取手机通讯录。

Q:小程序需要用到openid,但是用的时间太长了,最长时间用了近20秒……
A:1.我们监控没有查到改接口获取数据缓慢
2.请不要再客户端调用api.weixin.qq.com相关的API , 这个接口应该是在服务端来调用的。

微信小程序常见FAQ(17.5.22-17.5.28)

Q:如何在事件中取消对Slider的滑动修改?
A:感谢反馈。对于小程序的所有组件,因为事件回调是异步执行的,所以做不到“取消变更”之类的行为。你可以在bindchange中将非法值设为合法值,这样来实现你的需求。

Q:getBackgroundAudioManager onEnded没反应?
A:所有 onXXX 接口都是接收一个 Function 类型的参数 callback,在事件发生时会调用 callback:
backgroundAudioManager.onEnded = (function(){
// 这里处理 onEnded
})

Q:我用npm install 下载的第三方库文件夹中不能再小程序开发工具中显示,什么原因?
A:小程序不支持直接引入node_modules 所以编辑器中不会显示这个目录
同时这个目录中的文件也不会被编译到小程序的代码包中。

Q:downloadFile的文件大小能否设置?
A:这个是无法设置的。

Q:最新的开发工具找不到“移动调试”?
A:目前不支持移动调试的功能。

Q:小程序如何检查GPS是否开启?如何调转到GPS设置页?
A:目前不支持检查和跳转到GPS设置页。

Q:wx.uploadFile,fail返回500已配置uploadFile合法域名。
A:500是服务器错误,
请查服务器原因。

Q:微信小程序加载信息超时 (-1,-1,-1)怎么解决?
A:这个是android手机客户端的一个bug 目前正在修复中。

Q:在开发者工具从首页进内页左上角有返回按钮,真机测试却直接是关闭按钮。
A:android 的有物理返回键。

Q:涉及社交,通不过审核。
A:你好,该小程序建群、发布任务,回复等内容有明显的社交属性,需选择社交类目。

微信小程序常见FAQ(17.5.15-17.5.21)

Q:对WXML进行格式化代码时遇到小于号会出现格式错误。
A:谢谢你的反馈,我们后续会修复这个问题。

Q:为什么wx.getShareInfo(OBJECT)无法获取群名称?
A:群名的开放涉及到隐私问题,推出之后受到了质疑。
所以我们对小程序群相关能力进行调整,开发者可先使用wx.getShareInfo接口中的群ID进行功能开发。

Q:input调用系统身份证号码键盘时,在iOS与Android下键盘X键表现不一致,iOS下X返回大写字母,Android下X返回小写字母。
A:已知问题。已发版本修复了。

Q:wx.uploadFile上传视频报错415是什么错误?
A:415 是你服务器的网络错误码。

Q:wx.chooseLocation()安卓无法获取第一个默认选中的地址?
A:谢谢你的反馈,我们后续会修复。

Q:小程序可以用安卓的api来自动调整手机屏幕的亮度吗?
A:即将开放相应的api。

Q:服务站点大于10个以上,怎么解决附近的小程序?
A:http://kf.qq.com/faq/170401MbUnim17040122m2qY.html,请查看文档。

微信小程序常见FAQ(17.5.8-17.5.14)

**Q:小程序发布新版本,老用户本地缓存会被清理掉? **
A:不会被清理掉。

Q:公众号绑定小程序后,小程序能否跳转到公众号其中的一个页面?
A:暂时不支持。

Q:刚更新了0.17.170800 mac. 现在预览项目时,如果勾选上‘开启代码压缩上传’. 部分页面会出现样式错误. 关闭就好了.
** 是因为新增的‘wxss文件代码压缩功能’ bug吗?**
A:这是一个bug
我们尽快修复,
原因是因为压缩 wxss 文件导致 @import 进来的文件丢失了。

Q:模拟鼠标消失?
A:这是显卡问题。
如有需要,请打开控制面板->鼠标->指针与轨迹
开启鼠标轨迹,就可以显示了。

Q:即使给组件设置了hover="false",与此同时另外设置了hover-class时,false是不生效的,正确的不应该是false时,hover-class不生效么?
A:抱歉,确认了下 hover 这个属性已废弃,文档未更新。
请使用hover-class="none" 来取消点击态。

Q:checkbox事件后仍有可能触发handleSwiper?
A:是的。这是因为JS运行于一个独立线程。从在JS中使用setData设置current值,到current值被应用到swiper,会有一小段时差。这段时间内,swiper仍可能触发change事件。

Q:刷新和地址栏下拉都没效果呢刷新和地址栏下拉都没效果呢刷新和地址栏下拉都没效果呢。
A:这是一个bug,下个版本修复。

Q:新建的模块,js模板的方法都重复。
A:谢谢你的反馈,这是已知 bug,我们下版本会修正。

Q:个别安卓真机利用wx.getSystemInfo获取不到SDKVersion。
A:当前 Android 客户端存在一个 bug,确实有概率出现微信是新版,但是基础库版本较旧,下个线上版本会修复这个问题。在此之前确实只能通过重装微信解决。

Q:点击pdf进行下载,但是提示的是 downloadFile:fail wxceed max file size .
wx.downloadFile 限制的文件大小是多少呢?
A:10M

Q:小程序是否能支持iFrame嵌套?
A:不支持。

Q:ble 启动notify错误代码10007是什么错误?
A:10007 property not support 当前特征值不支持此操作。

微信小程序常见FAQ(17.5.1-17.5.7)

Q:既然每个页都有一些基础固定的文件和格式,开发者工具如果提供一个命令行,可以一键快捷建页工具就好了,例如命令行下输入 wx page pagename1 或者集成到开发者工具 新建选项里。
A:谢谢反馈,下个版本会加上的。

Q:调试工具和手机调用getSystemInfo获取的screenHeight不一样。
A:这是一个没有对齐的bug
下个版本工具会解决。

Q:微信开发者工具有没有意向添加分栏编辑功能,像其他编辑器那样可以同时显示编辑两个文件?
A:收到建议 后续会添加这个功能。

Q:安卓微信内测版6.5.8,wx.reLaunch 可返回,无法继续点击,报错。
A:已知问题,近期版本会修复。

Q:场景值在开发者工具和手机上获取的类型不同。
A:谢谢反馈 下个版本会修复。

Q:微信小程序 无法获取response header
A:下个版本开始会支持。

Q:多名开发者开发一个微信小程序如何如何实现代码共享。
A:请使用svn 或者 git 等代码管理工具。

Q:应该添加一个保存全部页面的快捷键。
A:下个版本会支持保存全部文件。

Q:为什么图片只在本地调试的时候显示,手机预览和发布后 图片都不显示了?
A:假如是背景图片的话,是因为不能使用本地路径;
假如不是背景图片的话,可能跟你设置了反盗链有关系;

Q:form表单提交后怎样清空数据?
A:用两个按钮,或者将表单数据绑定到this.data中,通过清空data的数据来达到清空表单的目的。

Q:小程序服务器是否会存储小程序应用的数据?
A:是不会储存的。

微信小程序常见FAQ(17.4.24-17.4.30)

Q:小程序与小程序之间可不可跳转?
A:暂时不支持。

Q:图片服务器需要对小程序的refer放开限制,这是什么意思?
A:有些服务器为了防盗链会去检查请求的 referer。
小程序的 referer 是 https://servicewechat.com
所以需要服务器放过这个 referer

Q:模板消息 form input的value值color 真机测试不起作用。
A:在 input 是 disabled 的情况下 color 在客户端是不会生效的,会被默认配置所覆盖,但这个可以通过通过设置 -webkit-text-fill-color 来解决,如下:
-webkit-text-fill-color: red;

Q:小程序开发版本能正常访问网络,但是体验版本,则不能访问网络请求。
A:一般可能是如下情况:
a:域名不是HTTPS
b:域名带有端口
c:域名没有备案
d:域名https有问题
e:公众后台没有配置相应域名
f:TLS版本不足1.2

Q:安卓机中使用wx.relaunch跳转界面后,依然可以按系统自带的返回键返回到上一页。
(如果按照relaunch关闭所有页面的逻辑,此时应该是不能返回的,而是直接退出小程序才合理)
** 返回到上一页、再次调用relaunch,会报错 navigateBack with an unexist webviewId**
A:非常感谢,你的反馈已记录,之后会修复。

Q:怎么修改右上角的分享按钮的内容?
A:暂时还不支持。

Q:不能接入新浪云吗?applinzi.com 和 xxx.applinzi.com都不行,因为违规被禁止设置,这个要怎么办?
A:请在微信客户端打开该域名进行申述。

微信小程序常见FAQ

Q:是否支持视频直播或音频直播,如HLS?
A:我们正在技术上正不断完善,很快将提供支持。

Q:能否从小程序中打开普通的网页链接 ,比如我要链到我们的客服页面?
A:暂时不支持。

Q:没收到内测邀请,能给我们发个邀请码吗?
A:小程序很快将开放申请,请留意官方公告。

Q:请问下小程序有计划支持二维码扫描吗?迫切需要这一功能,希望能尽快提供接口支持,谢谢
A:暂时不支持,后续会逐步完善。

Q:开发工具不支持linux环境以及windows 2003或XP系统吗?
A:是的,目前不支持

Q:请问微信小程序的组件中有没有多行文本的组件?
A:6.3.30 已支持 textarea 组件。

Q:getUserInfo接口获取不到unionid该怎么办?
A:需要到open.weixin.qq.com网站上,绑定小程序和你的其他公众号或app,才会返回unionid。

Q:安装了小程序调试工具(wechat_web_devtools_0.9.092300_x64.exe)后,把原来的开发者调试工具覆盖了?没法做到两个工具兼容?直接覆盖?
A:请升级到最新的开发者工具版本,已经兼容普通网页调试和小程序调试。

Q:我在wxss文件里编写css3动画,点击编译直接就报错了,编译不通过。
A:Css3 的更多特性,我们正在陆续支持中。目前部分功能支持不足,如animation动画。

Q:小程序路由/info?appId=1,通过wb.navigateTo 跳转页面后。如何在新的页面中拿到appId的值?我看文档中没有描述。
A:可以通过 Page 的 onLoad 事件拿到,可以参考navigator组件

Q:微信小程序支持和硬件的交互吗? 比如和硬件通过蓝牙或者wifi的方式进行数据通信?
A:我们正在规划中,目前暂不支持

Q:wx.setStorage(OBJECT) 小程序存储的容量有多大限制?
A:目前每个小程序限制5M

Q:目前提供的canvas绘图接口,我们发现不能跟网页原生api兼容,所以也就无法使用现有的绘图库了是吗?
A:是的。

Q:在微信小程序的canvas相关api中,发现缺少将canvas转换成图片的相关api接口。如drawImage系列接口。
A:6.3.30 已支持 wx.canvasToTemFilePath 用于将 canvas 转成图片临时文件路径。

Q:下载下来的zip文件如何解压缩,是否有相关api?
A:目前暂不支持,我们将很快提供。

Q:我想问一下,在小程序里面怎么进行组件化开发?我在文档中看到了template,但是个人来看只能绑定数据。如果我想绑定事件,类似component该怎么办?还是在小程序里有其他办法实现组件化?
A:目前暂不支持,我们很快将提供自定义组件。

Q:最近在看微信的小程序开发,有个顶部tab需求,查看文档没有发现此组件,看到设计规范上有,请问在哪里可以看到。
A:6.3.30 已支持在 tabBar 设置 position 参数。

Q:请问微信公众号开发功能除了调用微信提供的API之外,可以调用自己写的api接口或者服务吗?
A:可以使用request接口请求自己的服务器api。

Q:您好,在小程序的api 中是否有获取图片原始宽高的接口?具体需求场景:在canvas 中实现对wx.chooseImage后的图片进行一定比例的放缩功能。
A:6.3.30 已支持,image 组件的 bindload 事件可以返回图片的原始宽高。

Q:开发者工具如何录音,录音完成是什么格式呢?
A:暂不支持模拟录音,手机上录音目前是silk格式。

Q:请问小程序能引用外部的图表库吗,比如ECharts?
A:暂不支持。

Q:WXML中"Mustache"语法(双大括号)来绑定数据,
例如:
** ****{{**

message }}

Page({
data: {
message: "Hello MINA!"
}
})
** 如果message是一段HTML文本,能不能绑定?应该怎么绑定?**
A:目前不支持绑定HTML代码。

Q:代码里面可以用一些工具库吗?比如像 lodash这种工具库,我觉得可以用的话是比较方便的,比如可以通过 npm install 这种方式来安装第三方的工具库。
A:目前暂不支持。

Q:小程序开发时能否使用我们自定义的字体图标。A:自定义字体是支持的,但是需要使用线上字体,并且存放字体的服务器需要允许跨域。

Q:在小程序中如何将富文本内容显示出来,我已经在小程序中加入了div和样式做了测试发现样式都无效?
A:目前暂不支持。

Q:小程序是否开放用户手机通讯录的读取/写入权限?
A:目前暂不支持

Q:好像无法通过js获取图片宽和高,请问有解决方案吗?
A:目前只能显示设置图片宽高

Q:iPad好像无法预览小程序?
A:目前暂不支持iPad。

Q:微信小程序有拨打电话和发送email的方法吗?
A:可以拨打电话,暂不支持发送email

Q:我在一台机器上同时开发微信小程序和服务器程序,请问微信小程序在开发时怎么访问我本机的服务器呢?用localhost还是开发机器的IP地址?
A:目前服务器必须使用域名,不支持本地调试。

Q:我在文档中,没看到如何修改右上角三个点操作区按钮的方法。
A:这里不支持自定义,统一显示官方按钮。

Q:我这在布局的时候用到了rpx单位,在安卓手机(小米4)下真机预览的时候750rpx并显示全屏,经过测试发现在安卓手机(小米4)下850rpx 才能显示全屏; 但文档里面写道:规定屏幕宽为750rpx;是不是意味着开发者需要适配不一样的手机(不一样的手机设置不一样的rpx值)?
A:我们会持续优化rpx,兼容大部分主流机型。不需要开发者做适配。

Q:文章中的image,如果想单击后浏览图片,可以放大缩小之类,有没有相关接口?
A:可以使用图片预览接口。

Q:我在使用贵方提供的canvas组件时,并没有找到一个可以保存画布信息的接口。
A:暂不支持,我们会很快支持。

Q:滚动页面,滚动到底部,加载新的内容不能实现。
A:6.3.30 已支持页面配置 onReachBottom 事件。

Q:如果是支付给子商户,调用接口跟之前web开发的用法是一样的还是怎么做?
A:目前暂不支持支付给子商户。

Q:请问小程序里支持把文字、图片、链接转发到IM给好友、朋友圈吗,API文档里没写。
A:分享能力会很快提供,请留意官方文档。

Q:请问微信小应用除了自带的api接口, 是否支持其他的外部api或js插件的加载?
A:目前暂不支持。

Q:我调用小程序的微信支付api,一直报签名验证错误,参与签名的参数有timeStamp、nonceStr、package、signType。使用微信支付签名校验工具生成的签名跟我自己服务器生成的签名是一样的,但还是报签名错误。
A:appId不需要传入支付api,但是需要参与签名。

Q:想请教checkbox是否只能通过checkbox-group绑定事件。
A:heckbox不会触发change事件, checkbox-group才会触发。

Q:我们在微信开发工具,选择图片后,尝试上传或下载图片 都没有任何反应,请问是什么原因?
A:最新版本的开发工具已经支持 uploadFile 和 downloadFile 的调试。

2016-03-01 14:49:39 bestcxx 阅读数 19775

本文介绍如何去除微信顶部的“防欺诈盗号,请勿支付或输入qq密码”。或 “防欺诈或盗号,请不要输入qq密码”如图所示。

  

 

一、微信认证

目前只有已经通过微信认证的账号可以去除这个提示。在公众账号下左侧列表中找到微信认证,按照提示申请认证即可。

 

 

二、设置业务域名

1.进入公众账号设置

2.进入功能设置

3.在业务域名设置中,设置通过备案的域名。

 



转载自:http://www.cnblogs.com/txw1958/p/weixin-set-business-domain.html

2018-04-12 13:43:04 ly2983068126 阅读数 4050

礼品卡接口文档

更新日期
说明
2016/11/15支持增删改查货架
2016/12/7创建货架接口结构调整,增加了主题结构
2016/12/14增加赠送礼品卡事件
2016/12/21批量拉取接口由GET修改为POST方法
2016/12/27新增兑换卡类型
2017/1/5支持开发者预设礼品卡转赠次数
2017/1/19增加了page_title字段 开发者可以自定义page的title
2017/2/8新增下架货架页接口
2017/2/20新增申请流程
2017/4/25支持支付后开发票功能
2017/6/2新增礼品卡群发的开关
2017/12/251.支持买给自己选项 2.支持单个/批量查询订单3.支持为单品增加商品缩略图和商品描述4.增加商户自助配置小程序流程5.支持营销功能6.小程序渠道支持自定义投放渠道值

1.礼品卡概述

微信为礼品卡商户提供了一套完整的微信礼品卡的创建、销售以及使用流程,商户可以在微信卡券平台通过API创建礼品卡、创建礼品卡货架、调用接口进行余额同步。开发者通过将创建的礼品卡货架配置在在公众号或生成二维码贴在门店进行礼品卡的售卖。

用户可以通过购买礼品卡送给朋友并且附上祝福语,表达节日的祝福和慰问。一张小小的礼品卡,传递浓浓的情谊。

商户微信礼品卡有以下优势:

1卡包收纳、存储,用户再也不用担心弄丢礼品卡了;

2 原生社交转赠流程顺畅、安全,朋友之间赠送礼品卡变得更加容易了;

3 打开礼品卡礼包的惊喜感,让收到礼品的朋友享受双重喜悦;

4 商户使用微信提供的动态码能力,可以免开发就可以使用安全的二维码储值消费流程;

5 多渠道售卖,商户可以将礼品卡货架配置在公众号菜单、图文、二维码甚至广告渠道进行销售。
更多惊喜,等你一起来探索。

2.礼品卡产品流程

以下交互示意供参考,实际以最终实现为准。

2.1 礼品卡购买赠送流程

image

2.2 礼品卡接收流程

image

2.3礼品卡卡包内展示

image

3. 接入门槛

3.1 类目范围

现阶段主要针对以下卡券类目商户开放,虚拟类目暂不支持。具体如下:

一级类目
二级类目
购物百货商场、购物中心/购物街、超市、便利店、普通食品、保健食品、酒类、副食品门市、服饰、鞋类箱包、珠宝配饰、化妆品、日护用品、钟表眼镜、鲜花礼品、母婴用品、运动户外、乐器、图书报刊杂志、药房/药店、数码家电、家纺家装、建材五金/机械仪表、综合电商
生活服务汽车销售、加油站、家政服务、养生养护、婚庆服务、汽车维修
酒店星级酒店、度假村、快捷酒店
美食粤菜、茶餐厅、川菜、湘菜、东北菜、西北菜、火锅、自助餐、小吃、快餐、日本料理、韩国料理、东南亚菜、西餐、面包甜点、咖啡厅、江浙菜、其它美食、酒吧/俱乐部、外卖
休闲娱乐美容美发、美甲、温泉洗浴、运动健身、足疗按摩

3.2 商户资质要求

微信礼品卡根据其承载内容,分为储值类型礼品卡和单品类型礼品卡。其中储值类型礼品卡,指卡面信息包含具体储值金额,如1000元礼品卡,单品类型礼品卡,指该礼品卡用于兑换指定单品,如汉堡礼品卡。两种礼品卡需要商户具备的资质条件有所不同,具体如下。

3.2.1储值类型礼品卡

商户需具备单用途预付卡备案才可开展礼品卡业务(含礼品储值卡和礼品兑换券),若备案主体与公众号主体不一致,需符合以下条件之一:集团发卡、品牌发卡、多用途牌照方担保。

补充材料

过渡阶段以邮件方式提交,说明如下:

1)
集团发卡:若单用途预付卡持牌机构为集团母公司,申请储值权限的公众号认证主体为集团旗下子公司,且股权占比50%以上,申请方可额外补充备案公司的《集团发卡授权书》(需有备案公司公章),以开通权限。

2)
品牌发卡:若单用途预付卡持牌机构为品牌方,申请储值权限的公众号认证主体为品牌授权的加盟商,申请方可额外补充《特许经营授权书》(需有备案公司公章),以开通权限。

这两种种情况下,授权书由企业自拟,需说明清楚以下情况:我是谁;我备案的情况; 我授权给谁;授权它做什么事情(以集团名义发卡?以品牌名义发卡?);被授权方发的卡,我负责兑现。

3)
多用途预付卡牌照:若申请方获得预付卡发行与受理的发行机构(《支付业务许可证》)的合作授权,申请方可通过邮件直接提交《多用途预付卡备案》材料,以及备案方与申请方的《合作协议》(需有备案公司公章),以开通权限。

此处需关注三点:

a. 牌照方必须是“预付卡发行与受理”的发行机构,不能是“预付卡受理”的受理机构;b.
完成授权后,品牌方需委托牌照方执行制卡、发卡等行为,品牌方自身公众号仍未获得预付卡权限,如果牌照方需要进行预付卡销售,为合规行为,经法务评估不存在二清风险,另由于目前法规规定发卡机构应当通过实体网点发行销售预付卡,建议优先接入有实体卡业务的商户;

c.
《支付机构预付卡业务管理办法》规定,支付机构应该严格按照《支付业务许可证》核准的业务类型和业务范围从事预付卡业务,不得在未设立省级分支机构的省(自治区、直辖市、计划单列市)从事预付卡业务。因此,地方性的牌照持有方不得在全国范围开展业务。

多用途牌照方授权的情况下,授权书在以上基础上,还需要补充以下说明,即需完整描述:

a)
我是谁,我备案的情况,我授权给谁,授权它做什么事情,被授权方发的卡,我负责兑现;

b) 特约商户基本信息;

c) 收费项目和标准;

d) 持卡人用卡权益的保障要求;

e) 卡片信息、交易数据、受理终端、交易凭证的管理要求;

f) 特约商户收款账户名称、开户行、账号及资金结算周期;

g) 账务核对、差错处理和业务纠纷的处置要求;

h) 相关业务风险承担和违约责任的承担机制 ;

i) 协议终止条件、终止后的债权债务清偿方式。

补充材料,在过渡阶段统一以邮件的方式,发送给:weixincard@tencent.com;
fourierwang@tencent.com,lamielu@tencent.comolinawang@tencent.com;
jenniezhou@tencent.comtimdong@tencent.com 。后续会支持在MP系统提交。

3.2.2 单品类型礼品卡

无需具备预付卡资质,平台视为普通兑换卡业务。符合类目要求的商家无需单独走申请流程,凭接口文档可以直接开发。

4 接入准备

4.1 拥有一个认证公众号并开通卡券功能

4.1.1新注册流程

4.1.2非新注册流程

  • 若商户已有开通卡券功能的公众号则可根据自身情况,决定是否直接复用。

注:以上开通均需3-5工作日的审核时间,请根据项目进度提前申请操作。

4.2 拥有一个认证小程序(礼品卡专用)

我们需要商户提供一个独立的小程序用于上传礼品卡的代码以及资料。须商户申请或拥有一个礼品卡专用的小程序。

4.2.1 新注册流程

4.2.2 复用公众号资质快速注册

  • 若商户已有认证公众账号,可以登录【微信公众平台】,进入【小程序管理】-【添加】-【快速注册并认证小程序】直接快速注册认证的小程序。

4.3 使用用公众号申请商户号

  • 商户须使用公众号申请的商户号来走通礼品卡的配置流程,申请流程请见:【微信公众平台

注意事项

1 自助配置流程仅支持公众号申请的商户号,小程序申请的商户号暂不支持走自助配置流程;

2 商户号建议为礼品卡专用,便于对账统计;

3 支持普通服务商和直连商户模式的商户号,暂不支持银行服务商和支付机构服务商模式下的商户号。

5开发概述

5.1 须知

礼品卡为微信卡券的一种类型,请开发者在开发礼品卡功能之前请先概览《公众平台接口文档》、《微信卡券接口文档》以及《微信卡券功能使用规则》以确保熟悉礼品卡开发中涉及的基本概念和礼品卡运营相关的基本准则。

5.2 术语解释


为了避免开发者在开发过程中产生概念混淆,请开发在开发礼品卡接口前熟知以下术语。

参数名
描述
card_id卡券ID。一个卡券ID对应一类卡券,包含了相应库存数量的Code码。
code卡券Code码。一张卡券的唯一标识,核销卡券时使用此串码,支持商户自定义。
openid用户在该公众号下的唯一身份。
access_token调用接口的凭证,有效时间为7200s,每次请求刷新, 通过获取access_token接口获取,开发者需妥善保存并建立缓存机制。
jsapi_ticket调用微信内网页调用微信原生功能的JS-SDK接口须使用的签名票据,详情见:JS-SDK部分
api_ticket调用微信卡券接口时签名的临时票据,有效时间为7200s, 7200s内重复请求保持不变,获取api_ticket接口获取。
card_ext可扩张卡券的附加信息,用于投放卡券是附带卡券基本信息。
outer_str领券渠道的场景值。支持商户自定义场景值填入card_ext进行卡券投放, 当用户领取时会将相应场景值通过事件通知商户。
事件推送在卡券通过审核、卡券被领取、卡券被删除、卡券被核销时, 均会推送事件通知开发者,接收地址为公众平台开发者中心填写的服务器URL。
自定义入口通过API创建卡券支持商户自定义卡券详情页跳转外链的单元。
礼品卡使用本文档定义礼品卡的余额减少称为礼品卡使用。包括但不限于线下POS机余额扣减,用户在线使用等场景

5.3 开发步骤

礼品卡开发须经历创建礼品卡、投放礼品卡和礼品卡信息同步几个重要步骤,如下图所示。

image

注意事项:

本文档仅描述礼品卡创建的主线流程,支线流程请参考卡券接口文档

  1. 关于是否自定义code的区别以及导入code的操作请参考:

微信卡券接口调用说明:

http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025056&token=&lang=zh_CN&anchor=2.2

导入自定义code:

http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025062&token=&lang=zh_CN&anchor=4.1

公众平台事件处理机制:

http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025274&token=&lang=zh_CN

5.4 文档参考

在开发礼品卡功能过程中,可能需要参考以下文档

公众平台接口文档(Token获取、缓存、事件推送处理):

http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432&token=&lang=zh_CN

微信卡券接口文档(创建礼品卡、自定义code机制、导入code机制):

http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141229&token=&lang=zh_CN

6.创建礼品卡

6.1 上传礼品卡图片素材接口

开发者需要将展示在微信用户的礼品卡logo和背景图先上传到微信CDN上,获得url后用于创建礼品卡接口的logo_url字段和background_pic_url字段

详情请见:

http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025056&token=&lang=zh_CN&anchor=2.3

注意事项:

  • 礼品卡背景图片设计请严格遵循《微信会员卡自定义背景设计规范》;
  • 微信会对商户上传的图片进行防盗链保护,上传素材若被展示在非商户域名下网页时会被禁止显示。

6.2 上传礼品卡门店接口

对于与地理位置相关的使用场景的礼品卡,我们建议开发者创建礼品卡的时候填入门店,用户使用礼品卡时,若在门店附近,礼品卡排序会自动置顶。

详情请见:

http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025056&token=&lang=zh_CN

6.3 创建礼品卡接口

接口说明

创建卡券接口是微信卡券的基础接口,用于创建一类新的卡券,获取card_id,创建成功并通过审核后,商家可以通过文档提供的其他接口将卡券下发给用户,每次购买成功,库存数量相应扣除。

接口调用请求说明

参数
说明
协议HTTPS
http请求方式POST
请求Urlhttps://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN
POST数据格式JSON

请求参数说明

参数
说明
是否必填
access_token调用接口凭证
JSONJSON数据

POST数据示例:

{
    "card": {
        "card_type": "GENERAL_CARD",
        "general_card": {
            "sub_card_type": "GIFT_CARD",
            "background_pic_url": "https://mmbiz.qlogo.cn/mmbiz/",
            "base_info": {
                "max_give_friend_times": 1,
                "giftcard_info": {
                    "price": 1
                },
                "logo_url": "https://mmbiz.qlogo.cn/mmbiz/p98FjXy8LaeMq67mEpDmkj05EtiaVcGOibVaVux3Agib1ibcHFkCoic7HuQWFawx9XGCNWIO085drjdxTib2nBHlYGAA/0?wx_fmt=gif",
                "brand_name": "微信咖啡厅",
                "code_type": "CODE_TYPE_QRCODE",
                "title": "心意卡",
                "color": "Color020",
                "notice": "使用时向服务员出示",
                "service_phone": "020-88888888",
                "description": "不可与其他优惠同享",
                "date_info": {
                    "type": "DATE_TYPE_FIX_TIME_RANGE",
                    "begin_timestamp": 1397577600,
                    "end_timestamp": 1472724261
                },
                "sku": {
                    "quantity": 50000000
                },
                "get_limit": 0,
                "use_custom_code": false,
                "can_give_friend": true,
                "location_id_list": [
                    213059884
                ],
                "center_title": "顶部居中按钮",
                "center_sub_title": "按钮下方的wording",
                "center_url": "www.qq.com",
                "center_app_brand_user_name": "gh_86a091e50ad4@app",
                "center_app_brand_pass": "pages/index/index",
                "custom_url_name": "新品推荐",
                "custom_url": "https://www.starbucks.com.cn/",
                "custom_app_brand_user_name": "gh_86a091e50ad4@app",
                "custom_app_brand_pass": "pages/index/index",
                "need_push_on_view": true
            },
            "advanced_info": {
                "text_image_list": [
                    {
                        "image_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sjpiby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0",
                        "text": "此菜品精选食材,以独特的烹饪方法,最大程度地刺激食 客的味"
                    },
                    {
                        "image_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sj piby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0",
                        "text": "此菜品迎合大众口味,老少皆宜,营养均衡"
                    }
                ]
            },
            "supply_balance": true,
            "prerogative": "礼品卡享受更多优惠",
            "auto_activate": true,
            "init_balance": 10000,
            "custom_field1": {
                "name": "优惠券",
                "url": "",
                "app_brand_user_name": "",
                "app_brand_pass": ""
            },
            "custom_field2": {
                "name": "兑换券",
                "url": "",
                "app_brand_user_name": "",
                "app_brand_pass": ""
            }
        }
    }
}

`请求数据说明:

礼品卡

结构
结构
字段
说明
必填
card  卡券信息部分 
 card_typeGENERAL_CARD卡券类型。
 general_cardbackground_pic_url礼品卡背景图片
  base_info基本的卡券数据,见下表,所有卡券通用。
  advanced_info卡券图文说明
  sub_card_type卡类型,目前支持
   GIFT_CARD 礼品卡 VOUCHER 兑换卡 
  auto_activate是否自动激活,若开发者不需要额外激活流程则填写true。
  supply_bonus是否支持积分,填写true或者false。默认为false
  supply_balance是否支持余额,填写true或者false。默认为false
  init_balance初始余额,用户购买礼品卡后卡面上显示的初始余额
  custom_field1自定义会员信息类目,会员卡激活后显示,包含name和url字段
  custom_field2自定义会员信息类目,会员卡激活后显示,包含name和url字段
  custom_field3自定义会员信息类目,会员卡激活后显示,包含name和url字段
  name自定义信息类目名称,
  url自定义信息类目跳转url
  need_push_on_viewtrue为用户点击进入礼品卡时是否推送事件。

注意事项:开发者仅能在supply_balance和custom_field1、custom_field2、custom_field3中选择最多3个填写,否则报错。

base_info 字段描述

结构字段字段说明必填
base_info 基本的卡券数据 
 giftcard_infoprice礼品卡的价格,以分为单位
 logo_url 卡券的商户logo,尺寸为300*300,须先将logo上传至CDN,否则报错。
 max_give_friend_times 礼品卡最大可赠送次数
 code_type code码展示类型。
   "CODE_TYPE_TEXT",文本; "CODE_TYPE_BARCODE",一维码 ; "CODE_TYPE_QRCODE",二维码; “CODE_TYPE_ONLY_QRCODE”,二维码无code显示; “CODE_TYPE_ONLY_BARCODE”,一维码无code显示;
 brand_name 商户名字,字数上限为12个汉字。(填写直接提供服务的商户名)
 title 券名,字数上限为9个汉字。(建议涵盖卡券属性、服务及金额)
 color 券颜色。按色彩规范标注填写Color010-Color100
 notice 使用提醒,字数上限为12个汉字。(一句话描述,展示在首页,示例:请出示二维码核销卡券)
 description 使用说明。长文本描述,可以分行,上限为1000个汉字。
 date_info 使用日期,有效期的信息。
  type支持固定时长有效类型 DATE_TYPE_FIX_TIME_RANGE 固定日期有效类型DATE_TYPE_FIX_TERM 永久有效类型DATE_TYPE_PERMANENT
  begin_timestamptype为DATE_TYPE_FIX_TIME_RANGE 时专用,表示起用时间。从1970年1月1日00:00:00至起用时间的秒数,最终需转换为字符串形态传入,下同。(单位为秒)
  end_timestamptype为DATE_TYPE_FIX_TIME_RANGE 时专用,表示结束时间。(单位为秒)
  fixed_termtype为DATE_TYPE_FIX_TERM时专用,表示自领取后多少天内有效。(单位为天)领取后当天有效填写0。
  fixed_begin_termtype为DATE_TYPE_FIX_TERM时专用,表示自领取后多少天开始生效。(单位为天)
 sku 商品信息。
  quantity卡券库存的数量,建议填写一个较大值。
 location_id_list 门店位置ID。商户需在mp平台上录入门店信息或调用批量导入门店信息接口获取门店位置ID。
 use_all_locations 全部门店,设置卡券支持全部门店, 填写true或false,不填代表默认为false。
 use_custom_code 是否自定义code码。填写true或false,不填代表默认为false。
 bind_openid 是否指定用户领取,填写true或false,礼品卡建议填写false。
 can_share 领取卡券原生页面是否可分享,填写true或false,礼品卡建议填写false。
 can_give_friend 卡券是否可转赠,填写true或false,true代表可转赠。默认为true。
 get_limit 每人最大领取次数,须填0。
 service_phone 客服电话。
 center_title 礼品卡居中的按钮,仅在卡券状 态正常(可以核销)时显示,建议用于引导使用或者充值流程
 center_sub_title 居中按钮的引导wording
 center_url 居中入口的链接
 custom_url_name 商户自定义入口名称,与custom_url字段共同使用,长度限制在5个汉字内。
 center_app_brand_user_name 自定义cell对应的小程序username,格式为公众号原始id@app
 center_app_brand_pass 自定义cell对应的小程序路径
 custom_url 商户自定义入口跳转外链的地址链接,跳转页面内容需与自定义cell名称保持匹配。
 custom_url_sub_title 显示在入口右侧的tips,长度限制在6个汉字内。
 custom_app_brand_user_name 自定义cell对应的小程序username,格式为公众号原始id@app
 custom_app_brand_pass 自定义cell对应的小程序路径
 promotion_url_name 营销场景的自定义入口。
 promotion_url 入口跳转外链的地址链接。
 promotion_app_brand_user_name 自定义cell对应的小程序username,格式为公众号原始id@app
 promotion_app_brand_pass 自定义cell对应的小程序路径

advanced_info 字段描述

结构字段说明是否必填
advanced_info 若卡券为兑换卡,可以设置为图文说明,用于解释商品的详细参数 
 text_image_list图文列表结构体
 image_url商品说明图,须先上传至cdn
 text商品文字说明

返回数据示例:

{

"errcode":0,

"errmsg":"ok",

"card_id":"p1Pj9jr90_SQRaVqYI239Ka1erkI"

}

返回数据说明

字段说明
errcode错误码,0为正常
errmsg错误信息

注意事项:

.

  1. 支持动态码的礼品卡请参照文档:https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1478005752&version=1&lang=zh_CN&platform=2

7.礼品卡货架

7.1 货架样式

供参考,以实际实现为准:

image

7.2 创建-礼品卡货架接口

接口说明

开发者可以通过该接口创建一个礼品卡货架并且用于公众号、门店的礼品卡售卖。

接口调用请求说明

协议HTTPS
http请求方式POST
请求Urlhttps://api.weixin.qq.com/card/giftcard/page/add?access_token=ACCESS_TOKEN
POST数据格式JSON

请求参数说明

参数说明是否必填
access_token调用接口凭证
JSONJSON数据

POST数据示例:

{
    "page": {
        "page_title": "礼品卡",
        "support_multi": true,
        "banner_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
        "theme_list": [
            {
                "theme_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                "title": "title",
                "title_color": "#FB966E",
                "show_sku_title_first": true,
                "item_list": [
                    {
                        "card_id": "pbLatjiSj_yVRH5XTb2Zsln7DNQg",
                        "title": "焦糖拿铁"
                    },
                    {
                        "card_id": "pbLatjlq75CPBR_tYCRdPlxSGlOs",
                        "title": "焦糖拿铁"
                    }
                ],
                "pic_item_list": [
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语1"
                    },
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语2"
                    },
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语3"
                    }
                ],
                "category_index": 0
            },
            {
                "theme_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                "title": "title_lalala",
                "title_color": "#FB966E",
                "item_list": [
                    {
                        "card_id": "pbLatjiSj_yVRH5XTb2Zsln7DNQg",
                        "title": "焦糖拿铁"
                    },
                    {
                        "card_id": "pbLatjlq75CPBR_tYCRdPlxSGlOs",
                        "title": "蛋糕"
                    }
                ],
                "pic_item_list": [
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语1",
                        "outer_img_id": "outer_img_id_1"
                    },
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语2",
                        "outer_img_id": "outer_img_id_2"
                    },
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语3",
                        "outer_img_id": "outer_img_id_3"
                    }
                ],
                "category_index": 1
            },
            {
                "theme_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                "title": "title_lalala",
                "title_color": "#FB966E",
                "item_list": [
                    {
                        "card_id": "pbLatjiSj_yVRH5XTb2Zsln7DNQg"
                    },
                    {
                        "card_id": "pbLatjlq75CPBR_tYCRdPlxSGlOs"
                    }
                ],
                "pic_item_list": [
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语1",
                        "outer_img_id": "outer_img_id_1"
                    },
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语2",
                        "outer_img_id": "outer_img_id_2"
                    },
                    {
                        "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/p98FjXy8LafBWIJsGFe7tlPvtBFxXXTPdx5cEuFMcWWsiaR1DyrN5ML3jiaVYZibovA8OrwOylUia6ywvVU6Aqboibw/0",
                        "default_gifting_msg": "祝福语3",
                        "outer_img_id": "outer_img_id_3"
                    }
                ],
                "is_banner": true
            }
        ],
        "category_list": [
            {
                "title": "主题分类一"
            },
            {
                "title": "主题分类二"
            }
        ],
        "address": "广州市海珠区222号",
        "service_phone": "020-12345678",
        "biz_description": "退款指引",
        "cell_1": {
            "title": "申请发票",
            "url": "https://open.weixin.qq.com"
        },
        "cell_2": {
            "title": "申请退款",
            "url": "https://mp.weixin.qq.com"
        }
    }
}

请求数据说明:

结构参数说明是否必填
page货架信息结构体,包含以下字段  
 page_title礼品卡货架名称
 support_multi是否支持一次购买多张及发送至群,填true或者false,若填true则支持,默认为false
 support_buy_for_self礼品卡货架是否支持买给自己,填true或者false,若填true则支持,默认为false
 banner_pic_url礼品卡货架主题页顶部banner图片,须先将图片上传至CDN,建议尺寸为750px*630px
 theme_list主题结构体,是一个JSON结构
 category_list主题分类列表
 address商家地址
 service_phone商家服务电话
 biz_description商家使用说明,用于描述退款、发票等流程
 need_receipt该货架的订单是否支持开发票,填true或者false,若填true则需要调试文档2.2的流程,默认为false
 cell_1商家自定义链接,用于承载退款、发票等流程
 cell_2商家自定义链接,用于承载退款、发票等流程

theme_list是一个JSON结构,包含以下字段

参数参数说明是否必填
theme_list 主题结构体,包含以下字段 
 theme_pic_url主题的封面图片,须先将图片上传至CDN 大小控制在1000px*600px
 title主题名称,如“圣诞”“感恩家人”
 title_color主题title的颜色,直接传入色值
 item_list礼品卡列表,标识该主题可选择的面额
 pic_item_list封面列表
 category_index主题标号,对应category_list内的title字段, 若填写了category_list则每个主题必填该序号
 show_sku_title_first该主题购买页是否突出商品名显示
 is_banner是否将当前主题设置为banner主题(主推荐)

item_list和pic_item_list是JSON结构,包含以下字段

参数参数说明是否必填
item_list 商品结构体,包含以下字段 
 card_id待上架的card_id
 title商品名,不填写默认为卡名称
 pic_url商品缩略图,1000像素*600像素以下
 desc商品简介
pic_item_list 卡面结构体,包含以下字段
 background_pic_url卡面图片,须先将图片上传至CDN,大小控制在1000像素*600像素以下
 outer_img_id自定义的卡面的标识
 default_gifting_msg该卡面对应的默认祝福语,当用户没有编辑内容时会随卡默认填写为用户祝福内容

cell1和cell2是JSON结构,包含以下字段

结构参数说明是否必填
cell 商户自定义服务入口结构体,包含以下字段
 title自定义入口名称
 url自定义入口链接

category_list是JSON结构,包含以下字段

结构参数说明是否必填
category_list 主题分类排序结构体,包含以下字段
 title主题分类的名称

返回参数说明

返回数据示例:

{
    "errcode": 0,
    "errmsg": "ok",
    "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk"
}

返回数据说明:

字段说明
errcode错误码,0为正常
errmsg错误信息
page_id货架的id,用于查询货架详情以及获得货架访问链接

注意事项

1.货架链接拼接规则

将page_id进行UrlEncode之后**替换到以下链接的page_id参数的值即可访问商城页首页。

https://mp.weixin.qq.com/bizmall/giftcard?action=homepage&page_id=123456\#wechat_redirect

如page_id为:abcedfghifk=+Uasdaseq14fadkf8123h4jk

UrlEncode之后:abcedfghifk%3d%2bUasdaseq14fadkf8123h4jk

加入链接后:

https://mp.weixin.qq.com/bizmall/giftcard?action=homepage&page_id=
abcedfghifk%3d%2bUasdaseq14fadkf8123h4jk #wechat_redirect

2. 关于渠道统计

提供outer_str字段做渠道区分,将会在页面中流转,后面在查询订单的api中或者相关callback中都能获取到对应字段。

例如outer_str=abc:

则上述链接变为:

https://mp.weixin.qq.com/bizmall/giftcard?action=homepage&page_id=123456&outer_str=abc\#wechat_redirect

如page_id为:abcedfghifk=+Uasdaseq14fadkf8123h4jk

UrlEncode之后:abcedfghifk%3d%2bUasdaseq14fadkf8123h4jk

加入链接后:

https://mp.weixin.qq.com/bizmall/giftcard?action=homepage&page_id=abcedfghifk%3d%2bUasdaseq14fadkf8123h4jk\#wechat_redirect

3.货架外链跳转协议

cell中的url,跳转时会在GET参数中带入order_id和openid

比如原本数据是

https://mp.weixin.qq.com 将会变成

https://mp.weixin.qq.com/?order_id=Z2y2rY4UxUZYitvVGA&openid=oAAAAAKe1ri5AAaAiB50-Ak6Vs1w

4.设置审核白名单

  • 创建后的货架处于待审核状态,不可被外界查看购买,须商户申请上线并审核通过后方可完成。

  • 开发人员可以将自己的微信号设置为白名单,用于测试流程,接口参见:[mp.weixin.qq.com]-[卡券部分]-[投放卡券]-[设置卡券白名单]

7.3 查询-礼品卡货架信息接口

接口说明

开发者可以查询某个礼品卡货架信息。

接口调用请求说明

协议HTTPS
http请求方式POST
请求Urlhttps://api.weixin.qq.com/card/giftcard/page/get?access_token=ACCESS_TOKEN
POST数据格式JSON

请求参数说明

参数说明是否必填
access_token调用接口凭证
JSONJSON数据

POST数据示例:

{

"page_id" : "abcedfghifk=+Uasdaseq14fadkf8123h4jk"

}

请求数据说明:

参数说明是否必填
page_id上一步获取到货架id

返回数据示例:

请求数据说明:参数说明是否必填page_id上一步获取到货架id是返回参数说明返回数据示例:

{
    "errcode": 0,
    "errmsg": "ok",
    "page": {
        "banner_pic_url": "http://img.com/banner_pic",
        "theme_list": [
            {
                "theme_pic_url": "http://img.com/theme_pic",
                "title": "title_lalala",
                "title_color": "#FFFFFF",
                "item_list": [
                    {
                        "card_id": "card_id_lalala"
                    }
                ],
                "pic_item_list": [
                    {
                        "background_pic_url": "http://img.com/bg_pic1",
                        "default_gifting_msg": "祝福语1"
                    },
                    {
                        "background_pic_url": "http://img.com/bg_pic2",
                        "default_gifting_msg": "祝福语2"
                    },
                    {
                        "background_pic_url": "http://img.com/bg_pic3",
                        "default_gifting_msg": "祝福语3"
                    }
                ]
            }
        ]
    }
}

返回数据说明:

参数参数说明
errcode 错误码
errmsg 错误信息
page 货架信息结构体,包含以下字段
 banner_pic_url礼品卡货架主题页顶部banner图片,须先将图片上传至CDN
 support_multi是否支持一次购买多张及发送至群
 support_buy_for_self礼品卡货架是否支持买给自己
 theme_list主题结构体,是一个JSON结构
 category_list主题分类列表
 address商家地址
 service_phone商家服务电话
 biz_description商家使用说明,用于描述退款、发票等流程
 cell_1商家自定义链接,用于承载退款、发票等流程
 cell_2商家自定义链接,用于承载退款、发票等流程

theme_list是一个JSON结构,包含以下字段

参数参数说明
theme_list 主题结构体,包含以下字段
 theme_pic_url主题的封面图片,须先将图片上传至CDN
 title主题名称,如“圣诞”“感恩家人”
 title_color主题title的颜色,直接传入色值
 item_list礼品卡列表,标识该主题可选择的面额
 pic_item_list封面列表
 category_index主题标号,对应category_list内的title字段, 若填写了category_list则每个主题必填该序号
 is_banner是否将当前主题设置为banner主题(主推荐)

item_list和pic_item_list是JSON结构,包含以下字段

参数参数说明
item_list 商品结构体,包含以下字段
 card_id待上架的card_id
pic_item_list 卡面结构体,包含以下字段
 background_pic_url卡面图片,须先将图片上传至CDN
 outer_img_id自定义的卡面的标识
 default_gifting_msg该卡面对应的默认祝福语,当用户没有编辑内容时会随卡默认填写为用户祝福内容

cell1和cell2是JSON结构,包含以下字段

参数参数说明
cell 商户自定义服务入口结构体,包含以下字段
 title自定义入口名称
 url自定义入口链接

category_list是JSON结构,包含以下字段

参数说明 
category_list主题分类排序结构体,包含以下字段 
 title主题分类的名称

7.4 修改-礼品卡货架信息接口

接口说明

开发者可以通过该接口更新礼品卡货架信息。

接口调用请求说明

协议HTTPS
http请求方式POST
请求Urlhttps://api.weixin.qq.com/card/giftcard/page/update?access_token=ACCESS_TOKEN
POST数据格式JSON

请求参数说明

参数说明是否必填
access_token调用接口凭证
JSONJSON数据

POST数据示例:

{
    "page": {
        "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
        "banner_pic_url": "http://img.com/banner_pic",
        "theme_list": [
            {
                "theme_pic_url": "http://img.com/theme_pic",
                "title": "title_lalala",
                "title_color": "#FFFFFF",
                "item_list": [
                    {
                        "card_id": "card_id_lalala"
                    }
                ],
                "pic_item_list": [
                    {
                        "background_pic_url": "http://img.com/bg_pic1",
                        "default_gifting_msg": "祝福语1"
                    },
                    {
                        "background_pic_url": "http://img.com/bg_pic2",
                        "default_gifting_msg": "祝福语2"
                    },
                    {
                        "background_pic_url": "http://img.com/bg_pic3",
                        "default_gifting_msg": "祝福语3"
                    }
                ]
            }
        ]
    }
}

请求数据说明:

参数参数说明是否必填
page货架信息结构体,包含以下字段  
 page_id要修改的货架id
 banner_pic_url礼品卡货架主题页顶部banner图片,须先将图片上传至CDN
 theme_list主题结构体,是一个JSON结构
 category_list主题分类列表
 address商家地址
 service_phone商家服务电话
 biz_description商家使用说明,用于描述退款、发票等流程
 cell_1商家自定义链接,用于承载退款、发票等流程
 cell_2商家自定义链接,用于承载退款、发票等流程

theme_list是一个JSON结构,包含以下字段

参数参数说明是否必填
theme_list主题结构体,包含以下字段  
 theme_pic_url主题的封面图片,须先将图片上传至CDN
 title主题名称,如“圣诞”“感恩家人”
 title_color主题title的颜色,直接传入色值
 item_list礼品卡列表,标识该主题可选择的面额
 pic_item_list封面列表
 category_index主题标号,对应category_list内的title字段, 若填写了category_list则每个主题必填该序号
 is_banner是否将当前主题设置为banner主题(主推荐)

item_list和pic_item_list是JSON结构,包含以下字段

参数参数说明是否必填
item_list商品结构体,包含以下字段  
 card_id待上架的card_id
pic_item_list卡面结构体,包含以下字段  
 background_pic_url卡面图片,须先将图片上传至CDN
 outer_img_id自定义的卡面的标识
 default_gifting_msg该卡面对应的默认祝福语,当用户没有编辑内容时会随卡默认填写为用户祝福内容

cell1和cell2是JSON结构,包含以下字段

参数参数说明是否必填
cell商户自定义服务入口结构体,包含以下字段  
 title自定义入口名称
 url自定义入口链接

category_list是JSON结构,包含以下字段

参数参数说明是否必填
category_list主题分类排序结构体,包含以下字段  
 title主题分类的名称

返回参数说明

返回数据示例:

{

"errcode" : 0,

"errmsg" : "ok"

}

返回数据说明:

参数说明
errcode错误码
errmsg错误信息

7.5 查询-礼品卡货架列表接口

接口说明

开发者可以通过该接口查询当前商户下所有的礼品卡货架id。

接口调用请求说明

请求参数说明

参数说明是否必填
access_token调用接口凭证
JSONJSON数据

POST数据示例:

{}

返回参数说明

返回数据示例:

{
    "errcode": 0,
    "errmsg": "ok",
    "page_id_list": [
        "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
        "abcedfghifk=+Uasdaseq14fadkf8123h4jl",
        "abcedfghifk=+Uasdaseq14fadkf8123h4jm",
        "abcedfghifk=+Uasdaseq14fadkf8123h4jn"
    ]
}

返回数据说明:

参数说明
errcode错误码
errmsg错误信息
page_id_list礼品卡货架id列表

7.6 下架-礼品卡货架接口

接口说明

开发者可以通过该接口查询当前商户下所有的礼品卡货架id。

接口调用请求说明

请求参数说明

参数说明是否必填
access_token调用接口凭证
JSONJSON数据

请求参数说明:

参数说明
page_id需要下架的page_id
all 
maintain

POST数据示例:

将某个货架设置为下架

{
    "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
    "maintain": true
}

或者将该商户下所有的货架设置为下架

{
    "all": true,
    "maintain": true
}

返回数据示例:

{
    "errcode": 0,
    "errmsg": "ok",
    "control_info": {
        "biz_control_type": "E_PAGE_CONTROL_BIZ",
        "system_biz_control_type": "E_PAGE_CONTROL_NORMAL",
        "list": [
            {
                "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
                "page_control_type": "E_PAGE_CONTROL_BIZ",
                "system_page_control_type": "E_PAGE_CONTROL_SYSTEM"
            }
        ]
    }
}

返回数据说明:

参数说明
errcode错误码
errmsg错误信息
control_info控制结果的结构体

control_info是一个结构体,包含以下字段

参数说明
biz_control_type商户控制的该appid下所有货架的状态
system_biz_control_type系统控制的商家appid下所有的货架状态
listPage列表的结构体,为商户下所有page列表

listo是一个结构体,包含以下字段

参数说明
page_idPage的唯一id
page_control_type商户控制的货架状态
system_page_control_type由系统控制的货架状态

8.礼品卡小程序

8.1 开通微信支付礼品卡权限

8.1.1 申请微信支付礼品卡权限接口

url:

https://api.weixin.qq.com/card/giftcard/pay/whitelist/add?access_token=TOKEN

请求示例

{
    "sub_mch_id": "1900015421"//微信支付子商户号
}

返回示例

{
    "errcode": 0,
    "errmsg": "ok",
    "url": "https://pay.weixin.qq.com/index.php/public/product/detail?pid=61&productType=0"
}

注意事项

1.传入的商户号须为普通服务商模式或者直连商户号,建议为礼品卡专用商户号

2.商户号必须为公众号申请的商户号,否则报错

3.调用接口的token须为公众号对应的token,否则报错

4.调用接口的的公众号须与商户号同主体,非同主体情况须和对接人联系申请

8.1.2 登录商户平台后台点击确认

完成4.1步骤后,商户须点击4.1步骤返回的url登录微信支付商户后台,点击确认开通礼品卡支付功能,完成礼品卡支付功能开通。

1点击4.1得到的url,.登录微信支付商户后台

image

2.登录后进入产品中心,找到【微信礼品卡】点击开通

image

3.点击开通礼品卡功能

image

8.2 绑定商户号到礼品卡小程序接口

URL

https://api.weixin.qq.com/card/giftcard/pay/submch/bind?access_token=TOKEN

请求示例

{
    "sub_mch_id": "1900015421",
    "wxa_appid": "wx8638fbedaf138a87"
}

返回示例

{
    "errcode": 0,
    "errmsg": "ok"
}

注意事项

1.传入的商户号须为普通服务商模式或者直连商户号,建议为礼品卡专用商户号 ;

2.商户号必须为公众号申请的商户号,否则报错;

3.调用接口的token为公众号的token ;

4.公众号须与礼品卡小程序进行关联绑定,详情请见:https://mp.weixin.qq.com/debug/wxadoc/introduction/#公众号关联小程序

8.3上传小程序代码

8.3.1 上传小程序代码

URL

https://api.weixin.qq.com/card/giftcard/wxa/set?access_token=TOKEN

请求示例

{
    "wxa_appid": "wx123456789",
    "page_id": "asdasdjkafkjaslfjasl+fjas="
}

返回示例

{
    "errcode": 0,
    "errmsg": "ok"
}

注意事项

1.公众号须与小程序有绑定关系;

2.小程序代码上传后须登录小程序后台进行提交审核;

8.3.2登录小程序后台进行发布

填写礼品卡小程序基本信息

开发者在完成5.1步骤后须登录小程序后台mp.weixin.qq.com,填写小程序相关资料并发布审核

image

发布体验版测试

image

点击提交审核

image

点击提交发布

9.礼品卡订单

9.1 查询-单个礼品卡订单信息接口

接口说明

开发者可以通过该接口查询某个订单号对应的订单详情。

接口调用请求说明

协议HTTPS
http请求方式POST
请求Urlhttps://api.weixin.qq.com/card/giftcard/order/get?access_token=ACCESS_TOKEN
POST数据格式JSON

请求参数说明

参数说明是否必填
access_token调用接口凭证
JSONJSON数据

POST数据示例:

{
    "order_id" : "Z2y2rY74ksZX1ceuGA"
}

请求参数说明:

参数说明
order_id礼品卡订单号,商户可以通过购买成功的事件推送或者批量查询订单接口获得

返回参数说明

返回数据示例:

{
    "errcode": 0,
    "errmsg": "ok",
    "order": {
        "order_id": "Z2y2rY74ksZX1ceuGA",
        "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
        "trans_id": "4001562001201608292531663351",
        "create_time": 123,
        "pay_finish_time": 123,
        "total_price": 123,
        "open_id": "123",
        "accepter_openid": "123",
        "card_list": [
            {
                "card_id": "card_id_1",
                "price": 123,
                "code": "code_123456",
                "default_gifting_msg": "",
                "background_pic_url": "",
                "accepter_openid": "123"
            }
        ],
        "outer_str": "web",
        "IsChatRoom": true
    }
}

返回数据说明:

参数参数说明 
errcode错误码  
errmsg错误信息  
order订单结构体,包含以下字段  
 order_id订单号 
 page_id货架的id 
 trans_id微信支付交易订单号 
 create_time订单创建时间,十位时间戳(utc+8) 
 pay_finish_time订单支付完成时间,十位时间戳(utc+8) 
 total_price全部金额,以分为单位 
 open_id购买者的openid 
 accepter_openid接收者的openid 
 outer_str购买货架的渠道参数 
 IsChatRoom该订单那对应礼品卡是否发送至群 
 card_list卡列表结构,包含以下字段 
  card_id购买的卡card_id列表
  price该卡的价格
  code用户获得的code
  default_gifting_msg默认祝福语,当用户填入了祝福语时该字段为空
  background_pic_url用户选择的背景图
  outer_img_id自定义卡面说明
  accepter_openid礼品卡发送至群时,领取者的openid

9.2 查询-批量查询礼品卡订单信息接口


接口说明

开发者可以通过该接口查询该商户某个时间段内创建的所有订单详情。

接口调用请求说明

协议HTTPS
http请求方式POST
请求Urlhttps://api.weixin.qq.com/card/giftcard/order/batchget?access_token=ACCESS_TOKEN
POST数据格式JSON

请求参数说明

参数说明是否必填
access_token调用接口凭证
JSONJSON数据

POST数据示例:

{
    "begin_time": 1472400000,
    "end_time": 1472716604,
    "sort_type": "ASC",
    "offset": 0,
    "count": 2
}

请求参数说明:

参数说明
begin_time查询的时间起点,十位时间戳(utc+8)
end_time查询的时间终点,十位时间戳(utc+8)
sort_type填"ASC" / "DESC",表示对订单创建时间进行“升 / 降”排序
offset查询的订单偏移量,如填写100则表示从第100个订单开始拉取
count查询订单的数量,如offset填写100,count填写10,则表示查询第100个到第110个订单

返回参数说明

返回数据示例:

{
    "errcode": 0,
    "errmsg": "ok",
    "total_count": 47,
    "order_list": [
        {
            "order_id": "Z2y2rY74ksZX1ceuGA",
            "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
            "trans_id": "4001562001201608292531663351",
            "create_time": 123,
            "pay_finish_time": 123,
            "total_price": 123,
            "open_id": "123",
            "accepter_openid": "123",
            "card_list": [
                {
                    "card_id": "card_id_1",
                    "price": 123,
                    "code": "code_123456",
                    "default_gifting_msg": "",
                    "background_pic_url": "",
                    "accepter_openid": "123"
                }
            ],
            "outer_str": "web","IsChatRoom": true
        },
        {
            "order_id": "Z2y2rY74ksZX1ceuGA",
            "page_id": "abcedfghifk=+Uasdaseq14fadkf8123h4jk",
            "trans_id": "4001562001201608292531663351",
            "create_time": 123,
            "pay_finish_time": 123,
            "total_price": 123,
            "open_id": "123",
            "accepter_openid": "123",
            "card_list": [
                {
                    "card_id": "card_id_1",
                    "price": 123,
                    "code": "code_123456",
                    "default_gifting_msg": "",
                    "background_pic_url": ""
                }
            ],
            "outer_str": "web"
        }
    ]
}

返回数据说明:

参数说明  
errcode错误码  
errmsg错误信息  
total_count总计订单数  
order_list订单列表结构  
order订单结构体,包含以下字段  
 order_id订单号 
 page_id货架的id 
 trans_id微信支付交易订单号 
 create_time订单创建时间,十位时间戳(utc+8) 
 pay_finish_time订单支付完成时间,十位时间戳(utc+8) 
 total_price全部金额,以分为单位 
 open_id购买者的openid 
 accepter_openid接收者的openid 
 outer_str购买货架的渠道参数 
 IsChatRoom该订单那对应礼品卡是否发送至群 
 card_list卡列表结构,包含以下字段 
  card_id购买的卡card_id列表
  price该卡的价格
  code用户获得的code
  default_gifting_msg默认祝福语,当用户填入了祝福语时该字段为空
  background_pic_url用户选择的背景图
  accepter_openid礼品卡发送至群时,领取者的openid

注意事项:

1)返回中的total_count是在当前查询条件下的totalcount,类似于分页的实现改变offset/count,直到某次请求的\时表示拉取结束。

2)begin_time和end_time的跨度不能超过31天。

3)count不能超过100。

4) sort_type可以填"ASC" / "DESC",表示对*订单创建时间进行“升 / 降”排序。

10.礼品卡相关事件

特别说明

礼品卡作为金钱交易事务,商家可能自身有对账等需求,所以对商家服务器CallBack保证较高稳定性。

在商家未接受CallBack情况下,在24小时内,最大限度推送,最多30次。

与普通CallBack事件不同,商家在接收到CallBack之后,在Http的协议里,除了在Header中要返回200,还需要在Content中返回:

<xml\>ok</xml\>

以告诉微信平台,商家真正接收到了CallBack并处理成功

否则微信平台将继续重试推送。

10.1、用户购买礼品卡付款成功CallBack

协议

<xml>

<ToUserName><![CDATA[gh_3fcea188bf78]]></ToUserName>

<FromUserName><![CDATA[obLatjgoYejavUtHsWwrX-2GtFJE]]></FromUserName>

<CreateTime>1472631550</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[giftcard_pay_done]]></Event>

<PageId><![CDATA[OQK0R3MaFnCm74Phw5hwFJlz5sn+jy1zzM2amDidDbU=]]></PageId>

<OrderId><![CDATA[Z2y2rY74ksZX1ceuGA]]></OrderId>

</xml>

请求参数说明:

参数说明
ToUserName接收该事件的公众号原始id
FromUserName事件发起人,该事件中标识下单购买人的openid
CreateTime事件创建时间
MsgType消息类型
Event事件类型,此处为giftcard_pay_done标识订单完成事件
PageId货架的id
OrderId订单号

10.2、用户购买后赠送CallBack

协议

<xml>

<ToUserName><![CDATA[gh_3fcea188bf78]]></ToUserName>

<FromUserName><![CDATA[obLatjgoYejavUtHsWwrX-2GtFJE]]></FromUserName>

<CreateTime>1472631550</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[giftcard_send_to_friend]]></Event>

<PageId><![CDATA[OQK0R3MaFnCm74Phw5hwFJlz5sn+jy1zzM2amDidDbU=]]></PageId>

<OrderId><![CDATA[Z2y2rY74ksZX1ceuGA]]></OrderId>

<IsChatRoom>true</IsChatRoom>

<IsReturnBack><![CDATA[true]]></IsReturnBack>

</xml>

请求参数说明:

参数说明
ToUserName接收该事件的公众号原始id
FromUserName事件发起人,该事件中标识下单购买人的openid
CreateTime事件创建时间
MsgType消息类型
Event事件类型,标识礼品卡已被赠送
PageId货架的id
OrderId订单号
IsChatRoom礼品卡是否发送至群,true为是
IsReturnBack标识礼品卡是否因超过24小时未被领取,退回卡包。True时表明超时退回卡包。

10.3、用户领取礼品卡成功CallBack


协议

<xml>

<ToUserName><![CDATA[gh_3fcea188bf78]]></ToUserName>

<FromUserName><![CDATA[obLatjgoYejavUtHsWwrX-2GtFJE]]></FromUserName>

<CreateTime>1472631800</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[giftcard_user_accept]]></Event>

<PageId><![CDATA[OQK0R3MaFnCm74Phw5hwFJlz5sn+jy1zzM2amDidDbU=]]></PageId>

<OrderId><![CDATA[Z2y2rY74ksZX1ceuGA]]></OrderId>

<IsChatRoom>true</IsChatRoom>

</xml>

请求参数说明:

参数说明
ToUserName接收该事件的公众号原始id
FromUserName事件发起人,该事件中领取人的openid
CreateTime事件创建时间
MsgType消息类型
Event事件类型,此处为giftcard_user_accept标识订单完成事件
PageId货架的id
OrderId订单号
IsChatRoom礼品卡是否发送至群,true为是

10.4、赠送24小时对方未领取退回后的事件

若对方24小时未领取,则礼品卡会自动放入用户卡包,则这张卡再次发生转赠和领取时,推送的事件变为普通的转赠-领取事件。

领取

协议

<xml>

<ToUserName> <![CDATA[gh_fc0a06a20993]]> </ToUserName>

<FromUserName> <![CDATA[oZI8Fj040-be6rlDohc6gkoPOQTQ]]> </FromUserName>

<CreateTime>1472551036</CreateTime>

<MsgType> <![CDATA[event]]> </MsgType>

<Event> <![CDATA[user_get_card]]> </Event>

<CardId> <![CDATA[pZI8Fjwsy5fVPRBeD78J4RmqVvBc]]> </CardId>

<IsGiveByFriend>0</IsGiveByFriend>

<UserCardCode> <![CDATA[226009850808]]> </UserCardCode>

<FriendUserName> <![CDATA[]]> </FriendUserName>

<OldUserCardCode> <![CDATA[]]> </OldUserCardCode>

</xml>

请求参数说明:

参数说明
ToUserName接收该事件的公众号原始id
FromUserName事件发起人,该事件中领取人的openid
CreateTime事件创建时间
MsgType消息类型
Event事件类型,此处为user_get_card标识普通卡券领取
CardIdCardid
IsGiveByFriend是否来自好友转赠
UserCardCode用户领取到的code
FriendUserName发起方openid
OldUserCardCode旧的code,若为非自定义code,转赠时微信会变更用户的code,非自定义code的商户不必理会该规则。

转赠

协议

<xml>

<ToUserName><![CDATA[gh_3fcea188bf78]]></ToUserName>

<FromUserName><![CDATA[obLatjjwDolFjRRd3doGIdwNqRXw]]></FromUserName>

<CreateTime>1474181868</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[user_gifting_card]]></Event>

<CardId><![CDATA[pbLatjhU-3pik3d4PsbVzvBxZvJc]]></CardId>

<UserCardCode><![CDATA[297466945104]]></UserCardCode>

<IsReturnBack>0</IsReturnBack>

<FriendUserName><![CDATA[obLatjlNerkb62HtSdQUx66C4NTU]]></FriendUserName>

<IsChatRoom>0</IsChatRoom>

</xml>

请求参数说明:

参数说明
ToUserName接收该事件的公众号原始id
FromUserName事件发起人,该事件中领取人的openid
CreateTime事件创建时间
MsgType消息类型
Event事件类型,此处为user_get_card标识普通卡券领取
CardIdCardid
IsReturnBack是否是转赠退回,1代表是转赠退回,0代表是发起赠送
UserCardCode用户领取到的code
FriendUserName发起方openid
IsChatRoom是否发送到群

11.使用礼品卡

11.1 礼品卡使用方式


scan

线下使用 线上使用

线下使用:开发者制作的礼品卡以二维码或条形码作为扣款识别码,用户到店时,出示二维码/条形码,商户POS识别后请求微信询问身份并进行余额扣减动作。

线上使用:用户购买礼品卡后,在礼品卡面上跳转至商户线上商城进行选择、购买,并在下单时默选择“礼品卡”支付渠道。商户收到扣款请求后,可向微信请求变更余额。

11.2 更新用户礼品卡信息接口

接口说明

当礼品卡被使用后,开发者可以通过该接口变更某个礼品卡的余额信息。

接口调用请求说明

协议HTTPS
http请求方式POST
请求Urlhttps://api.weixin.qq.com/card/generalcard/updateuser?access_token=TOKEN
POST数据格式JSON

请求参数说明

参数说明是否必填
access_token调用接口凭证
JSONJSON数据

POST数据示例:

{
    "code": "12312313",
    "card_id": "p1Pj9jr90_SQRaVqYI239Ka1erkI",
    "background_pic_url": "https://mmbiz.qlogo.cn/mmbiz/0?wx_fmt=jpeg",
    "record_bonus": "消费30元,获得3积分",
    "bonus": 3000,
    "custom_field_value1": "xxxxx",
    "can_give_friend": true
}

请求参数说明:

参数说明是否必填
code卡券Code码。
card_id卡券ID。
background_pic_url支持商家激活时针对单个礼品卡分配自定义的礼品卡背景。
balance需要设置的余额全量值,传入的数值会直接显示。
record_balance商家自定义金额消耗记录,不超过14个汉字。
custom_field_value1创建时字段custom_field1定义类型的最新数值,限制为4个汉字,12字节。
custom_field_value2创建时字段custom_field2定义类型的最新数值,限制为4个汉字,12字节。
custom_field_value3创建时字段custom_field3定义类型的最新数值,限制为4个汉字,12字节。
can_give_friend控制本次积分变动后转赠入口是否出现

返回参数说明

{
    "errcode": 0,
    "errmsg": "ok",
    "result_bonus": 100,
    "result_balance": 200,
    "openid": "oFS7Fjl0WsZ9AMZqrI80nbIq8xrA"
}
参数说明
errcode错误码,0为正常
errmsg错误信息
result_bonus当前用户积分总额
result_balance当前用户预存总金额
openid用户openid
errcode错误码,0为正常
errmsg错误信息

11.3 核销用户礼品卡接口

接口说明

当礼品卡被使用完毕或者发生转存、绑定等操作后,开发者可以通过该接口核销用户的礼品卡,使礼品卡在列表中沉底并不再被使用。

接口调用请求说明

协议HTTPS
http请求方式POST
请求Urlhttps://api.weixin.qq.com/card/code/consume?access_token=TOKEN
POST数据格式JSON

请求参数说明

参数说明是否必填
access_token调用接口凭证
JSONJSON数据

POST数据示例:

{
    "code": "12312313",
    "card_id": "p1Pj9jr90_SQRaVqYI239Ka1erkI"
}

请求参数说明:

参数说明是否必填
code卡券Code码。
card_id卡券ID,自定义code卡券必填,否则非必填。

返回参数说明

{
    "errcode": 0,
    "errmsg": "ok",
}
参数说明
errcode错误码,0为正常
errmsg错误信息

11.4 查询礼品卡信息接口

接口说明

开发者可以通过该接口查询到code对应的信息,如余额、有效期、订单号等,主要用于防止在交易完成后丢单的情况下,用于核销/余额变动时兜底处理。

接口调用请求说明

协议HTTPS
http请求方式POST
请求Urlhttps://api.weixin.qq.com/card/code/get?access_token=TOKEN
POST数据格式JSON

请求参数说明

参数说明是否必填
access_token调用接口凭证
JSONJSON数据

POST数据示例:

{
    "code": "12312313",
    "card_id": "p1Pj9jr90_SQRaVqYI239Ka1erkI"
}

请求参数说明:

参数说明是否必填
code卡券Code码。
card_id卡券ID,自定义code卡券必填,否则非必填。

返回参数说明

{
    "errcode": 0,
    "errmsg": "ok",
    "card": {
        "card_id": "pbLatjoAAyLz6Pt36wGQNfxNrucU",
        "begin_time": 1397577600,
        "end_time": 1662724261,
        "balance": 1,
        "code": "027691806183",
        "card_number": "027691806183"
    },
    "openid": "obLatjjwDolFjRRd3doGIdwNqRXw",
    "can_consume": true,
    "user_card_status": "NORMAL",
    "order_id": "AQAAPdZIMrAvjeoKBmy2rY6RnF1D",
    "background_pic_url": "http://mmbiz.qpic.cn/mmbiz_jpg/ibV1WeaY2IEuMzDp7RjSPib7GOIvMKPucibziaBPS0ialicialKWiaflOHMb5s1jGvCdZ9Z88kBUnfsUjq5Eo9NOGkH1Jg/0"
}
参数说明
errcode错误码,0为正常
errmsg错误信息
card_id礼品卡的card_id
begin_time生效时间
end_time结束时间
bonus当前的积分额度(若没有积分请忽略)
balance当前的余额额度
code礼品卡的code
card_number礼品卡卡面显示的卡号,若没设置则与code相同
openid用户的openid
order_id礼品卡订单号

12.售后流程

12.1 财务对账

商家可以通过接收订单完成事件通知并定时查询成交订单笔数确保交易可对账。同时商家可以登录微信支付商户后台查询具体的交易以及交易详情,进行对账。

12.2 退款、发票流程

按照国家相关法律规定,礼品卡商户须提供退款相关流程,保障用户的合法群益。

商户可以调用退款接口完成退款流程的开发。

目前礼品卡货架支持商户在创建时传入发票和退款的链接,开发者可以开发相应页面处理用户请求。

12.2.1退款接口

接口说明

开发者可以通过该接口对某一笔订单操作退款,注意该接口比较隐私,请开发者提高操作该功能的权限等级。

接口调用请求说明

协议HTTPS
http请求方式POST
请求Urlhttps://api.weixin.qq.com/card/giftcard/order/refund?access_token=ACCESS_TOKEN
POST数据格式JSON

请求参数说明

参数说明是否必填
access_token调用接口凭证
JSONJSON数据

POST数据示例:

{ "order_id": "xxx" }

请求数据说明:

参数说明是否必填
order_id须退款的订单id

返回参数说明

返回数据示例:

{

    "errcode" : 0,
    "errmsg" : "ok"

}

返回数据说明:

字段说明
errcode错误码,0为正常
errmsg错误信息

注意事项:退款后,对应的礼品卡将会在用户卡包消失。

12.2.2 支付后开发票

在创建礼品卡时商户可以填入“need_reciept”字段,即可开启支付后开票的功能,用户可以再支付成功的凭证消息上点入开具发票的页面,并填入抬头等信息,提交后微信将会通过事件通知的方式推送到商户的服务器。

image

12.2.2.1 整体流程

设置微信支付后开具电子发票须遵循以下步骤:

步骤1:商户通过接口设置支付后开票的商户号、appid以及s_appid等信息并设置开票页用户需要填写的信息

步骤2:商户设置抬头页面用户需要填写的字段信息;

步骤3用户支付完成后,在微信栏目【我】-【钱包】中点击右上角菜单打开【交易记录】,进入对应订单的【交易详情】,在页面中能看到【开具发票】按钮。填写发票的相关项目内容,【确认开票】后微信会反馈受理结果。开票请求受理成功后,微信会给用户发送已开票通知(如关注商户公众号,会通过该公众号下发已开具的通知,否则通过服务通知下发);
步骤4商户接收用户授权开票的信息,并将开票请求发送至开票平台,并由开票平台将发票下发给商户;

12.2.2.2设置支付后开票功能

设置支付后开票信息

接口说明

商户可以通过该接口设置某个商户号发生收款后在支付消息上出现开票授权按钮。

请求

url:

https://api.weixin.qq.com/card/invoice/setbizattr?action=set_pay_mch&access_token={access_token}

请求方法:POST

请求参数

数据格式:JSON

参数类型是否必填描述
paymch_infoObject授权页字段

paymch_info包含以下字段:

参数类型是否必填描述
mchidString微信支付商户号
s_pappidString开票平台id,需要找开票平台提供

返回参数

数据格式:JSON

参数类型是否必填描述
errcodeInt错误码
errmsgString错误信息

示例

{
    "paymch_info": {
        "mchid": "1234",
        "s_pappid": "wxabcd"
    }
}

返回:

{ "errcode": 0, "errmsg": "ok" }

查询支付后开票信息接口

请求

url:

https://api.weixin.qq.com/card/invoice/setbizattr?action=get_pay_mch&access_token={access_token}

请求方法:POST

请求参数

数据格式:JSON

数据为空,传{}

返回参数

数据格式:JSON

参数类型是否必填描述
errcodeInt错误码
errmsgString错误信息

当错误码为0是,有以下信息:

参数类型是否必填描述
paymch_infoObject授权页字段

paymch_info包含以下字段:

参数类型是否必填描述
mchidString微信支付商户号
s_pappidString开票平台id,需要找开票平台提供

示例

请求:

{}

返回:

{
    "errcode": 0,
    "errmsg": "ok",
    "paymch_info": {
        "mchid": "1234",
        "s_pappid": "wxabcd"
    }
}

12.2.2.3 设置开票页面信息接口

设置授权页字段信息接口

使用说明

商户可以通过该接口设置用户授权时应该填写的内容

请求说明

url:

https://api.weixin.qq.com/card/invoice/setbizattr?action=set_auth_field&access_token={access_token}

请求方法:POST

请求参数

数据格式:JSON

参数类型是否必填描述
auth_fieldObject授权页字段

auth_field包含以下字段:

参数类型是否必填描述
user_fieldObject授权页个人发票字段
biz_fieldObject授权页单位发票字段

user_field包含以下字段:

参数类型是否必填描述
show_titleInt是否填写抬头,0为否,1为是
show_phoneInt是否填写电话号码,0为否,1为是
show_emailInt是否填写邮箱,0为否,1为是
custom_fieldObject自定义字段

biz_field包含以下字段:

参数类型是否必填描述
show_titleInt是否填写抬头,0为否,1为是
show_tax_noInt是否填写税号,0为否,1为是
show_addrInt是否填写单位地址,0为否,1为是
show_phoneInt是否填写电话号码,0为否,1为是
show_bank_typeInt是否填写开户银行,0为否,1为是
show_bank_noInt是否填写银行帐号,0为否,1为是
custom_fieldObject自定义字段

custom_field为list,每个对象包含以下字段:

参数类型是否必填描述
keyString自定义字段名称,最长5个字

返回参数

数据格式:JSON

参数类型是否必填描述
errcodeInt错误码
errmsgString错误信息

示例

{
    "auth_field": {
        "user_field": {
            "show_title": 1,
            "show_phone": 1,
            "show_email": 1,
            "custom_field": [
                {
                    "key": "field1"
                }
            ]
        },
        "biz_field": {
            "show_title": 1,
            "show_tax_no": 1,
            "show_addr": 1,
            "show_phone": 1,
            "show_bank_type": 1,
            "show_bank_no": 1,
            "custom_field": [
                {
                    "key": "field2"
                }
            ]
        }
    }
}

返回:

{
    "errcode": 0,
    "errmsg": "ok"
}

备注

默认会显示个人发票的title和单位发票的title

查询授权页字段信息接口

接口说明

开发者可以通过该接口查看授权页抬头的填写项。

请求说明

url:

https://api.weixin.qq.com/card/invoice/setbizattr?action=get_auth_field&access_token={access_token}

请求方法:POST

请求参数

数据格式:JSON

数据为空,传{}

返回参数

数据格式:JSON

参数类型是否必填描述
errcodeInt错误码
errmsgString错误信息

当错误码为0是,有以下信息:

参数类型是否必填描述
auth_fieldObject授权页字段

auth_field包含以下字段:

参数类型是否必填描述
user_fieldObject授权页个人发票字段
biz_fieldObject授权页单位发票字段

user_field包含以下字段:

参数类型是否必填描述
show_titleInt是否填写抬头,0为否,1为是
show_phoneInt是否填写电话号码,0为否,1为是
show_emailInt是否填写邮箱,0为否,1为是
custom_fieldObject自定义字段

biz_field包含以下字段:

参数类型是否必填描述
show_titleInt是否填写抬头,0为否,1为是
show_tax_noInt是否填写税号,0为否,1为是
show_addrInt是否填写单位地址,0为否,1为是
show_phoneInt是否填写电话号码,0为否,1为是
show_bank_typeInt是否填写开户银行,0为否,1为是
show_bank_noInt是否填写银行帐号,0为否,1为是
custom_fieldObject自定义字段

custom_field为list,每个对象包含以下字段:

参数类型是否必填描述
keyString自定义字段名称,最长5个字

请求示例

请求: {} 返回: { "errcode": 0, "errmsg": "ok", "auth_field": { "user_field": { "show_title": 1, "show_phone": 1, "show_email": 1, "custom_field": [{"key": "field1"}] }, "biz_field": { "show_title": 1, "show_tax_no": 1, "show_addr": 1, "show_phone": 1, "show_bank_type": 1, "show_bank_no": 1, "custom_field": [{"key": "field2"}] } } }
 

12.2.2.4接收开票事件

接口描述

用户授权完成后,商户会收到授权完成的事件,并请求开票平台进行开票。

关于事件推送请参考:

http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025274&token=&lang=zh_CN

请求参数

数据格式:xml

参数类型描述
ToUserNameString公众号标识
FromUserNameString用户openid
CreateTimeInt事件时间
MsgTypeString固定为event
EventString固定为user_authorize_invoice
SuccOrderIdString授权成功的订单号
FailOrderIdString授权失败的订单号
AppIdString用于接收事件推送的公众号的AppId
SourceString授权来源,web表示来自微信内H5,app标识来自app

示例

<xml> 
  <ToUserName> <![CDATA[gh_fc0a06a20993]]> </ToUserName>  
  <FromUserName> <![CDATA[oZI8Fj040-be6rlDohc6gkoPOQTQ]]> </FromUserName>  
  <CreateTime>1475134700</CreateTime>  
  <MsgType> <![CDATA[event]]> </MsgType>  
  <Event> <![CDATA[user_authorize_invoice]]> </Event>  
  <SuccOrderId> <![CDATA[1202933957956]]> </SuccOrderId>  
  <FailOrderId> <![CDATA[]]> </FailOrderId>
  <AppId> <![CDATA[]]> </AppId>
  <Source> <![CDATA[]]> </Source>
</xml>

12.2.2.5查询开票信息

接口说明

用户完成授权后,商户可以调用该接口查询某一个订单

请求格式

URL:
https://api.weixin.qq.com/card/invoice/getauthdata?access_token={access_token}

请求方法:POST

协议:HTTPS

请求参数

数据格式:POST

参数类型是否必填描述
order_idstring发票order_id
s_appidString发票平台的身份id

返回参数

数据格式:POST

参数类型是否必填描述
errcodeInt错误码
errmsgString错误信息

当错误码为0是,有以下信息:

参数类型描述
invoice_statusString订单授权状态,见备注
auth_timeInt授权时间,为十位时间戳(utc+8)
user_auth_infoJSON用户授权信息结构体,仅在type=1时出现

user_auth_info是一个JSON结构,包含以下结构

参数类型描述
user_fieldJSON个人类型发票的授权信息结构体
biz_fieldJSON单位类型发票的授权信息结构体
titleString个人/单位抬头
phoneString个人/单位联系电话
emailString个人邮箱
titleString单位抬头
tax_noString单位税号
addrString单位注册地址
bank_typeString单位开户银行
bank_noString单位开户银行账号
custom_fieldJSON商户自定义信息结构体

user_auth_info是一个JSON结构,包含以下结构

参数类型描述
keyString商户自定义填写项名称
valueString商户自定义填写项用户填写的信息

请求示例

{
    "s_pappid": "{s_pappid}",
    "order_id": "{order_id}"
}

返回数据:

个人抬头:{
    "errcode": 0,
    "errmsg": "ok",
    "invoice_status": "auth success",
    "auth_time": 1480342498,
    "user_auth_info": {
        "user_field": {
            "title": "Dhxhhx ",
            "phone": "5554545",
            "email": "dhxhxhhx@qq.cind",
            "custom_field": [
                {
                    "key": "field1",
                    "value": "管理理论"
                }
            ]
        }
    }
}

单位抬头:{
    "errcode": 0,
    "errmsg": "ok",
    "invoice_status": "auth success",
    "auth_time": 1480342897,
    "user_auth_info": {
        "biz_field": {
            "title": "王xx",
            "tax_no": "6464646766",
            "addr": "后过敏",
            "phone": "1557548768",
            "bank_type": "仔仔细细",
            "bank_no": "545454646",
            "custom_field": [
                {
                    "key": "field2",
                    "value": "哈哈哈啊"
                }
            ]
        }
    }
}

12.2.2.6 开具发票

商户收到上述信息后,须将信息转发至对应的开票平台进行开票,若该开票平台支持了电子发票,可开具电子发票,若不支持电子发票则可以采取寄送的方式开票。

13.3 在线客服

商家可以在货架的售后帮助页面定义一个自定义cell为在线客服,用户跳转时会将该用户的订单信息以及身份信息带至页面内,商户可以根据订单组织在线客服对话,帮助消费者完成售后流程。

14.备注

14.1 礼品卡卡面外链跳转协议

当用户在礼品卡跳转至商户自定义center_url、custom_url、promotion_url,跳转时会在GET参数中带入openid、encrypt_code和card_id。

encrypt_code为加密码码,需调用解码接口获取真实Code码。
假如指定的url为http://www.qq.com

用户点击时,跳转的url则为:

http://www.qq.com?encrypt_code=ENCRYPT_CODE&card_id=CARDID&openid=xxxx&outer_str=xxxxx

解码code接口请见:code解码接口

当用户在礼品卡跳转至商户自定义center_url、custom_url、promotion_url对应的小程序时,跳转时开发者可以在小程序的Page.onshow获取到对应的参数。

14.2礼品卡货架外链跳转协议

当用户在订单详情页跳转至商户自定义的售后流程处理cell中的url时,跳转时会在GET参数中带入order_id和openid

比如原本数据是:

https://mp.weixin.qq.com

将会变成

https://mp.weixin.qq.com/?order_id=Z2y2rY4UxUZYitvVGA&openid=oAAAAAKe1ri5AAaAiB50-Ak6Vs1w

openid为该用户在该上上商户下的身份识别id,order_id为该必订单的唯一识别id。

15.优惠功能

商户可以设置微信支付代金券或者立减金,控制仅微信礼品卡渠道使用,创建活动时,须设置goods_tag为mmbizgiftcard并保证本商户号其他订单不传入该goods_tag。

16.联系我们

若在调试过程中遇到技术问题,

请发送邮件至wx_card\@tencent.com

反馈格式如下:

邮件标题:【礼品卡货架反馈】xxxxx

问题描述:xxxx

出现问题的page_id:xxxxx

出现问题用户的微信号:xxx

出现问题的时间点:xxxxx

联系方式:手机号/微信号

2019-09-30 21:26:01 jay100500 阅读数 1196

在这里插入图片描述

开篇引入一个 Flutter 的所跨平台的图片。图中大概列了一下 Flutter 未来所跨的平台, Flutter 有 Google Flutter 技术团队的不断迭代开发,相信Flutter将是未来的主流跨平台开发框架。本节课笔者将会根据近一段时间的 Flutter 的开发实践和技术研究实践进行一个总结和整理,将 Flutter 和 Dart 开发中遇到的一些难点、问题、技巧和解决方案给大家分享一下,避免大家遇到相同的问题耽误时间,降低开发和学习成本,做到事半功倍、提升开发和学习效率。接下来大家一起学习吧。本文主要介绍:

  • Flutter 和 Dart 简介
  • Flutter 和 Dart 开发实践中的技巧和难点
  • Flutter 和 Dart 的未来展望

Flutter 和 Dart 简介

在这里插入图片描述
Flutter 是 Google 推出并开源的移动端开发框架(基于 Dart 语言)。Dart 是由 Google 开发的一种面向对象编程的强类型语言,语法有点像 Java 与 JavaScript 的集合体。Flutter 使用 Skia 作为2D渲染引擎,也就是我们看到的界面是通过 Skia 进行绘制渲染出来的。Skia 是 Google 的一个2D图形处理函数库,并且 Skia 是跨平台的。目前 Google Chrome 浏览器和Android均采用Skia作为其绘图引擎。由于 Android 系统已经内置了 Skia ,所以 Flutter 在打包 Android 应用时不需要再将 Skia 打入 APK 中,但 IOS 系统并未内置 Skia ,所以构建 IOS 应用时,也必须将 Skia 一起打包,这也是为什么 Flutter 应用的 Android 安装包比IOS的安装包小的主要原因。

其实目前的鸿蒙系统也是类似 Flutter 和 Fuchsia OS,只不过 Flutter 和 Dart 推出的比较早,技术也比较成熟。未来的 Flutter 将全面跨主流平台:Android、IOS、Windows(研发中)、Mac(研发中)、Linux(研发中)、Fuchsia OS(研发中)、Web(研发中)、物联网系统(研发中)、后端、前端等等。
其中很多人期待的Web SDK应该今年内左右可能会发布一个比较完善的版本。

Flutter 有 Google 团队的支持,目前开发者数量也指数级在上升。目前很多大公司都有应用 Flutter 进行项目的开发,如 Google 、阿里巴巴、京东、腾讯、 Square 等公司都有应用。Flutter的独特的优势已经吸引了大量的开发者和公司进行学习和使用,并且Flutter的社区、文档、SDK更新频率等相关资源越来越完善和强大,我们有理由去学习Flutter和Dart。希望大家通过本门课程有很大的提升和收获,一起努力,一起学习,一起进步。
在这里插入图片描述
目前 Flutter 的最新版本是1.7:
在这里插入图片描述
Flutter 基础架构图:
在这里插入图片描述
Flutter 详细架构图:
在这里插入图片描述
Flutter 跨平台特点:
目前我们在开发应用时,需要同时兼容 iOS 和 Android 两种平台时有两种技术选择:走原生开发路线,把界面和逻辑在不同平台分别实现;抑或用同一套代码兼容多个平台,但这往往意味着运行速度和产品体验的损失。除了原生外,目前跨平台技术一般是混合开发,如采用H5、React Native、Weex、小程序等技术实现跨平台应用。不过这些或多或少都能感觉到卡顿和体验不流畅,并且开发和学习成本非常高,而且都有各自的局限性。Flutter的出现就是为我们提供了一套两全其美的解决方案:既能用原生代码直接调用的方式来加速图形渲染和 UI 绘制,又能同时运行在两大主流移动操作系统上,并且体验和流畅度和原生基本一致、开发效率也非常高、学习难度和成本低。那么接下来看下几种方案的对比情况:

技术 性能 开发效率 渲染方式 学习成本 可扩展性
Flutter 高,接近原生体验 Skia高性能自绘引擎 低,Widget组件化 高,采用插件化的库进行扩展
RN/Weex/小程序 有延迟,一般 一般,复杂、效率低 Js驱动原生渲染 高,复杂 一般
原生应用 一般 原生渲染 高,需要学习Android和IOS原生API

从上面的对比可以看出,Flutter的优势明显:高体验度、高开发效率、低学习成本、高可扩展性、未来Google Flutter团队还将使Flutter支持PC和Web的跨平台开发等。 在Flutter 1.0正式版本尚未推出之前,已经有成百上千的基于 Flutter 开发的应用在 Apple Store 和 Google Play 上架,相信Flutter将会被越来越多的开发者和公司所采用和接受。

最后我们回顾下2018年和2019年Flutter的发展情况:

  • 2 月底在世界移动大会 (MWC) 上宣布了第一个 Beta 版发布;
  • 5 月的 Google I/O 大会上发布了 Beta 3;
  • 6 月底的 GMTC 宣布了首个发布预览版;
  • 9 月的谷歌开发者大会 (Google Developer Days) 上,我们宣布 发布预览版 2 发布。
  • 12 月宣布发布正式稳定1.0版;
  • 2019年 2 月宣布发布稳定版1.2版本SDK。
  • 2019年 5 月宣布发布稳定版1.5版本SDK。

目前Flutter的社区非常活跃,Flutter 在 Github 最受欢迎的开源软件中排名前 50,国内也有大量的开发者开始使用 Flutter 构建跨平台 (Android & iOS) 的应用,如:阿里巴巴、腾讯、京东等都使用 Flutter 发布了自己的应用。Google官方Flutter团队计划Flutter未来也将支持Flutter Web和Flutter PC的应用移植开发,让我们拭目以待吧!

好了,关于 Flutter 的详细介绍我们就讲到这里,大家应该都对 Flutter 和 Dart 都非常熟悉了。接下来咱们就开门见山,把遇到的一个一个的问题和对应的解决方案进行讲解分享。

Flutter 和 Dart 开发实践中的技巧和难点

本文讲解使用的是 Windows 10 开发环境,编辑器 IDE 使用 Android Studio 和 Visual Studio Code 。

1、SDK下载和升级慢?

可以看到主要有dev、beta和stable三个官方分支,这里正式开发的话可以下载stable稳定版本。遇到SDK升级和下载慢的话,可以使用配置国内镜像环境变量:
可以将如下的国内下载镜像地址加入到环境变量中:

变量名:PUB_HOSTED_URL,变量值:https://pub.flutter-io.cn
变量名:FLUTTER_STORAGE_BASE_URL,变量值:https://storage.flutter-io.cn

Flutter SDK环境变量,将Flutter的bin目录加入环境变量即可:

[你的Flutter文件夹路径]\flutter\bin

配置完后,可以使用flutter doctor命令,它可以帮助我们检查Flutter环境变量是否设置成功,Android SDK是否下载以及配置好环境变量等等。如果有相关的错误提示,根据提示进行修复和安装、设置即可。每次运行这个命令,都会帮你检查是否缺失了必要的依赖。通过运行 flutter doctor 命令来验证你是否已经正确地设置了,并且可以自动更新和下载相关的依赖。

2、模拟器使用不方便,Android模拟器无法连接安装应用?

如遇到Error connecting to the service protocol:HttpException: Connection closed before full header was received,uri= http://127.0.0.1:1076/...类似的错误的话,一般是由于你使用了Android Q(API 29)的模拟器导致的,目前Android Q模拟器对Flutter支持有些问题,所以建议遇到这个问题的话,使用Anroid Q(API 29)以下的版本的模拟器。

模拟器置顶。
我们的Android原生模拟器是支持置顶的:
在这里插入图片描述
勾选就可以置顶了。

模拟器快速启动。
当我们通过Android Studio的AVD Manager新建了一个模拟器后,我们后续就可以通过建立一个bat文件快速启动模拟器了。在这个bat文件中写入启动模拟器的命令,这样每次启动模拟器直接运行这个bat文件即可:

D:\Sdk\emulator\emulator.exe -avd Pixel_XL_API_28

模拟器所在的SDK目录根据你的实际情况位置修改即可。使用时双击这个bat文件就可以运行模拟器了。

3、Flutter 和 Dart 升级出错?

关于 Flutter 和 Dart 升级的话,我们可以通过flutter upgrade命令进行升级。当遇到提示需要使用 Power Shell 5.0及以上版本的话,说明你的机器是 windows 7系统或者 Power Shell 版本低于5.0,这里你或者升级Power Shell版本,或者升级 Windows 操作系统到 Windows 10,当然最好是直接去 Flutter 和 Dart 官方分别直接下载最新版本 SDK 的压缩包解压覆盖旧版本即可。

4、遇到Waiting for another flutter command to release the startup lock…?

此时需要打开Flutter SDK的bin目录:flutter/bin/cache/lockfile,删除这个文件就行了。

5、Flutter引入资源图片和字体等的使用?

Flutter的应用内资源图片和字体等的使用,必须要在pubspec.yaml配置文件里进行配置才可以使用。

//项目名称:要用英文,类似于Android中的包名,如果它修改了整个项目的引入的路径都要修改
//所以一般确定了就不要修改
name: flutter_samples
//项目描述
description: A new Flutter project.

//版本号,这个会覆盖对应Android和IOS的应用版本号
//+号前对应Android的versionCode,+号后对应Android的versionName
//+号前对应IOS的CFBundleVersion,+号后对应IOS的CFBundleShortVersionString
version: 1.0.0+1

//表示项目的编译环境要求为dart sdk版本号在2.1.0和3.0.0之间
environment:
  sdk: ">=2.1.0 <3.0.0"


//项目的依赖插件库
//Flutter插件库在这里查找引用:https://pub.dartlang.org/flutter
dependencies:
  flutter:
    sdk: flutter
//我们可以在这里引入插件库
  cupertino_icons: ^0.1.2
  flutter_webview_plugin: ^0.3.1

dev_dependencies:
  flutter_test:
    sdk: flutter

//flutter相关配置
flutter:
//是否使用material图标,建议为true
  uses-material-design: true

  //配置项目文件里的图片路径
  //如果需要使用项目目录内附带的图片、音视频等资源,必须在这里配置定义
  assets:
    - images/a_dot_burr.jpeg
    - images/a_dot_ham.jpeg

  //字体文件资源相关配置
  fonts:
    - family: Schyler
      fonts:
        - asset: fonts/Schyler-Regular.ttf
        - asset: fonts/Schyler-Italic.ttf
          style: italic
    - family: Trajan Pro
      fonts:
        - asset: fonts/TrajanPro.ttf
        - asset: fonts/TrajanPro_Bold.ttf
          weight: 700

//下面这几项一般只有在编写插件库发布到Dart Pub时才写,一般不用写  
//作者
authors:
- Natalie Weizenbaum <nweiz@google.com>
- Bob Nystrom <rnystrom@google.com>
//主页
homepage: https://example-pet-store.com/newtify
//文档地址
documentation: https://example-pet-store.com/newtify/docs
//发布到
publish_to: none

如果遇到配置完都不可以使用的情况,请注意配置文件的缩进和格式,是不是多了或者少了一个空格导致的,同时也要注意路径是否正确等。

6、Flutter打包成release版本后,安装不能联网和访问文件?

可能是没有添加相应的访问权限,Android应用需要在AndroidManifest.xml里添加相应的权限,并且注意Android 6.0后部分危险分类内的权限需要主动申请才可以使用。具体的权限名称和如何申请权限大家可以自行百度或者使用第三方插件库实现申请权限功能。

7、Dart中var、dynamic、Object的区别和关系?

Object 是 Dart 所有对象的基类,也就是说所有类型都是 Object 的子类。所以任何类型对象都可以声明为 Object 类型,但是一般不这么用。一般声明为 var 或者 dynamic 类型。

var 它可以接收任何类型的变量,但最大的不同是 Dart 中 var 变量一旦赋值,类型便会确定,后面则不能再改变其类型。

dynamic和var相似,只不过它声明的类型,后续可以进行修改其类型。

8、Dart中final和const的区别和关系?

final 和 const 所声明的变量只能赋值一次,后续不能重新赋值更改。final 和 const 不是var,也不是一个类型。使用了 final 和 const 修饰的变量类型声明可以省略,并且不可以与var同时使用。类级别的常量,通常用 static const 来声明。

两者区别在于:const 变量是一个编译时常量,编译时必须有一个确定的值;final 是运行时常量,运行时有一个确定的值即可。举个例子:

final dt = DateTime.now();//正确,运行时有确定的值
 
const dt = const DateTime.now();//错误,需要编译时有确定的值

9、Dart中异步操作:Future、Stream及async和await的使用?

跟其他平台一样,Flutter 和 Dart 中也有异步操作函数。

返回为 Future 或者 Stream 对象的函数,这些函数被称为异步函数。例如返回的Future对象可以方便我们进行后续的链式调用和操作,类似于 RxJava 和 Promise 。举个例子:

Future.delayed(new Duration(seconds: 2),(){
   //return "hi world!";
   throw AssertionError("Error");
}).then((data){
   //执行成功会走到这里 
   print(data);
}).catchError((e){
   //执行失败会走到这里   
   print(e);
}).whenComplete((){
   //无论成功或失败都会走到这里
});

多个异步的操作:

Future.wait([
  // 2秒后返回结果  
  Future.delayed(new Duration(seconds: 2), () {
    return "hello";
  }),
  // 4秒后返回结果  
  Future.delayed(new Duration(seconds: 4), () {
    return " world";
  })
]).then((results){
  print(results[0]+results[1]);
}).catchError((e){
  print(e);
});

当所有任务都执行完毕后才一起返回结果。

Dart 中的 async/await 和 JavaScript 中的 async / await 功能和用法基本是一模一样的。需要配合一起使用:

task() async {
   try{
    String id = await login("alice","******");
    String userInfo = await getUserInfo(id);
    await saveUserInfo(userInfo);
    //执行接下来的操作   
   } catch(e){
    //错误处理   
    print(e);   
   }  
}

async 修饰方法名为异步,await 为内部的耗时操作进行标记。

Stream 也是用于接收异步事件数据,和Future 不同的是,它可以接收多个异步操作的结果。 举个例子:

Stream.fromFutures([
  // 1秒后返回结果
  Future.delayed(new Duration(seconds: 1), () {
    return "hello 1";
  }),
  // 抛出一个异常
  Future.delayed(new Duration(seconds: 2),(){
    throw AssertionError("Error");
  }),
  // 3秒后返回结果
  Future.delayed(new Duration(seconds: 3), () {
    return "hello 3";
  })
]).listen((data){
   print(data);
}, onError: (e){
   print(e.message);
},onDone: (){

});

我们的listen里会输出每个任务结束后的结果。如果有3个任务,它就会分3次输出返回的结果。

10、Android启动有一个白屏闪现怎么处理?

在android/app/src/main/res/drawable/launch_background.xml中定义了自定义修改启动页splash的方法:

<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" />

    <!-- You can insert your own image assets here -->
    <!-- <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/launch_image" />
    </item> -->
</layer-list>

我们可以将白色修改为透明色,或者更换为一张图片都可以。

11、Flutter如何获取屏幕宽高信息?

Flutter的屏幕宽高等信息都是通过MediaQuery.of(context).size.来获取的:

double width = MediaQuery.of(context).size.width;
double height = MediaQuery.of(context).size.height;

12、Flutter布局浸入到了手机状态栏如何处理?

使用SafeArea包裹一下布局最外层即可:

SafeArea(top: true,
    child: MaterialApp(
        home: ,
    ),);

13、Flutter如何全屏和取消全屏?

全屏:

SystemChrome.setEnabledSystemUIOverlays([]); 

取消全屏:

SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top, SystemUiOverlay.bottom]);

14、Flutter如何设置屏幕支持的方向?

// 设置竖屏
SystemChrome.setPreferredOrientations([
          DeviceOrientation.portraitUp,
          DeviceOrientation.portraitUp,
        ]);
// 设置横屏
SystemChrome.setPreferredOrientations([
          DeviceOrientation.landscapeLeft,
          DeviceOrientation.landscapeLeft,
        ]);

15、Flutter如何取消和设置标题栏左侧的图标?

设置左侧图标:

appBar: AppBar(
        leading: Icon(Icons.menu),
        automaticallyImplyLeading: true,)

取消左侧图标:

appBar: AppBar(
        leading: null,
        automaticallyImplyLeading: false,)

16、Flutter布局或者文字超过边界被裁剪了怎么处理?

如果控件超出屏幕范围后想自动换行,可以尝试使用Wrap组件进行包裹使用。
如果不行的话,例如Row里的两个子控件,我们可以尝试将Row里的子控件用Expanded包裹起来,这样就可以实现超过屏幕自动换行不被裁剪了。

17、Flutter右上角有个debug标志,如何去掉?

这个是调试模式下默认自带的,当正式打成release包时就没有了。如果你想在开发时候也不显示这个标志,只需要在main.dart里配置一个属性即可:

MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.teal,
        ),
        home: ShowAppPage(),
        routes: <String, WidgetBuilder>{
          '/buttonpage': (BuildContext context) => ButtonSamples(),
          '/routepage': (BuildContext context) => RouteSamples(),
        },
        // 设置为false就不现实debug标志了
        debugShowCheckedModeBanner: false,
      )

18、Flutter如何动态控制显示和隐藏某个布局或组件?

可以使用Offstage组件,动态控制其offstage属性值即可实现这个效果。

19、Flutter如何禁止GridView类似的列表组件禁止滚动或添加滚动回弹效果?

Flutter 中禁用 GridView 的滚动,可以使用 physics 属性,取值为NeverScrollableScrollPhysics()
如果添加滚动回弹效果依然是设置 physics 属性,取值为BouncingScrollPhysics()

20、Flutter如何监听某个组件已经渲染完毕?

监听某个组件是否已经渲染完成,使用 WidgetsBinding ,方法是在 initstate 或者 build 中注册回调:

WidgetsBinding.instance.addPostFrameCallback((callback){
      print("complete");
    });

21、Flutter如何设置定时任务,定时器?

    // 开始计时
   _startTimer(){
   var _timer = Timer.periodic(new Duration(seconds: 1), (timer){
       // 编写自己的逻辑
      setState(() {});
    });
  }
    // 取消计时
  _cancleTimer(){
    _timer?.cancel();
  }

22、Flutter如何监听按键?

Flutter监听按键用RawKeyboardListener:

const RawKeyboardListener({
    Key key,
    @required this.focusNode,//焦点结点
    @required this.onKey,//按键接收处理事件
    @required this.child,//接收焦点的子控件
  })

举个例子:

FocusNode focusNode0 = FocusNode();

... ...

RawKeyboardListener(
      focusNode: focusNode0,
      child: Container(
        decoration: getCircleDecoration(color0),
        child: Padding(
          child: Card(
            elevation: 5,
            shape: CircleBorder(),
            child: CircleAvatar(
              child: Text(''),
              backgroundImage: AssetImage("assets/icon_tv.png"),
              radius: radius,
            ),
          ),
          padding: EdgeInsets.all(padding),
        ),
      ),
      onKey: (RawKeyEvent event) {
        if (event is RawKeyDownEvent && event.data is RawKeyEventDataAndroid) {
          RawKeyDownEvent rawKeyDownEvent = event;
          RawKeyEventDataAndroid rawKeyEventDataAndroid = rawKeyDownEvent.data;
          print("keyCode: ${rawKeyEventDataAndroid.keyCode}");
          switch (rawKeyEventDataAndroid.keyCode) {
            case 19: //KEY_UP
              FocusScope.of(context).requestFocus(_focusNode);
              break;
            case 20: //KEY_DOWN
              break;
            case 21: //KEY_LEFT
              FocusScope.of(context).requestFocus(focusNode4);
              break;
            case 22: //KEY_RIGHT
              FocusScope.of(context).requestFocus(focusNode1);
              break;
            case 23: //KEY_CENTER
              break;
            case 66: //KEY_ENTER
            break;
            default:
              break;
          }
        }
      },
    )

23、Flutter如何设置焦点控制?

Flutter Widget 获取焦点的处理通过 FocusScope 这个 Widget 处理,配合FocusNode。

FocusNode focusNode0 = FocusNode();
... ...
//主动获取焦点
FocusScope.of(context).requestFocus(focusNode0);
//自动获取焦点
FocusScope.of(context).autofocus(focusNode0);

这样就可以进行焦点获取处理了。FocusNode 这个类也很重要,负责监听焦点的工作。

焦点的移动我们用最新的 DefaultFocusTraversal 进行自动指定方向,搜索下一个焦点:

FocusScope.of(context)
                    .focusInDirection(TraversalDirection.up);
// 或者像下面这样使用
DefaultFocusTraversal.of(context).inDirection(
                    FocusScope.of(context).focusedChild, TraversalDirection.up);

DefaultFocusTraversal.of(context)
                    .inDirection(_focusNode, TraversalDirection.right);

支持上下左右四个方向。 如果想手动指定下一个焦点是哪个的话,可以像下面这样用:

FocusScope.of(context).requestFocus(focusNode);

24、Flutter如何监听一些生命周期事件?

我们先了解下生命周期的概念,也就是一个页面对象从创建到销毁的整个状态管理。我们看下Flutter的State生命周期的示意图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ep8pSO4C-1569849191792)(images/flutter_all/state.jpg)]
可以看到我们的一个页面在加载创建时需要执行:
构造函数 -> initState -> didChangeDependencies -> build方法,然后才会渲染为一个页面。

当销毁关闭时:
deactivate -> dispose

内部的前后台页面状态变化主要有:

enum AppLifecycleState {
  // 恢复可见
  resumed,
  // 不可见,后台运行,无法处理用户响应
  inactive,
  // 处在并不活动状态,无法处理用户响应。例如来电,画中画,弹框
  paused,
  // 应用被立刻暂停挂起,ios上不会回调这个状态
  suspending,
}

当页面更新是会执行:
didUpdateWidget -> build
可能会调用多次。

那么接下来通过代码实例来看下Flutter的生命周期:

import 'package:flutter/material.dart';

class StateSamples extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return StateSamplesState();
  }
}

class StateSamplesState extends State<StateSamples>
    with WidgetsBindingObserver {
  //插入渲染树时调用,只调用一次
  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
  }

  //构建Widget时调用
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('LifeCycleState'),
      ),
      body: Center(
        child: Column(
          children: <Widget>[],
        ),
      ),
    );
  }

  //state依赖的对象发生变化时调用
  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
  }

  //组件状态改变时候调用,可能会调用多次
  @override
  void didUpdateWidget(StateSamples oldWidget) {
    super.didUpdateWidget(oldWidget);
  }

  //当移除渲染树的时候调用
  @override
  void deactivate() {
    super.deactivate();
  }

  //组件即将销毁时调用
  @override
  void dispose() {
    super.dispose();
    WidgetsBinding.instance.removeObserver(this);
  }

  //APP生命周期监听
  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    if (state == AppLifecycleState.resumed) {
      //恢复可见
    } else if (state == AppLifecycleState.paused) {
      //处在并不活动状态,无法处理用户响应
      //例如来电,画中画,弹框
    } else if (state == AppLifecycleState.inactive) {
      //不可见,后台运行,无法处理用户响应
    } else if (state == AppLifecycleState.suspending) {
      //应用被立刻暂停挂起,ios上不会回调
    }
    super.didChangeAppLifecycleState(state);
  }

  //其他方法

  //热重载时调用
  @override
  void reassemble() {
    super.reassemble();
  }

  //路由弹出
  @override
  Future<bool> didPopRoute() {
    return super.didPopRoute();
  }

  //新的路由
  @override
  Future<bool> didPushRoute(String route) {
    return super.didPushRoute(route);
  }

  //系统窗口相关改变回调,例如旋转
  @override
  void didChangeMetrics() {
    super.didChangeMetrics();
  }

  //文字缩放大小变化
  @override
  void didChangeTextScaleFactor() {
    super.didChangeTextScaleFactor();
  }

  //本地化语言变化
  @override
  void didChangeLocales(List<Locale> locale) {
    super.didChangeLocales(locale);
  }

  //低内存回调
  @override
  void didHaveMemoryPressure() {
    super.didHaveMemoryPressure();
  }

  //当前系统改变了一些访问性活动的回调
  @override
  void didChangeAccessibilityFeatures() {
    super.didChangeAccessibilityFeatures();
  }

  //平台色调主题变化时
  @override
  void didChangePlatformBrightness() {
    super.didChangePlatformBrightness();
  }
}

25、Flutter如何监听返回按键?

我们看下返回键的监听,返回键监听拦截在Flutter中比较不一样。
是单独使用一个组件:WillPopScope。
接下来就通过一个实例来看下Flutter中实现连按两次返回键退出的效果:

class KeyListenerState extends State<KeyListenerSamples> {
  int last = 0;
  int index = 0;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    // 要用WillPopScope包裹
    return WillPopScope(
      // 编写onWillPop逻辑
      onWillPop: _onWillPop,
      child: Scaffold(
          appBar: AppBar(
            title: Text('KeyListener Demo'),
          ),
          body: Center(
            child: Text("按键监听"),
          )),
    );
  }
  
  // 返回键拦截执行方法
  Future<bool> _onWillPop() {
    int now = DateTime.now().millisecondsSinceEpoch;
    print(now - last);
    if (now - last > 1000) {
      last = now;
      // showToast("再按一次返回键退出");
      return Future.value(false); //不退出
    } else {
      return Future.value(true); //退出
    }
  }
}

26、Flutter如何JSON编解码?

我们这里只讲解最基础的编解码,复杂的需要创建Model的建议借助三方库。如Flutter官方提供了一个插件库:json_serializable。

当我们去请求网络数据接口或者缓存某些结构数据时,一般都会用到JSON数据交换格式。JSON在移动端、后端、前端中应用都非常广泛。在Flutter中JSON格式的解析使用 'dart:convert’里的函数类进行编解码处理。
我们看一个最简单的编解码使用的例子:

// JSON解码
// 定义一个JSON格式字符串
String _jsonString = '{"name": "Flutter Book","author": "Google"}';

// 使用json.decode进行解码
Map<String, dynamic> book = json.decode(_jsonString);

// 解码后调用获取值
Column(
    children: <Widget>[
        Text('Book Name:${book['name']}'),
        Text('Book Author:${book['author']}'),
    ],
));

// 再看下JSON编码
// 使用json.encode将实体对象编码为JSON字符串
String _bookJson = json.encode(book);

怎么样,用起来是不是很简单,这些只是最简单的例子。实际开发中可能会遇到更加庞大、复杂嵌套的JSON结构。

// 如果是一个List集合的JSON字符串的话
String _jsonListString =
      '[{"name": "Flutter Book","author": "Google"},{"name": "Dart Book","author": "Google"}]';

// 解码成List
List books = json.decode(_jsonListString);

// 调用取值
print(books[0]["name"]);

27、Flutter Hero动画是做什么的?

Flutter Hero动画是专门用来做页面跳转效果的,例如一个页面跳转到另一个页面,可以使用一些过渡动画和效果。

Hero动画主要用于页面跳转切换时的某个Widget的过渡跳转动画效果,也叫共享元素过渡动画。用户从页面中选择一个元素(通常是一个图像),然后打开所选元素的详情页面。这个过程中元素和页面执行的动画就是Hero共享元素过渡动画。

例如我的一个页面有一个头像,点击头像跳到另一个页面,头像有一个动画,新页面打开也有一个过渡动画。

我们先看下Hero动画的基本使用方式:

  • 先要在页面A和页面B分别定义一个Hero Widget,并且设置相同的tag值,这样才可以匹配;
  • 路由里配置从页面A跳转到页面B;
  • 点击跳转执行动画。

Hero 动画执行过程: Flutter框架会根据这两个Hero Widget计算出一个补间矩形 ,将这个补间矩形作为一个中间的遮罩层作为动画过渡。在跳转过程中,页面A的Hero Widget会跳转到中间遮罩层,然后进入到页面B。

28、Flutter 可以开发TV应用吗?

勉强可以,不过非常麻烦,开发效率低,焦点处理非常不方便。并且开发出来的应用性能很差,在某些机顶盒上非常卡顿,消耗很大资源。建议使用原生Anroid进行机顶盒开发,有Google Android TV官方支持,也有相应的库支持。

29、Flutter 根目录的main.dart可以改名或者移动到其他目录吗?

不可以,这个是 Flutter 入口文件类,固定的名称和内部逻辑。

30、Flutter 如何实现复制到剪贴板?

  ///复制到剪贴板
  void setClipData(String text) {
    Clipboard.setData(ClipboardData(text: text));
  }

31、Flutter 和Dart 目前还可以做哪些方面的开发?

Flutter目前是移动Android和IOS端的应用研发,基础功能都可以实现,一些需要原生支持的可以使用插件。实在插件都没有的话,需要自己的编写插件库进行实现原生的功能。

Flutter 的 Web 开发目前已经有官方示例了:flutter.github.io/samples

正式版本Flutter Web SDK应该很快了。

Dart 的话目前可以开发后端服务器了,可以写接口及相关的后端和服务器逻辑,已经测试。

Dart 目前还可以替代 JS 编写 Dart 版本的 JS 逻辑。

32、Flutter 时间类如何使用?

使用DateTime这个类。

var now = DateTime.now();
  String time = now.year.toString() +
      "-" +
      now.month.toString() +
      "-" +
      now.day.toString() +
      "  " +
      now.hour.toString() +
      ":" +
      now.minute.toString() +
      ":" +
      now.second.toString();

还有很多方法,具体用法大家可以进行API调用查看,非常简单。

33、Flutter 如何设置状态栏颜色和图标颜色?

可以通过 AppBar 的 brightness 或者 ThemeData 去设置状态栏颜色。

但是如果不想用 AppBar ,那么我们还可以嵌套 AnnotatedRegion 去设置状态栏样式,通过 SystemUiOverlayStyle 就可以快速设置状态栏和底部导航栏的样式。

同时还可以通过 SystemChrome.setSystemUIOverlayStyle 去设置,前提是没有使用 AppBar 。需要注意的是,所有状态栏设置是全局的,如果在 A 页面设置后,B 页面没有手动设置或者使用 AppBar ,那么这个设置将直接呈现在 B 页面。

34、如何查看某个应用或某个页面是否是使用 Flutter 写的?

目前Android 平台的应用通过开启开发者模式里的:开发者选项 -> 显示布局边界 分辨出来。原生应用的每个控件都会用边框分割出来,而 Flutter 的应用页面无边界分割,是个整体的SurfaceView。

Flutter 和 Dart 的未来展望

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XwiWWhyP-1569849191793)(images/flutter_all/reflectly-hero-600px.png)]
Google公司于2018年12月5日发布了Flutter 1.0正式版,大半年的时间过去了,Flutter最新版本已经到了V1.8.4了,更加的完善和稳定。Dart的最新版本已经到了v2.5.0版本。Flutter和Dart的更新频率很快,并且官方维护的一些插件库和开发者提交的插件库已经越来越多,相关的文档、资源也越来越多,Flutter生态也已经逐步完善。

Flutter目前发展

Flutter从1.0正式版发布的大半年的时间里,开发者数量、插件库数量等都在指数级增长,吸引了来自全球各个国家的开发者和科技公司,目前Flutter已经成为最热门的开源项目之一了。当然,Flutter在国内的发展也非常的迅猛。在 StackOverflow 2019 年的全球开发者问卷调查中,Flutter 被选为最受开发者欢迎的框架之一,超过了 TensorFlow 和 Node.js。
在这里插入图片描述
全球已经有很多大家熟悉的公司采用了 Flutter进行研发,包括很多国内的知名公司。比如阿里巴巴、腾讯、京东、美团等。
在这里插入图片描述
来自丹麦的 Reflectly应用,已经率先采用了Flutter进行重写了客户端,一套Flutter代码编写了Android和IOS端Reflectly应用。
在这里插入图片描述
在国内,Flutter的开发者和社区非常的活跃,其中最令人激动的就是:在今年Google I/O 前举办的全球 Flutter Create 大赛中,来自中国广东的胡泽标凭借一个特别精致的罗盘应用摘得了Flutter Create全球大奖。
在这里插入图片描述
获奖证书:
在这里插入图片描述
更多参赛作品及源码可以在:https://flutter.dev/create 这里进行查看和学习。

前面我们介绍过,Flutter会支持大部分的主流平台,一套语言、一套逻辑就可以实现跨多平台。如:Android、IOS、Web、PC、Fuchsia OS、物联网等主流平台。
在这里插入图片描述

Fuchsia OS

除了Flutter外,Google的Fuchsia OS也已经成为了一个未来的热门操作系统,虽然还没有推出正式版本,但是它的目标和特点已经吸引了一大批开发者和学习爱好者。Flutter和Dart开发的应用是Fuchsia OS默认支持的。早在2016年,Google秘密研发Fuchsia操作系统的就被首次曝光。Fuchsia OS是一套可运行在手机、平板、PC等平台的跨平台系统,放弃Linux内核,而是基于Zircon微核,采用Flutter引擎+Dart语言编写。预测可能在2020~2021年Fuchsia OS正式版将会推出使用,或许会替代Android系统。据传,Google已经聘请了有着10多年Mac OS开发经验的资深苹果系统开发工程师Bill Stevenson来操盘Fuchsia,目标是推向成熟市场。华为的很多设备也已经很早就配合Flutter和Fuchsia OS进行了测试。我们也期待Fuchsia OS可以早日推出。

Flutter Web

在这里插入图片描述
除了Flutter移动平台外,可能最引入瞩目的就是Flutter Web(https://flutter.dev/web) 的支持了,虽然Web SDK正式版还没有发布,不过通过预览测试版我们就可以有理由相信Flutter Web将会大大简化我们开发Web页面的成本。无需编写繁杂的CSS和JS、HTML,一套Flutter代码就轻松搞定一个Web页面系统。

目前,Flutter for Web 的示例应用在桌面浏览器基本能达到每秒 60 帧的渲染速度。但是在移动浏览器,特别是在低端机型上还有很大的优化空间。

Flutter Web官方的测试预览例子可以在:flutter.github.io/samples 进行学习和体验,目前通过这几个例子来看,效果非常的不错。
在这里插入图片描述
Flutter for Web 目前处在技术预览阶段,相信很快会推出正式版本。

Flutter 桌面和嵌入式

Flutter 也将支持桌面PC平台。目前处于研发实验阶段。未来可以用Flutter开发Mac、Windows 和 Linux 、Chrome OS 、Fuchsia OS上运行的 Flutter 应用。

Flutter桌面的实验性项目:https://github.com/google/flutter-desktop-embedding
Flutter 桌面的早期说明:https://github.com/flutter/flutter/wiki/Desktop-shells

Flutter未来也将支持在嵌入式设备商进行开发和运行,例如在Raspberry Pi 等小型设备上运行 Flutter 应用。

Flutter嵌入式示例:https://medium.com/flutter-io/flutter-on-raspberry-pi-mostly-from-scratch-2824c5e7dcb1

Flutter嵌入式 API:https://github.com/flutter/flutter/wiki/Custom-Flutter-Engine-Embedders

目前项目处于实验测试阶段。

Flutter 游戏

在 Google I/O’19 期间,Flutter 团队和 2Dimensions 联合发布了一款运营 / RPG 游戏: Flutter Developer Quest。除了作为游戏本身在游戏性上毫不缩水外,代码也完全开源。这是一项Flutter在游戏开发上的新的尝试和应用拓展。

游戏源代码地址:https://github.com/2d-inc/developer_quest

Flutter Developer Quest,是一款完全由 Flutter 开发构建的游戏,游戏已经在 App Store 和 Google Play 上进行免费下载体验。Flutter Developer Quest 是一款基于屏幕进行交互的 RPG 类游戏,游戏展示了许多最新的 Flutter 功能。

这是一个新的拓展和尝试,大家可以自行进行游戏源码的阅读和学习。

Flutter 近期展望

Flutter的近期动态已经在FlutterGithub主页的Github wiki 上进行了公开。当然我们也可以关注:谷歌开发者这个微信公众账号获取更多更新的动态消息。
在这里插入图片描述
地址:https://github.com/flutter/flutter/wiki/Roadmap ;
https://github.com/dart-lang/language

“accepted” 目录中的为工程实施阶段,“working” 目录中的为设计阶段,大家可以持续关注。
Flutter和Dart都在按照计划进行加紧研发中。相信不久我们便可以看到一些关于Flutter和Dart的新的东西。

总结

关于 Flutter 和 Dart 开发相关的分享就暂时这么多,后续遇到了相关问题继续更新和分享。也欢迎广大读者反馈问题及解决方案,一起进步、一起学习、一起分享。

Android安全防护

阅读数 7093