- 微信法定代表人扫脸验证失败
平台是直接拉取工商局的数据,工商数据未更新则无法正常发起验证流程,需要等15个工作日再试试。另,开发者可在该网站查询主体的更新信息http://www.gsxt.gov.cn/corp-query-homepage.html(建议开发者先核实下主体名称是否填写有误) 法定代表人扫脸验证失败一般是什么原因? 1:建议重新核查信息,确保账号主体信息及法人信息提交无误。如确认无误,还是审核失败,是因未在工商数据中查询到您提交法人的相关信息,无法核查,故审核失败。 如贵方是新建企业,或近期有做信息变更,企业工商数据更新可能有延迟,建议您过段时间(5~15工作日)再试。期间不支持加急 2:营业执照中主体名称为空或者*号,如何验证? 个体户主体名称为空或者*号,主体名称请填写个体户+法人姓名(比如:个体户张三)提交验证。 3:法定代表人不是大陆居民,如何验证? 如果法定代表人身份证件不是中国大陆地区居民身份证,目前暂时无法完成验证,还请谅解。 4:如果是新注册的企业,或近期有做企业信息变更,验证失败如何处理? 企业工商数据更新可能有延迟,建议过5~15工作日后再试试 5:个体工商户名称/企业名称和统一社会信用代码填写不正确,如有填写了错别字、错漏字,都会导致无法识别通过。 举例1:统一社会信用代码留意数字0和字母O、Q的区别,数字1和字母I的区别。 举例2:主体名称有括号的,留意括号前后是否有空格; 举例3:营业执照主体名称为xxxx(个体工商户),后面括号内容也要填写完整。留意名称不要有错别字。 6:以及非企业类型不支持法人验证,以及若企业为合伙企业,法人为多个人或为执行事务合伙人xxx公司的,不支持法人验证 7:不支持用其他人实名的微信扫码验证。目前仅支持中国内地法人验证,非内地法人暂无法进行法人验证 8:注册页面提示“提交的法定代表人信息验证失败次数太多,请尝试其他方式进行注册”? 同一邮箱申请公众帐号,选择法人验证方式提交注册只有3次机会,若已达到次数上限,请选择支付验证或微信认证方式继续注册,若依旧要申请法人验证方式,建议更换邮箱注册。 温馨提示:若是新办理的营业执照或近期变更过企业信息,数据更新可能有延迟建议过5-15天后再申请。若是个体工商户营业执照没有名称,不支持选择法人验证申请,建议选择其他验证方式申请。 如果按照以上方式排查仍然无法解决问题,可通过微信公众号“腾讯客服”进行咨询。
06-27 - 法人扫脸快速创建小程序没有收到模板消息的情况有哪些?
1、第三方需检查服务器是否有推送事件消息; 2、第三方需检查接口是否有返回的错误信息,根据返回码核查具体的错误原因,常见的错误原因有: (1)新注册企业,工商系统尚未更新企业信息,需要等待3到15个工作日; (2)企业名称填写有误,如将“广州市”填错为“广州”;请注意企业名称与工商部门登记的完全一致; (3)统一社会信用代码填写有误,如将数字“0”填错英文“O”,数字“1”填错英文“I”等。务必与营业执照上的社会信用代码(注册号)保持一致; (4)微信号填写错误,需正确引导获取位置“微信”-“我”(不能使用手机号、QQ 号); (5)微信号的实名信息与法人姓名不一致; 3、引导用户寻找“公众平台安全助手”公众号,查找“创建小程序申请”消息。 4、第三方检查接收微信号是否一致; 5、其他情况:消息已下发但是用户未能收到,建议等待任务结束后重新请求。
2024-06-24 - 境外小程序支付攻略(云开发篇),看这一篇就够了。
一、前言 境外微信支付的实现方式,与国内支付的方式大不同,即不是V2,也不是V3,而是经由海外支付服务商,通过间连的方式来实现的。(香港地区融合钱包除外)。 以下专门介绍具体的实现攻略: 二、开通 首先,你需要先了解当地有哪些第三方支付服务商,然后选择其中一家,接入他们提供的支付服务,从而实现微信支付的开通。 1、全球第三方支付服务商: https://pay.weixin.qq.com/index.php/public/wechatpay_en/partner_search#/ 找到当地服务商的联系方式,与他们联系,他们会告诉你所需提供哪些资料,并帮你开通商户号,接入微信支付; 资料信息包括: 营业执照 翻译认证 公司银行账户 法人及联系人信息 其他信息等。 2、香港融合钱包 融合钱包以下不做介绍,技术方面和v3支付完全一样。 技术方案可以参考: https://pay.weixin.qq.com/wiki/doc/api/wxpay/en/pages/MiniProgramPay_fw.shtml 三、第三方服务商提供的支付服务 每个第三方服务商所提供的支付服务各不相同,以下分别举例: Yaband Pay (Europe PayPro B.V.): 微信支付, 支付宝, PayPal, SOFORT, IDEAL, 银联支付, List 2paynow (Europe Sepay B.V.): 微信支付, 支付宝 VR Payment (Europe CardProcess GmbH): 微信支付, 支付宝 Supay (Australia): 微信支付, 信用卡支付 其他地区第三方支付服务商,提供哪些服务,需要向他们咨询。 注: 1、境外小程序对除微信支付之外的支付方式,卡得并不象国内这样严,一般情况下,PayPal, 信用卡等方式,都支持并审核通过,支付宝会稍难点; 2、小程序里实现其他支付方式的唯一方案:生成支付链接,复制到剪贴板,在手机浏览器或微信浏览器中打开,完成支付流程。 四、第三方支付账号和接入文档 第三方帮你接入微信支付后,会回复邮件给你,并提供相关支付信息: 1. 一个属于第三方的支付账号 比如Yaband pay,支付账号类似如下: ID: yourname@yoursite.com Key: f4f70db6107xxxxxxxb75efa1f1490b4 2paynow,支付账号类似如下: ID: 541102252 Key: osVx_0POxxxxF9h3JSCls 2. 该第三方支付服务商支付接入文档 比如Yaband pay 支付文档: https://www.yabandmedia.com/api/cn-api.html 比如2paynow支付文档,是由技术支持人员发送给你的PDF文档,具体内容暂不介绍。 3. 第三方支付服务商的商家管理后台 你可以登录该后台进行配置,并查看详细的订单数据。 [图片] 五、云开发实现境外支付 因为商家可以自主选择第三方支付服务商,所以我们在实现支付功能时,需要同时支付多个第三方支付服务商。 用云开发来实现,一般会有两种方式: (1)、每个第三方的支付功能,分别用一个云函数实现; (2)、一个云函数集成所有第三方支付功能;(我们采用的是该方式) 1、云函数pay.js: 按支付接口、支付服务商、支付方式分流: const cloud = require('wx-server-sdk') const rp = require('request-promise') const CryptoJS = require('crypto-js') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) const db = cloud.database() exports.main = async (event, context) => { switch (event.action) {//根据小程序端传入的支付相关接口分流 case 'unifiedorder': return await unifiedorder(event)//统一下单 case 'queryorder': return await queryorder(event)//订单查询 case 'refund': return await refund(event)//退款 default: return 'wrong action' } } async function unifiedorder(event) { let res = await db.collection('config').doc('payment').get().catch() if (res && res.data) { } else return 'wrong action'//注意:res?.data在云函数中不支持 let config = res.data//云数据库中保存了支付配置信息 switch (config.pay_sp) {//根据支付服务商pay_sp来分流 case '2paynow': return await unifiedorder_2paynow(event, config) case 'yaband': return await unifiedorder_yaband(event, config) case 'cloudpay': return await unifiedorder_cloudpay(event, config) case 'supay': return await unifiedorder_supay(event, config) case 'vr': return await unifiedorder_vr(event, config) case 'v2': return await unifiedorder_v2(event, config) case 'v3': return await unifiedorder_v3(event, config) case 'v2sp': return await unifiedorder_v2(event, config)//v2服务商模式 case 'v3sp': return await unifiedorder_v3(event, config)//v3服务商模式 default: return 'wrong action' } } async function queryorder(event) { let res = await db.collection('config').doc('payment').get().catch() if (res && res.data) { } else return 'wrong action' let config = res.data switch (config.pay_sp) { case '2paynow': return await queryorder_2paynow(event, config) case 'supay': return await queryorder_supay(event, config) case 'vr': return await queryorder_vr(event, config) default: return 'wrong action' } } async function refund(event) { let res = await db.collection('config').doc('payment').get() if (res && res.data) { } else return 'wrong action' let config = res.data switch (res.data.pay_sp) { case '2paynow': return await refund_2paynow(event, config) case 'yaband': return await refund_yaband(event, config) case 'cloudpay': return await refund_cloudpay(event, config) case 'supay': return await refund_supay(event, config) case 'vr': return await refund_vr(event, config) default: return 'wrong action' } } 2、统一下单(Yaband pay为例) 接口文档:https://www.yabandmedia.com/api/cn-api.html // -------------------yaband----------------------------------------------------------- async function unifiedorder_yaband(event, config) { let notify_url = config.notify_url let user = config.mchid let key = config.key let timeStamp = parseInt(Date.now() / 1000) let payMethod = event.pay_method if (payMethod == 'wechat') {//微信支付 const wxContext = cloud.getWXContext() let param = { "user": user, "method": "v3.CreatePaymentsWechatMiniPay", "time": timeStamp, } let data = { "pay_method": "online", "sub_pay_method": "WeChat Pay", "order_id": event.out_trade_no, "amount": event.total_fee || "0.1", "currency": event.fee_type || config.currency, "description": event.body || "YabandPay pay", "demo": event.demo || "order", "timeout": "0", "notify_url": notify_url, "sub_app_id": wxContext.FROM_APPID || wxContext.APPID, "sub_open_id": wxContext.FROM_OPENID || wxContext.OPENID } let sign = getSign_yaband({ ...param, ...data }, key) let body = { ...param, sign, data } let res = await rp({ url: "https://mapi.yabandpay.com/Payments", method: 'POST', body, json: true }) let payment = res.data.parameters return { payment, sp_trade_no: res.data.trade_id } } if (payMethod == 'sofort') {//省略 } if (payMethod == 'alipay') {//省略 } if (payMethod == 'paypal') {//Paypal支付 let param = { "user": user, "method": "v3.CreatePayments", "time": timeStamp, } let data = { "pay_method": "online", "sub_pay_method": "PAYPAL/RECURRING", "order_id": event.out_trade_no, "amount": event.total_fee || "0.1", "currency": event.fee_type || config.currency, "description": event.body || "YabandPay pay", "demo": event.demo || "order", "post_email": "xin.liu@elbsino.com", "timeout": "0", "redirect_url": "https://www.klarna.com/de/", "notify_url": notify_url } let sign = getSign_yaband({ ...param, ...data }, key) let body = { ...param, sign, data } let res = await rp({ url: "https://mapi.yabandpay.com/Payments", method: 'POST', body, json: true }) let url = res.data.url return { url }//除微信支付外,都必须返回一个url:支付链接 } } async function refund_yaband(event, config) { console.log('refund_yaband') let notify_url = config.notify_url let user = config.mchid let key = config.key let timeStamp = parseInt(Date.now() / 1000) let param = { "user": user, "method": "v3.CreateRefund", "time": timeStamp, } let data = { "trade_id": event.trade_id, "refund_amount": event.refund_amount || "0.1", "refund_currency": config.refund_currency, "refund_description": event.refund_description || "test", "notify_url": notify_url } let sign = getSign_yaband({ ...param, ...data }, key) let body = { ...param, sign, data } console.log(body) return await rp({ url: "https://mapi.yabandpay.com/Payments", method: 'POST', body, json: true }) } function getSign_yaband(args, key, sa = []) {//每个支付服务商的签名方式都不一样 for (let k in args) sa.push(k + '=' + args[k]) sa = sa.sort() let signStr = sa.join('&') let hash = CryptoJS.HmacSHA256(signStr, key) return CryptoJS.enc.Hex.stringify(hash) } function getSign_2paynow(args, key) {//2paynow的签名算法。 let signStr = args.function + args.mid + args.timestamp + key let hash = CryptoJS.MD5(signStr, key) return CryptoJS.enc.Hex.stringify(hash) } 踩坑实录: 1、每次统一下单,都会产生三种订单号: 商家订单号 支付服务商的支付订单号 微信支付订单号 记住:一定要保存支付服务商的支付订单号,因为有些支付服务商在订单查询和退款接口中,只认该订单号。 2、每个服务商的签名方案是不同的,有的甚至不需要签名,这个需要分别对待。 六、支付成功异步通知 多个服务商的异步通知,用一个云函数来实现。 云函数:notify.js const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) const db = cloud.database() const _ = db.command exports.main = async (event, context) => { let res = await db.collection('config').doc('payment').get() switch (res.data.pay_sp) { case '2paynow': return await notify_2paynow(event) case 'yaband': return await notify_yaband(event) case 'cloudpay': return await notify_cloudpay(event) case 'vr': return await notify_vr(event)//vr暂时不支持回调通知 case 'supay': return await notify_supay(event) case 'v2': return await notify_v2(event) case 'v3': return await notify_v3(event) default: return 'wrong action' } } async function notify_2paynow(event) { console.log('notify_2paynow') let qs = event.queryStringParameters if (qs.merchant_trade_no) { } else return 'success' await db.collection('payment').add({ data: qs }).then(res => console.log(res)) if (qs.merchant_trade_no && qs.trade_status == 'TRADE_SUCCESS') { await onPaymentSuccess(qs.merchant_trade_no, qs.trade_no, qs.original_trade_no) } return 'success' } async function notify_yaband(event) { console.log('notify_yaband') if (event.body) { } else return { statusCode: 200, body: 'ok' } let body = JSON.parse(event.body) let pay = body.data await db.collection('payment').add({ data: pay }).then(res => console.log(res)) if (pay.transaction_id && pay.state == 'paid') { await onPaymentSuccess(event.outTradeNo) } return { statusCode: 200, body: 'ok' } } async function notify_cloudpay(event) {//云支付pay_cb console.log('notify_cloudpay') if (event.outTradeNo) { await db.collection('payment').add({ data: event }).then(res => console.log(res)) if (event.returnCode == 'SUCCESS' && event.resultCode == 'SUCCESS') { await onPaymentSuccess(event.outTradeNo) } } return { "errcode": 0, "errmsg": 'SUCCESS' } } 踩坑实录: 1、有些国外支付服务商,并不提供异步通知功能,比如VR Payment,这就很尴尬了,因为我们业务的流程里,是非常依赖这个功能的,因此,后期造成了大量的代码修改工作,建议大家从一开始就考虑这种情况。 七、币种选择 统一下单时,支持两种币种: 1、CNY 2、当地币种,比如EUR 境外退款,一般只能使用当地币退款,不支持RMB。 八、境外小程序云开发禁用后的选择 目前境外小程序的云开发功能已经被禁用,可以通过环境共享的模式支持以上云开发境外支付方案; 1、共享在禁用令之前的同主体小程序的云环境; 2、我们是采用开放平台第三方服务商批量云开发模式; 九、境外小程序相关文章 1、https://developers.weixin.qq.com/community/develop/article/doc/000aec921e4fd8a320ec0f9795bc13 2、https://developers.weixin.qq.com/community/develop/article/doc/0000e805af0900b37f6c900c356c13 3、https://developers.weixin.qq.com/community/develop/article/doc/000a68f1a24a687242eb2427556013 4、https://developers.weixin.qq.com/community/develop/article/doc/000860b434cd180a749b9268f51c13
2022-05-31 - “活动、服务预约”玩法介绍和运营建议
传统的活动、服务预约场景,如品牌展览、快闪活动、俱乐部、课程、体验活动等,须通过短信、传单、线下门店或柜台、电梯广告等方式完成宣传,并通过线下登记手机号等方式完成信息登记,印刷纸质券并完成派发。高成本低效率的同时,难以跟踪用户声音和沉淀用户数据。 结合微信模板消息、卡包、小程序能力,我们希望提高用户预约效率、活动到场转化率,丰富用户体验,并及时获取用户反馈,沉淀用户数据。 用户路径设计: ①活动宣传-②预约报名-③活动分享-④活动提醒-⑤入场核券-⑥场内互动 01 活动宣传 小程序入口全览 [图片] 1.微信公众号图文 2.朋友圈广告、公众号广告 3.搜索 4.门店物料 5.其他:附流量运营全景图 02 预约报名 1)用户填写预约信息时:推荐使用微信组件,一键填充手机号码 在新用户注册、联系方式登记等必要场景下,开发者均可在页面上部署手机号快速填写组件。用户点击组件,完成弹窗授权后,即可直接将微信绑定的手机号填入,绝大部分情况下无需再进行短信验证码校验。 若用户不愿提供微信绑定的手机号,开发者需提供手动输入手机号功能。 [图片] 2)用户完成预约,并领取预约凭证:推荐使用卡包功能,一键领取凭证,自动添加进卡包 在预约信息确认页面,用户复核信息并确认预约,点击领取凭证。 跳转进入卡包页面,将入场凭证添加进卡包。 3)用户领取凭证后:推荐使用模板消息,下发领取成功提醒 用户通过小程序成功预约活动后,品牌可通过模板消息下发“预约成功通知”,向用户提供活动名称、地址、时间、温馨提示等信息。 用户亦可点击“预约成功通知”模板消息,重新进入品牌小程序。 03 活动分享 1)生成分享卡片: 除了用户自发转发活动链接,品牌可设计具备品牌特色的分享卡片(包含品牌小程序太阳码),方便用户分享给朋友。 [图片] 2)设计品牌元素周边玩法,引导用户自主转发: [图片] 04 活动提醒 用户订阅开始提醒后,系统可定点下发活动提醒,用户点击可进入小程序核销页面。 [图片] [图片] 05 入场核券 通过模板消息/卡包,用户点击打开入场券,进行核销。 [图片] 核销成功后,推送模板消息“核销成功通知”,引导用户点击进入活动服务。 [图片] 06 场内互动 1)小程序+电子屏 用户可在小程序提交文字内容,投屏至电子屏,提升娱乐性。 [图片] 2)小程序+室内导航、语音讲解 向用户提供浸泡式体验。 [图片] [图片] 以上各类运营策略及数据,整理自试点商户线下门店及小程序,请根据自身情况参考借鉴。
2020-01-15 - “扫码购”玩法介绍与运营建议
“ 品牌实体门店受空间限制,往往库存深度不足,容易出现缺色断码的情况,导致顾客喜欢的款式无法当场购买,形成跑单。” 结合微信扫码、小程序能力,在门店“缺色断码”的场景中,打造“扫码-小程序下单-寄送到家”的消费体验,带动品牌生意增量,同时沉淀用户数据。 扫码购流程的关键节点: ① 扫码适配 ② 铺码 ③ 用户引导 ④ 小程序购买 ⑤ 订单路由&发货 ⑥ 业绩归属与激励 01 扫码适配 微信支持扫描一维码、二维码打开小程序,品牌可根据实际情况选择。 1)一维码 需要在小程序中调起扫码。 开发指引内容较长,建议使用电脑详细查阅。点击打开文档 2)二维码、小程序码 支持使用微信“扫一扫”扫描并跳转小程序。 对于已经铺设普通二维码(网页链接编码后生成的二维码)的品牌,可用以下接口实现用微信“扫一扫”扫描跳转小程序: 开发指引内容较长,建议使用电脑详细查阅。点击打开文档 02 铺码 品牌可根据实际情况将码放在合适的位置,如商品吊牌、鞋子底部等。 [图片] 03 用户引导 品牌可根据实际情况将码放在合适的位置,如商品吊牌、鞋子底部等。 04 小程序商城购买 用户扫码后直达小程序商城,完成注册、登录、下单、付款等操作。 [图片] “小程序商城”可参考下列文章:《“小程序商城”介绍与运营建议》点击打开文章 05 订单路由&发货 扫码购一般涉及品牌多门店、多渠道之间的商品和库存流转,所以建议品牌对此类订单制定订单路由逻辑,常见如“就近门店发货”、“区域仓发货”、“总仓发货”等,并在产生订单后完成订单分配和发货。 06 业绩归属&激励 建议品牌制定适合的业绩归属机制,对接单、发货的渠道或店员进行激励,以保证扫码购的持续运营。 以上各类运营策略及数据,整理自试点商户小程序,请根据自身情况参考借鉴。
2020-01-10 - “小程序商城”介绍与运营建议
“微信公众号、小程序能力,助力品牌打造自营自控的自留地。” 结合微信公众号、小程序能力,建立品牌在微信的官方小程序商城,突破时间和空间的限制,与消费者产生直接的连接,形成公众号-小程序、线下-线上的服务闭环,带动生意增量。 特点: 1)消费者直连: 微信用户量10+亿,品牌可在微信与消费者产生直接的连接;与公众号、品牌CRM库无缝连接,品牌可更了解用户画像。 2)自主性强: 小程序能力和插件丰富,形式不限;无入场费,无销售佣金,品牌完全自营,自主空间大。 用户路径设计: ① 商城入口 - ② 商城体验 - ③ 订单状态提醒(订单完成-发货-收货评价)- ④ 消费者回流 01 商城建设 小程序商城仅需重建前端,无需单独新建商品、会员、订单、库存等系统,而是通过API与现有系统打通对接。 [图片] 小程序商城形似官网H5,体验更胜官网H5。 [图片] 02 商城入口 小程序入口全览: [图片] 搜索-品牌专区 公众号菜单栏 公众号图文 公众号新关注自动回复 门店物料 朋友圈广告、公众号广告 其他,附流量运营全景图 03 商城体验 浏览: 1)便捷登录(昵称头像授权) 2)便捷注册(手机号码授权) 结账: 1)便捷填写地址(微信地址授权) 2)便捷开票(微信电子发票) 3)便捷支付(微信支付) 04 订单状态提醒 建议在重要的订单节点(如:下单成功-发货-收货评价)向用户下发模板消息,给与用户及时的状态反馈,及回收用户声音。 ①下单成功通知 [图片] ②订单发货提醒 [图片] ③订单评价提醒 [图片] 建议接入官方的物流助手,完成接口联调后无需二次开发,即可实现用户订单的关键物流信息下发。 05 消费者回流 用户可通过上述模板消息(点击进入小程序)、任务栏下拉、历史列表等方式重新回到小程序。品牌可通过UnionID及后台数据,获取用户购买信息,千人千面自定义跳转页面,或推荐相关商品,促进复购。 以上各类运营策略及数据,整理自试点商户线下门店及小程序,请根据自身情况参考借鉴。
2020-01-10 - “UnionID关联”功能介绍及运营建议
产品简介:实现同一个用户在公众号、小程序、APP、官方网站等不同场景里的身份统一识别、信息同步和行为跟踪。 优势:唯一用户身份标识,打通会员信息和会员积分,打通多场景用户行为,支撑CRM和精准营销。 接入方式:需开发。 关键词:身份唯一识别、统一会员体系、CRM、精准营销。 01 UnionID机制说明 如果开发者拥有多个移动应用、网站应用、公众帐号及小程序,可通过 UnionID 来区分用户的唯一性。 因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。 [图片] 02 典型使用场景及案例 1) 使用记录同步: 用户在多端的浏览记录、购买历史、收藏夹等信息可便捷同步,并提供个性化服务。 2)用户信息维护: 如会员卡积分、收货地址等信息,用户无需重新输入信息,降低使用成本,提升转化率。 如某服饰行业小程序,提供手机号一键快捷登录方式,可自动拉取用户在微信中的默认手机号码,避免再次填写。 [图片] 03 运营建议 1) 在必须用到登录信息的环节引导用户登录 在用户必须登录时才引导用户登录(如:购买前需要获取会员信息,用于同步积分数据),而不是用户一进入小程序就弹窗要求用户授权。如只需要在前端展示用户头像、昵称,无需要求用户授权,可直接展示。 2)清晰、准确地引导用户登录 在登录页面中,清晰、准确地告知用户当前操作是登录,说明获取登录信息的目的(如:用于同步会员积分数据等)。 3) 不强制用户必须登录后才能使用小程序服务 提供游客模式,不强制用户必须登录后才能进入小程序。如要求必须授权头像昵称等信息才能继续使用小程序,会导致某些用户放弃使用该小程序。 开发指引内容较长,建议使用电脑详细查阅。点击打开文档
2020-01-10 - “小程序二维码”功能介绍与生成方式
产品简介:通过生成小程序二维码(又称太阳码或葵花码,后文简称小程序码),并将印有小程序码的物料铺设在线下场景,或通过线上分享等方式,引导用户扫码或长按识别二维码进入小程序,实现小程序引流;并可通过配置带参数的小程序码,监控各来源渠道的转化效果。 优势:低成本,易生成,易推广;用户习惯养成,扫码、识别码易用。 接入方式:普通小程序二维码无须开发,可在后台直接生成;带参数小程序码须开发。 关键词:小程序引流,数据跟踪与分析。 01 应用场景 在时尚零售行业,品牌可基于不同的业务场景,将小程序码印在商品、包装、宣传物料、门店展架等等,引导用户通过扫码快速进入小程序。 1)线下场景如: 将小程序码印在宣传物料上,引导用户扫码进入小程序; 将小程序码印到商品瓶身、包装、货架上,引导用户扫描进入小程序,享受扫码购服务; 将小程序码印在亚克力牌上,放置在店内如收银台等位置,引导用户扫描进入小程序,快速创建会员、填写服务问卷等。 2)线上场景如: 在小程序内提供个性化分享卡片的生成功能,用户可将卡片自主转发给好友,好友可长按识别卡片进入小程序,体验小程序内的商品购买、预约等服务。 02 生成方式 小程序码的生成有两种方式,分别为通过小程序后台生成链接统一的普通小程序码,以及通过开发生成带参数的小程序码。 1)普通小程序码: 我们推荐你通过小程序后台(mp.weixin.com)-设置-基本设置-小程序码及线下物料下载,完成小程序码的下载。 下载完成后,你可以将其打印并铺设到线下场景,或者直接附于海报中用于线上传播。 2)带参小程序码: 如须生成带参数的小程序码,为每个宣传物料配上独一无二的小程序码,智能跟踪来源于不同渠道的明细数据,可通过后台接口生成不限数量且永久有效的带参数小程序码。 开发指引内容较长,建议使用电脑详细查阅。点击打开文档 3)兼容普通二维码: 我们还提供了扫描普通二维码跳转小程序的能力。如线下已铺设有二维码,无须更换二维码,即可通过该能力在线下推广小程序。 开发指引内容较长,建议使用电脑详细查阅。点击打开文档 03 进阶应用-带参数码详细介绍 通过带参数二维码的灵活应用,可以监控各个渠道的用户来源、活动转化,调配资源提升营销运营效果,它的应用场景有: 1) 大数据营销: 在不同渠道投放不同参数的小程序码,可以精准记录客户来源,为营销决策提供依据。 2)线下助销: 通过给每个销售人员、每个店铺分配带有参数的小程序码进行佣金统计、计算销售奖励等。 3)一物一码: 让每个产品都拥有一个独一无二的小程序码,实现产品的差异化控制。
2020-01-14 - 微信小程序PDF文件上传下载文件名固定不变
在微信小程序中处理PDF文件上传下载时,如果希望文件名保持固定不变,可以采取以下策略: 上传文件时固定文件名自定义文件名: 在上传文件的过程中,可以在服务器端接收到文件后,将其重命名为一个固定的名称。例如,在PHP中,你可以这样做:$filename = 'fixed-name.pdf'; // 设置你想要的固定文件名 $upload_dir = '/path/to/upload/directory/'; move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir . $filename); 云存储服务: 如果你使用微信云托管或其他云存储服务,可以在上传文件时指定文件名。例如,在调用微信云API上传文件时,可以在请求参数中指定[代码]path[代码]为你想要的固定文件名。 下载文件时固定文件名重命名下载文件: 当用户下载文件时,可以在服务器端将文件重命名为固定名称后再提供下载链接。例如,在PHP中:header('Content-Type: application/pdf'); header('Content-Disposition: attachment; filename="fixed-name.pdf"'); readfile('/path/to/fixed-name.pdf'); 客户端处理: 在微信小程序端,可以使用[代码]wx.downloadFile[代码]接口下载文件,并在成功回调中使用[代码]wx.saveFile[代码]接口将文件保存到本地时指定固定的文件名。 注意事项文件名唯一性: 如果多个用户上传相同的固定文件名,可能会导致文件被覆盖。为了避免这种情况,可以在固定文件名后添加一些唯一标识符,如时间戳或用户ID。安全性考虑: 在处理文件上传和下载时,务必注意安全性,防止恶意文件上传和下载。示例代码以下是一个简化的示例,展示如何在微信小程序中实现固定文件名的上传和下载: 上传文件wx.uploadFile({ url: 'https://your-server/upload', // 替换为你的服务器上传接口地址 filePath: tempFilePath, // 文件临时路径 name: 'file', formData: { 'user': 'test' }, success(res) { const data = res.data; // 处理服务器返回的数据 } }); 下载文件wx.downloadFile({ url: 'https://your-server/download/fixed-name.pdf', // 替换为你的服务器下载接口地址 success(res) { const filePath = res.tempFilePath; wx.saveFile({ tempFilePath: filePath, success(res) { const savedFilePath = res.savedFilePath; console.log('文件保存成功', savedFilePath); } }); } }); 通过上述方法,你可以实现在微信小程序中PDF文件的上传和下载过程中文件名保持固定不变。 在微信小程序中处理PDF文件上传下载时,如果希望文件名保持固定不变,可以采取以下策略: 上传文件时固定文件名自定义文件名: 在上传文件的过程中,可以在服务器端接收到文件后,将其重命名为一个固定的名称。例如,在PHP中,你可以这样做:$filename = 'fixed-name.pdf'; // 设置你想要的固定文件名 $upload_dir = '/path/to/upload/directory/'; move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir . $filename); 云存储服务: 如果你使用微信云托管或其他云存储服务,可以在上传文件时指定文件名。例如,在调用微信云API上传文件时,可以在请求参数中指定[代码]path[代码]为你想要的固定文件名。下载文件时固定文件名重命名下载文件: 当用户下载文件时,可以在服务器端将文件重命名为固定名称后再提供下载链接。例如,在PHP中:header('Content-Type: application/pdf'); header('Content-Disposition: attachment; filename="fixed-name.pdf"'); readfile('/path/to/fixed-name.pdf'); 客户端处理: 在微信小程序端,可以使用[代码]wx.downloadFile[代码]接口下载文件,并在成功回调中使用[代码]wx.saveFile[代码]接口将文件保存到本地时指定固定的文件名。注意事项文件名唯一性: 如果多个用户上传相同的固定文件名,可能会导致文件被覆盖。为了避免这种情况,可以在固定文件名后添加一些唯一标识符,如时间戳或用户ID。安全性考虑: 在处理文件上传和下载时,务必注意安全性,防止恶意文件上传和下载。示例代码以下是一个简化的示例,展示如何在微信小程序中实现固定文件名的上传和下载: 上传文件wx.uploadFile({ url: 'https://your-server/upload', // 替换为你的服务器上传接口地址 filePath: tempFilePath, // 文件临时路径 name: 'file', formData: { 'user': 'test' }, success(res) { const data = res.data; // 处理服务器返回的数据 } }); 下载文件wx.downloadFile({ url: 'https://your-server/download/fixed-name.pdf', // 替换为你的服务器下载接口地址 success(res) { const filePath = res.tempFilePath; wx.saveFile({ tempFilePath: filePath, success(res) { const savedFilePath = res.savedFilePath; console.log('文件保存成功', savedFilePath); } }); } }); 通过上述方法,你可以实现在微信小程序中PDF文件的上传和下载过程中文件名保持固定不变。
01-06 - 小程序最近老是被一个搞空气炸锅的活动挟持,不知有没有好的解决方案没有
小程序最近老是被一个搞空气炸锅的活动挟持,不知有没有好的解决方案没有,代码里面好像也没有这样的问题,查了又查,实在搞不明白问题出在哪里,老是被人家利用,扫他们的一个码,进入活动,返回主页就到我们公司的小程序,经常遭到用户的质疑,真不明白发生了什么,担心这样下去会出问题,就暂停了一下小程序服务,但是过一阵子打开,活动也还存在,好像是被人盯上了,不知官方没有好的解决方案,是不是可以,把传播空气炸锅这个源头给找出来
2023-04-06 - 多个小程序连续提示违规,九阳空气炸锅?
小程序:wx0467441bbfa34543 名下多个小程序,而且是不同主体的, 都提示了 因用户投诉并经平台审核,发现帐号已发布的服务涉嫌欺诈 而且统一都是一个 九阳空气炸锅, 都不知道从哪来的,[图片] 还有多个小程序同时被封,提示此账号关联账号存在严重违规,
2022-12-20 - 微信小程序开发之富文本编辑器
微信小程序开发之富文本编辑器 一年多去了,还有这么多人关注这个编辑器,那就索性把这个组件放上去,各位直接引用吧!如果您感觉很好用,很实用,也请大家给点一个赞!前言:富文本在Web开发上的地位大家可想而知,很多地方都需要用到富文本编辑器,比如开发类似新闻管理小程序、商品简介等。微信小程序在基础库2.7.0之后上线了一个editor富文本编辑器组件,这个组件是本次要讲的内容。组件相关的内容大家可以去看官方文档的内容,这里我们就不进行讲解。而我们要做的就是将官方的富文本组件进行二次开发达到一个好用而又实用的地步:https://developers.weixin.qq.com/miniprogram/dev/component/editor.html 先看效果图(以下只是一个基础的实用): [图片] 代码方案: 1.引入组件(组件的下载地址链接:https://pan.baidu.com/s/15D3ejvs30BZPwn94RgyNmw 提取码:hg66) 2、在你需要的使用的页面的JSON文件中引入该组件,引入方法如下: "usingComponents": { "hg-editor":"../../../components/hg-editor/hg-editor(根据自己的放置位置修改,其中/hg-editor/hg-editor是固定的)" } 3、在wxml文件中使用,使用案例如下,可选参数有四个 参数详解: [图片] showTabBar :是否显示工具栏(默认为true,显示,如果改为false则为不显示)placeholder:文本框提示文字,默认为“请输入相关内容”name:是编辑器的name属性,默认为空uploadImageURL:图片的上传地址,默认为空使用属性案例测试: bind:input可以获得用户输入的内容: onInputtingDesc: function (e) { let html = e.detail.html; //相关的html代码 let originText = e.detail.text; //text,不含有任何的html标签 this.setData({ ['topic.text']: html, ['topic.originText']: originText }); } 使用案例: [图片][图片][图片] 您的想法有多大,组件拓展的无限可能就有多大,欢迎各位留言,欢迎各位使用! 好用,就来收藏一下,更新不易,点个赞!
2022-04-22 - 小程序内用户帐号登录规范调整和优化建议
为更好地保护用户隐私信息,优化用户体验,平台将会对小程序内的帐号登录功能进行规范。本公告所称“帐号登录功能”是指开发者在小程序内提供帐号登录功能,包括但不限于进行的手机号登录,getuserinfo形式登录、邮箱登录等形式。具体规范要求如下: 1.服务范围开放的小程序 对于用户注册流程是对外开放、无需验证特定范围用户,且注册后即可提供线上服务的小程序,不得在用户清楚知悉、了解小程序的功能之前,要求用户进行帐号登录。 包括但不限于打开小程序后立即跳转提示登录或打开小程序后立即强制弹窗要求登录,都属于违反上述要求的情况; 以下反面示例,在用户打开小程序后立刻弹出授权登录页; [图片] 建议修改为如下正面示例形式:在体验小程序功能后,用户主动点击登录按钮后触发登录流程,且为用户提供暂不登录选项。 [图片] 2.服务范围特定的小程序 对于客观上服务范围特定、未完全开放用户注册,需通过更多方式完成身份验证后才能提供服务的小程序,可以直接引导用户进行帐号登录。例如为学校系统、员工系统、社保卡信息系统等提供服务的小程序; 下图案例为正面示例:校友管理系统,符合规范要求。 [图片] 3.仅提供注册功能小程序 对于线上仅提供注册功能,其他服务均需以其他方式提供的小程序,可在说明要求使用帐号登录功能的原因后,引导用户进行帐号注册或帐号登录。如ETC注册申请、信用卡申请; 如下反面示例,用户在进入时未获取任何信息,首页直接强制弹框要求登录注册ETC,这是不符合规范的。 [图片] 建议修改为如下正面示例所示形式:允许在首页说明注册功能后,提供登录或注册按钮供用户主动选择点击登录。 [图片] 4.提供可取消或拒绝登录选项 任何小程序调用帐号登录功能,应当为用户清晰提供可取消或拒绝的选项按钮,不得以任何方式强制用户进行帐号登录。 如下图所示反面示例,到需要登录环节直接跳转登录页面,用户只能选择点击登录或退出小程序,这不符合登录规范要求。 [图片] 建议修改为下图正面示例形式,在需帐号登录的环节,为用户主动点击登录,并提供可取消按钮,不强制登录。 [图片] 针对以上登录规范要求,平台希望开发者们能相应地调整小程序的帐号登录功能。如未满足登录规范要求,从2019年9月1日开始,平台将会在后续的代码审核环节进行规则提示和修改要求反馈。
2019-07-20