- wx.getLocation报"errCode":404错误
定位分为网络定位&Gps定位,具体逻辑如下: 1.定位权限&定位开关开启&有sim卡的情况下会使用GPS定位,定位较准 2.不满足上述条件,但连了wifi,会通过网络定位,较不准确 3.网络定位都失败了就会报错
2020-12-04 - localstorage 清理机制是怎样的?
请问一下,localStorage 存储的数据在什么情况下会被清理,文档上只提了一句 本地缓存的清理时机跟代码包一样,只有在代码包被清理的时候本地缓存才会被清理。 有没有更详细的一些说明?
2023-07-26 - scroll-view 组件 iOS设置100vh 滚动超出屏幕,安卓机型无问题
iOS 只需要加上refresher-enabled 属性 滚动就会超一屏 或者开启refresher-enabled 关闭enhanced 属性 即可恢复正常 [视频]
2023-05-27 - 关于新版隐私协议接口wx.onNeedPrivacyAuthorization的适配解读以及实现代码
官方公告地址: https://developers.weixin.qq.com/community/develop/doc/00042e3ef54940ce8520e38db61801 目前,开发工具或者体验版的小程序,调试基础库如果是2.33.0及以上就得适配了,线上版本9月15日之后生效,所以这之前需要尽快改完,发布一版,否则到了9月15号之后 线上就会生效报错了。 其实改起来也很简单,以下是实现步骤和代码: 1、首先看一下这个网址,里边包含涉及到的隐私的接口,这些接口都要适配一下 https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/miniprogram-intro.html [图片] 在以上接口用到的页面,需要画一下类似上边的弹窗(这个弹窗可以全局定义个组件,方便多个页面共用),然后里边蓝字可以点击后调用wx.openPrivacyContract(Object object)接口即可,会自动跳转打开隐私协议页面。 拒绝按钮可以加一个点击事件,然后在事件里这样写 [图片] 同意按钮比较特殊,布局需要用button这样写,记得给button加一个Id [图片] 然后在handleAgreePrivacyAuthorization里就可以获取到点击事件,这样写 [图片] 2、最后需要在onLoad或者onShow里加上以下监听代码,在这里边让自定义的隐私弹窗显示出来即可。 [图片] 以上代码加上就可以了,如果业务逻辑用到了需要判断是否授权过,可以加上 wx.getPrivacySetting(Object object)去获取是否授权过,用不到可以不加这个判断。
2023-08-16 - 官方说存在web-view的页面,不支持分享朋友圈。但我看有小程序实现了,请问怎么实现的?
[图片] 这里是加载了公众号文章的网页,应该只能用web-view实现吧,但是可以分享朋友圈,请问是怎么实现的?
2023-06-09 - 微搭低代码xChatGPT,五步搭建AI聊天机器人小程序
[图片] ChatGPT最近大火,让原本已经沉寂许久的AI领域再次被唤醒狂欢。但是还是有很多朋友受限于OpenAI对国内用户的限制,无法愉快地体验这项革命性的AIGC技术。 众所周知,ChatGPT 是一个基于 GPT-3 的聊天机器人模型,能够通过分析提问内容生成流畅的自然语言结果,我们除了可以在 OpenAI 的ChatGPT官网上体验,也可以通过调用官方API来获取 ChatGPT 机器人模型进行训练和体验。 本文将向您展示如何使用低代码工具,在30分钟左右搭建一个基于 ChatGPT 的聊天机器人小程序。一方面能让拥有OpenAI账号的朋友能随时随地体验ChatGPT;另一方面,也希望通过教程学习搭建出AI聊天小程序,去分享给更多人,把前沿的AI技术普惠到更广泛的群体,一起体验AIGC技术所带来的便利。 我们这次就以腾讯云微搭低代码作为搭建平台,来演示一下应该如何快速开发一个基于ChatGPT的聊天机器人应用,即便是新手开发者也可以试试哦 一、准备工作 在开始搭建聊天机器人之前,您需要做以下准备: 微信小程序账号:如果您还没有微信小程序账号,可以在微信公众平台注册(如果没有小程序,也可以发布为移动端H5应用) 开通腾讯云微搭低代码:微搭低代码是腾讯云官方推出的一款快速搭建应用的低代码开发工具,可以直接访问腾讯云微搭官网免费开通注册 OpenAI账号:OpenAI账号注册也是免费的,不过OpenAI有地域限制,这里网上教程关键词搜索一大把,就不做赘述了。注册成功后,可以登录OpenAI的个人中心来获取[代码]API KEY[代码] 本教程适用人群和应用类型: 适用人群:初级开发者(操作门槛较低,有一定技术背景的非开发者也可以体验) 应用类型:小程序 或 H5应用(基于微搭一码多端特性,也可以直接发布为Web应用,点击文末链接可体验作者微搭搭建的Web版GPT聊天机器人) 二、搭建聊天机器人 首先,一个常见的聊天对话机器人应用界面效果,如下图所示: [图片] 通过应用界面可以看到,它主要由如下几个部分组成: 一个对话聊天界面 一个API数据查询接口 界面UI与后端数据的联动渲染 那现在,我们就参照上面的几个模块,正式开始通过微搭低代码工具,分5个步骤来依次拆解搭建: 1.对应用界面进行样式配置 [图片] 我们先拖入一个滚动容器和一个普通容器,一个用来展示聊天的上下文对话,一个用来展示输入框和发送按钮。然后依次拖入图中大纲树所示的组件,组件相应的层级关系可以参考上图中的大纲树结构。 接下来针对上述的组件分别进行样式的配置,我们默认使用样式面板的弹性(Flex)布局,包含接收消息和发送消息两个普通容器,可以分别选择样式面板中的弹性布局中的左对齐,如下图所示: [图片] 接着可以分别配置图片和文本两个组件的高度和宽度大小以及内外间距,以达到想要的视觉效果。 完成聊天上下文对话框的样式配置之后,可以进行底部多行输入框和按钮这个普通容器的样式配置,样式配置方式与上面的发送消息容器一样使用弹性布局并选择“平分”的方式布局,如下图所示: [图片] 完成布局配置之后,由于底部输入框按钮等是固定位置的,故需要额外配置一下定位属性,选中底部的“普通容器”,在样式面板底部,做如下配置即可: [图片] 以上,通过进一步微调一些样式细节如组件背景色以及间距等后,即可达到上文提到的应用界面效果了。 可以看到整个页面的配置过程是完全可视化操作的,不需要写一行代码。当然,如果样式配置不是很熟悉,或者有疑问的朋友,也可以等我们的视频教程,手把手教你用微搭低代码来配置AI聊天应用。 2. 配置数据变量和数据源API 第2步,开始进行数据的绑定和数据源的配置: a. 新建一个数组对象变量chatList,用于存储聊天记录 [图片] 首先配置一个变量,如命名为chatLlist聊天记录这么一个变量,一个对象数组,默认值为如下所示,当然大家也可以基于这个结构任意修改。 [代码][ { "res": "你好,欢迎体验ChatGPT聊天机器人,你可以直接输入你感兴趣的任何问题向我提问", "req": "红孩儿是牛魔王的亲儿子吗?", "index": 1 }, { "res": "不是,红孩儿是牛魔王的养子。据西游记中的记载,牛魔王是一个孤独的怪物,他在深山里住了很久,没有子女,却有一个养子——红孩儿,红孩儿的父母去世时,牛魔王便收养了他。", "req": "那谁教他的三味真火", "index": 2 } ] [代码] 接着把这个数组变量的初始值跟我们的这个页面的内容分别进行绑定。首先我们选择一个父级的普通容器,在属性配置的循环展示绑定为刚刚新建的数组变量。然后在里面的子节点中,如文本组件,分别绑定这个数组中的成员变量,他们的配置如下图所示: [图片] [图片] 这一步数据绑定完成之后,接下来就可以去配置请求远程数据的数据源API了。 b. 配置一个数据源APIs(用于请求Chat GPT接口) API的配置相对比较简单,主要参考OPENAI的官方文档,文档中可以看到文本对话接口对应的请求参数信息如下: [代码]curl https://api.openai.com/v1/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_API_KEY" \ -d '{"model": "text-davinci-003", "prompt": "Say this is a test", "temperature": 0, "max_tokens": 7}' [代码] 分别把上方的CURL请求头信息对应到HTTP的请求中即可,配置项参考如下: [图片] 我们通过数据源中的【方法测试】,得到API的返回结果如下,点击【出参映射】即可完成出参结构的配置: [代码]{ "id": "cmpl-GERzeJQ4lvqPk8SkZu4XMIuR", "object": "text_completion", "created": 1586839808, "model": "text-davinci:003", "choices": [ { "text": "\n\nThis is indeed a test", "index": 0, "logprobs": null, "finish_reason": "length" } ], "usage": { "prompt_tokens": 5, "completion_tokens": 7, "total_tokens": 12 } } [代码] 其中的[代码]API_KEY[代码]是在完成OPENAI账号注册之后,在其个人中心中获取即可,至于OPENAI的账号注册方式,大家动动手搜索一下,网上教程很多就不啰嗦了。 3. 给发送按钮绑定请求事件 我们在第1步中已经在页面中放置了输入框、按钮和文本展示等组件。接下来,我们需要给输入框配置相关的事件响应逻辑,来获取用户输入的消息内容,参考的关键配置如下: [图片] 然后,给按钮绑定事件来处理输入框中用户发送的消息,选择按钮组件,在右侧事件面板中配置如下逻辑,即 点击按钮 时触发API请求,并将获取到的API返回结果渲染在页面中。 [图片] 4. 将API返回数据 与 在页面中进行渲染展示 第4步,将返回值用“变量赋值”方法加入到chatList数组中 [图片] 这里我们需要在数据中增加一条新的消息,采用表达式绑定的方式进行原有的[代码]ChatList[代码]变量进行解构后再赋值,表达式参考如下: [代码][ ...$page.dataset.state.chatList, { req: $page.dataset.state.text, res: "" } ] [代码] 5. 完成开发,进行应用发布 前端界面和后端数据逻辑都配置开发完成后,可在应用编辑器的右上角点击“发布”按钮,我们可以选择发布到 已绑定的小程序,也可以直接发布移动端的H5应用,如下所示: [图片] 至此,一个基础的AI聊天机器人应用搭建就完成了。 三、进一步完善 基于上述步骤搭建完聊天机器人小程序后,你还可以进一步完善它的功能。 例如,您可以在小程序中添加聊天记录功能,让用户可以查看过往的聊天记录。您也可以使用其他自然语言处理技术;例如语音识别和文本分类,来使聊天机器人更加智能。 如需要存储聊天历史记录的话,可以在数据源中配置一个“聊天历史记录”数据模型,参考模型配置如下: [图片] 总之,使用微搭低代码搭建聊天机器人小程序,对于熟悉低代码或者喜欢钻研能力的朋友来说,确实是一件非常简单而有趣的事情。当然如果确实对界面样式配置不是很熟悉,或者其他有疑问的朋友,也可以关注漫话开发者公众号后续视频教程,手把手教你用微搭低代码来配置AI聊天机器人应用。 通过本教程的介绍,你已经基本熟悉了如何使用微搭低代码快速搭建基于 ChatGPT 的聊天机器人了,有任何疑问也欢迎关注漫话开发者公众号留言。点击右侧链接,可以立即体验作者搭建的Web版GPT聊天机器人。 也欢迎关注「漫话开发者」低代码系列文章: 微信支付x低代码,快速构建支付类小程序实操教程 小程序消息推送x微搭低代码,微信消息推送快速上手实操教程 四、附录Q/A 腾讯云微搭低代码平台,连接微信和企微用户,帮助企业快速定制和构建移动协同办公应用,让信息和流程流转更高效。3分钟可视化搭建和发布小程序、H5、Web等多端应用。快速搭建企业专属的业务管理平台,表单流程等办公和管理类应用,提供企业级账号和权限管控等能力。 在搭建聊天机器人应用过程中,你可能会遇到一些问题,下面是常见问题的解决方法: i. 机器人无法回复:这可能是因为 ChatGPT 机器人模型无法理解用户的问题。可以尝试使用更加具体的问题,或者尝试使用不同的自然语言处理模型。 ii. 机器人回复不流畅:这可能是因为 ChatGPT 机器人模型生成的回复不够流畅或在服务器在境外所致。可以尝试调整模型的「[代码]temperature[代码]」参数,使生成的回复更加流畅。 iii. 机器人回复内容不准确:这可能是因为 ChatGPT 机器人模型无法理解用户的问题,或者因为模型没有学习到足够的知识。可以尝试使用更加具体的问题,或者尝试使用不同的自然语言处理模型。 iv. 如果遇到其他低代码配置问题,可以尝试在微搭社区或通过网上搜索中寻求帮助。 点击右侧链接,可以立即体验作者搭建的Web版聊天机器人 最后,上述教程文本都通过ChatGPT校验,enjoy~
2023-02-09 - [干货]新一轮用户授权改版来了,肝起来吧!
废话不多说,直奔主题。感谢TX团队赞助,不然没机会通宵!以下思路,仅供参考。 公告开山 [图片] 改造原有授权逻辑 原来通过getUserProfile接口拿到userinfo数据,仍然不变。仅对返回结果加一次判断; [代码]wx.getUserProfile && wx.getUserProfile({ lang: 'zh_CN', desc: "desc", success: ({ userInfo }) => { if (userInfo?.nickName === '微信用户') { // 跳转至新建的资料修改页面 return } // 同步用户资料信息 api.updateUserinfo(userInfo) }, fail: (error) => { // 跳转至新建的资料修改页面 } }) [代码] 资料修改页面 页面 此处需要注意的是, 头像组件有最低版本兼容要求。而昵称填写则可以忽略版本兼容性。此处不赘述昵称填写 兼容性处理 [代码]data: { supportAvatarInput: compareVersion(version, '2.21.2') >= 0, } [代码] [代码]<!-- 代码有省略,见下 --> <button wx:if="{{supportAvatarInput}}" open-type="chooseAvatar"></button> <button wx:else></button> [代码] 页面美化 由于官方没有直接提供头像选择效果的组件可供直接使用,而是以button的形式。因此需要我们自行处理,不过也很简单position + opacity即可; 先上效果图: [图片] [代码]<view class="__input-wrapper"> <image class="avatar" src="{{avatarUrl}}"></image> <button wx:if="{{supportAvatarInput}}" class="opacity-button" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar"></button> <button wx:else class="opacity-button" catchtap="handleChooseImage"></button> </view> [代码] [代码].__input-wrapper{ position: relative; top: 0; left: 0; } .__input-wrapper .avatar { width: 120rpx; height: 120rpx; border-radius: 50%; } .__input-wrapper .opacity-button{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 9; opacity: 0; padding: 0 !important; margin: 0 !important; } [代码] 到此,界面完工。接下来开始处理头像上传问题。 业务逻辑 先来处理头像上传组件本身的事件, 此处有个坑。官方的头像上传不支持裁剪,因此需要用到更新的cropImage这个API。 所以我们先来实现图片裁剪功能, 依然是注意兼容性。因为目前是从2.26.0才开始支持。 [代码] cropAvatar(url){ return new Promise((resolve, reject) => { try { if (wx.cropImage) { wx.cropImage({ src: url, cropScale: "1:1", success({ tempFilePath }) { if (!tempFilePath) return reject(Error('处理失败,未获取到路径')) resolve(tempFilePath) }, fail(error) { reject(Error(error.errmsg || error.errMsg)) } }) return } // 低版本兼容 // 此处可弹窗提醒用户手动裁剪为1:1 if (wx.editImage) return wx.editImage({ src: url, success({ tempFilePath }) { if (!tempFilePath) return reject(Error('处理失败,未获取到路径')) resolve(tempFilePath) }, fail(error) { reject(Error(error.errmsg || error.errMsg)) } }) // 其他情况返回原url resolve(url) } catch (error) { reject(error) } }) } [代码] 考虑到用户上传的图片可能会很大。也可以继续设计一个压缩图片的方法。 此处又是一个坑,官方的compressImage API模拟器上会返回错误的tempFilePath方法(真机目前没有) [代码]compressImage(url){ return new Promise(async (resolve, reject) => { // 指定压缩为480px * 480px const COMPRESS_SIZE = 480 try { const { width, height } = await this.getImageInfo(url) const size = Math.ceil(Math.sqrt(width * height)) if (size <= COMPRESS_SIZE) throw Error(`当前图片尺寸为 ${width} * ${height} (${size}) , 已符合压缩规则,忽略压缩`) const quality = Math.ceil(COMPRESS_SIZE * 100 / size) if (!wx.compressImage) throw Error("当前基础库版本太低,请升级微信客户端") wx.showLoading({ title: '压缩中', }) wx.compressImage({ src: url, quality: quality, // 以下高版本支持,低版本仍考虑 quality compressedWidth: COMPRESS_SIZE, compressHeight: COMPRESS_SIZE, success({ tempFilePath }) { if (!tempFilePath) return reject(Error('处理失败,未获取到路径')) // 检查后缀是否存在, 应对模拟器返回错误的tempFilePath问题 if (!/^.*\.(.+)$/.test(tempFilePath)) return reject(Error('SDK错误,压缩路径不正确')) resolve(tempFilePath) }, fail(error) { reject(Error(error.errmsg || error.errMsg)) }, complete() { wx.hideLoading({}) } }) } catch (error) { reject(error) } }) } [代码] 到此准备工作已就绪。 新坑来袭 又一个坑, 此处通过头像上传的url并非和之前一样。这次的是个临时链接,不能直接存储至数据库使用。因此需要服务端提供头像上传的接口。前端调用wx.uploadFile API上传。 此处不赘述 处理头像组件的回调 [代码]async onChooseAvatar({ detail }) { let url = detail.avatarUrl // 裁剪 url = await this.cropAvatar(url) // 压缩 try { url = await this.compressImage(url) } catch (error) { console.error('头像压缩失败:', error) } try { // 此处是上传接口调用。 根据自己需要改造即可 const { avatarUrl } = await app.$http.post({ url: '/upload', header: { 'content-type': 'multipart/form-data' }, data: { name: 'picture', filePath: url, }, timeout: 30 * 1000, loading: '上传中' }) this.setData({ avatarUrl: avatarUrl }) app.$Toast("上传成功") } catch (error) { wx.showModal({ content: `${error.message || "上传失败,请稍后再试"}`, showCancel: false }) } } [代码] 别忘了还有个低版本的适配, 这个简单。 不过这个还是有低版本兼容处理 [代码]handleChooseImage() { try { let self = this if (wx.chooseMedia) { return wx.chooseMedia({ count: 1, mediaType: 'image', async success(res) { const tempFilePath = res?.tempFiles[0]?.tempFilePath if (!tempFilePath) return app.$Toast("选取失败,请稍后再试") // 此处复用之前的头像上传回调 await self.onChooseAvatar({ detail: { avatarUrl: tempFilePath } }) }, fail() { app.$Toast("头像修改失败 请稍后再试") } }) } wx.chooseImage({ count: 1, async success(res) { const tempFilePath = res?.tempFilePaths[0] if (!tempFilePath) return app.$Toast("选取失败,请稍后再试") await self.onChooseAvatar({ detail: { avatarUrl: tempFilePath } }) }, fail() { app.$Toast("头像修改失败 请稍后再试") } }) } catch (error) { app.$Toast("当前版本太低,建议您先升级微信客户端") } }, [代码] 总结 希望这是最后一次 低版本兼容性要注意, 狂放的小伙伴可以设置最低版本库,一劳永逸 头像和昵称组件,自带了安全识别功能。因此会比较慢,需要吐槽的是头像图片的鉴黄识别有点拉跨,经常误报。 如果你看到提示”当前头像不可用“之类的提示,不要担心是代码问题 图片裁剪API才出, 所以在此之前官方是没有考虑到的。吐血 官方其他的bug也该修修了,就比如compressImage里模拟器返回的路径 写的仓促,如有不对,请多指正! 一点小宣传 已经第一时间接入cropImage了,很香。 欢迎体验!! 附小程序码: [图片] 体验路径 : 我的 -> 左上角”设置“ -> 个人信息修改 大家还有什么想说的! 欢迎评论区交流
2023-02-13 - 虚拟业务指南请收好。
在小程序生态中,基于苹果运营规范,小程序内暂不支持iOS端虚拟支付业务。为此小编为大家整理了一份虚拟支付业务指南,希望大家在做虚拟业务时有所帮助: [视频] 那么,到底什么是虚拟支付业务呢? 虚拟支付业务是指购买非实物商品。比如:VIP会员、充值、录制课程、录制音频视频等虚拟产品。目前iOS端暂不支持虚拟支付业务。 我们常见iOS虚拟支付的不合规示例有哪些呢? 示例一 :小程序内存在付费购买虚拟内容或道具。商品多体现为提前编辑好的、录制好的虚拟商品。如录制视频课程、游戏道具。 整改建议 :建议去除小程序内所有付费购买虚拟服务,并根据提示修改相关内容及文案,文案可参照“由于相关规范,iOS功能暂不可用”。 [图片] 示例二 :付费解锁优质服务。多体现为提供虚拟商品的小程序可通过支付购买、开通虚拟会员等形式,体验小程序付费服务。比如:支付阅读章节小说、同城生活服务平台付费发帖/付费置顶等。 整改建议 :建议可以关闭iOS端虚拟支付通道,并将【马上充值】更改为【由于相关规范,iOS功能暂不可用】,并不再提供iOS端会员服务。 [图片] 示例三 :关闭iOS端虚拟支付功能后,虚拟商品页面仍然保留货架价格标签展示、购买/付费/订阅等功能或按钮。 整改建议 :建议去除小程序中的虚拟商品的价格展示,并更改为【免费】;并将【订阅 ¥128】更改为【由于相关规范,iOS功能暂不可用】,并不再提供iOS端虚拟商品购买服务。 [图片] 示例四 :关闭iOS端虚拟支付功能后,提供引导用户前往其他支付的路径/文案,完成虚拟支付闭环。 整 改建议 :建议去除iOS端小程序内引导用户前往其他支付路径/文案,并不再提供iOS端虚拟商品购买服务。 [图片] 示例五 :小程序含需要付费的虚拟商品,并设置限时免费的服务,限时免费结束后需付费才能继续提供服务。 整改建议 :建议将iOS端小程序中所有虚拟付费内容更改为免费,并不再提供iOS端虚拟商品购买服务。 [图片] 示例六 :关闭iOS端虚拟支付功能后,小程序中虚拟产品页面不可以含有付费性质的关键字(如:购买、已购、付费、支付等),包括但不限于功能按钮、功能页面、支付提示及任何商品介绍等。 整改建议 :建议将小程序iOS端虚拟产品页面中的文案/按钮/功能tab含有限制的关键字更改为【免费】或删除。并不再提供iOS端虚拟商品购买服务。 [图片] 如小程序内存在以上不合规的虚拟支付内容,请开发者重视并及时整改。对于首次违规的小程序,平台将下发站内信整改通知,并给予三天整改时间,请开发者按照提示在限期内完成整改。平台将会对到期未完成整改的小程序进行搜索策略调整,并在小程序功能使用上进行一定的限制,直到小程序完成内容整改。
2020-04-23 - 获奖公布 | 微信支付4月有奖征文活动
2021年4月,为期1个月的微信支付有奖征文活动在大家的踊跃参与下画上了圆满的句号,我们由衷地向所有参与本次活动的微信支付用户表示感谢,也向获奖的作者表示祝贺。 依据评选方式及活动规则,以下是本次活动礼品及获奖名单: [图片]*礼品说明:礼品选自微信支付为商户定制的官方礼品,由物料服务运营组提供。 出类拔萃奖: 如何用十个月时间,做出一款迄今为止无法超越的微信支付SDK基础开发包 北望沣渭微信支付服务商应知必会,带你入门(合集)最后更新时间2021-04-18 Memory 礼品:微信支付行李箱 *1 精选文章奖: ASP.NET Core 微信支付 大稳·杨「干货分享」一文了解微信优惠券产品(卡券、代金券、商家券) Dylan Asp.Net Core3.1 微信支付、退款v3 JSAPI 魏杨杨个人微信支付新手攻略整理 青寒 一遍适用于新加入商户平台小白使用的制券发券流程 우리隨心~靖礼品:微信支付保温壶/移动电源 随机 *1 幸运锦鲤奖: 一个老年人的微信支付流水账回忆ASP.NET Core 微信支付(安装版)帮助其他个体开通微信支付,需要申请微信支付服务商对接微信支付的时候在微信公众号上支付一切正常, 在微信小程序支付时候提示支付验证签名失败微信发劵小插件使用记录三行代码搞定V3版微信支付接口微信支付商户免充值代金券接口升级验收脚本 用例组合1001+1002+1003+1004+1005(强迫症专用)微信支付服务商成长历程-「做支付务必了解的央行政策文件」更新时间 2021-04-18免充值产品测试验收用例的wechatpay-axios-plugin教学帖微信支付商户免充值代金券接口升级验收脚本(NodeJS版) 用例组合1001+1002+1003+1004+1005你可能忽略的微信支付相关运营工具微信支付v3python版本对接成功后的总结一次网络问题排查解决微信支付商户经营工具-「企业付款到零钱」产品介绍及开通使用过程中的问题说明付款码支付个人见解#微信支付 微信支付分账产品及能力整理微信支付商户风控处理-「企业付款订单交易场景说明」应该怎么写(适用于电商类商户)微信支付服务商成长历程-「酒店押金」产品介绍简单bash组合CLI能力,练习接入/使用「微信支付v2」沙箱环境初次对接微信支付你应该知道的“易错点” 拒绝踩坑礼品:微信支付简约马克杯/简约白色帽子/透明雨伞 随机 *1 再次恭喜以上获奖者,请各位获奖者在获奖名单公布后的7个工作日内联系微信支付社区运营-Tasting认领奖品,逾期我们将视为您放弃本次获奖。 活动礼品及活动详情请前往有奖征文 | 从产品设计、开发到运营维护,说说你与微信支付的那些事儿了解更多。 还有还有,本次活动结束后,为鼓励大家继续进行知识分享,微信支付团队会定期评选支付版块积极贡献的用户,主要从发表优质文章及回帖积极两个维度评选,并送上微信支付精美礼品一份,鼓掌,撒花✿✿ヽ(°▽°)ノ✿
2021-05-10