- 关于企业微信外部联系人免验证添加成员事件的疑问?
问题一 企业微信外部联系人免验证添加成员事件 文档上changeType写的是add_half_external_contact https://work.weixin.qq.com/api/doc/90000/90135/92130#%E5%A4%96%E9%83%A8%E8%81%94%E7%B3%BB%E4%BA%BA%E5%85%8D%E9%AA%8C%E8%AF%81%E6%B7%BB%E5%8A%A0%E6%88%90%E5%91%98%E4%BA%8B%E4%BB%B6 但是我的成员设置成免验证,然后客户扫码添加,回调事件changeType是add_external_contact,这个是什么情况? 问题二 免验证成员 通过上述方式添加客户之后,成员再次设置成需要验证,此时是否有事件回调,该成员之前添加的客户是否还在?
2020-11-06 - 微信H5支付 提示系统繁忙
[图片] 微信H5支付一直提示系统繁忙,请问这是什么问题啊?
2020-03-22 - 基础支付-报错“系统繁忙,请稍后重试”
基础支付-报错“系统繁忙,请稍后重试”或“支付失败,请稍后重试” 背景: 在调用基础支付的相关接口时,接口报错“系统繁忙,请稍后重试”,多次重试还是一样的报错 基础支付种类范围: [图片] 情景一:调用下单接口时报错 [图片] 原因: 1、请求参数中,填写了一个错误的appid,需要登录商户平台仔细核对下appid 2、请求参数中的商户号对应的商户类型与接口不符,比如使用渠道商的商户号去调用下单接口 在接口的文档的接口说明中,都有写接口对应的商户类型,如下图 [图片] 情景二:调起支付后,输入密码,一直显示加载中,然后报错 [图片] 原因: 1、在请求下单接口的时候,total参数值写成了浮点型的数据,按文档的要求,该参数数据类型需要填写整形(int)类型,单位为分 [图片] 2、下单时,参数中有携带空格。去掉参数值中的空格即可 3、下单参数中,回调地址长度等于256。换成长度小于256但不为空的回调地址即可 4、fee_type参数值为小写“cny”,改成大写的“CNY”
2022-10-09 - 使用免充值优惠,退款的规则是什么
规则如下: 1、退款金额以商户提交的订单金额为基准计算。退款金额=用户申请退款商户的订单金额*(用户实际支付金额/订单总金额),即按订单优惠比例退款 2、举例说明:小王购买两件商品每件50元,总订单金额100元,使用微信支付免充值券抵消10元,实际支付金额90元;小王支付成功后,决定退货一件商品,其对应收到的退款金额为:50元*(90元/100元)=45元 [图片]
2021-01-27 - 「视频号带货小商店商品」操作指引
视频号号主可根据本指引绑定小程序联盟推客账号的推广位ID,从而实现选择入驻联盟的小商店商品并带货,带货佣金将结算给个人店绑定的推广账号(结算规则参考:《小程序联盟佣金计算规则》。 视频号带货联盟商品的关键点: 1.视频号号主需拥有联盟推客账号和个人类型小商店; 2.视频号号主需在个人类型小商店上绑定联盟推客账号的推广位ID; 3.视频号号主在小商店助手带货后,需将带货商品添加到视频号橱窗,才可以添加到视频号直播间。 具体步骤分为以下五步: 步骤1.视频号号主开张个人类型的小商店 个人类型小商店的开店指引参考:https://developers.weixin.qq.com/community/business/doc/000ceac00448a83e10dad2c4d5340d 步骤2.视频号号主获取小程序联盟推广位ID 1)若视频号号主无联盟推客账号 视频号号主在PC端扫码登录「小程序联盟推客端」,按需注册企业/个人类型的推客账号。 在推客账号完成注册及认证(企业类型的推客账号需完成认证流程方可正常使用)后,即可前往「小程序联盟推客端-推广位管理」创建推广位并复制得到推广位ID。 2)若视频号主已有联盟推客账号 视频号号主在PC端扫码登录「小程序联盟推客端」,前往「小程序联盟推客端-推广位管理」创建推广位并复制得到推广位ID。 [图片] 步骤3.视频号主将个人小商店绑定联盟推广位ID 1)微信内搜索「小商店助手」小程序 2)选择个人小商店登录 3)在首页下滑,点击「带货中心」(参考下图1) 4)在「带货中心」内点击“账号绑定”(参考下图2) 5)点击「小程序联盟」(参考下图3),将步骤2中获取到的推广位ID粘贴进输入框,点击“绑定按钮”(参考下图4) [图片] [图片] [图片] [图片] 步骤4.在“我要带货”页面选品推广 完成推广位绑定后,返回到「小商店助手-首页」(参考下图1),点击「我要带货」,即可通过筛选、搜索(支持商品id、商品名称,建议搜索商品id,联盟推客端获取的推广素材中即包含商品id)等选择联盟商品并推广(参考下图2)。 [图片] [图片] 步骤5.视频号直播带货 1)视频号号主将商品上架到视频号商品橱窗 选择商品带货后,视频号号主需进入「微信-发现-视频号-点击右上角人像-创作者中心-商品橱窗」,点击“从我的商店选择商品”,选择步骤4中带货的个人小商店,勾选带货商品,点击「加橱窗」按钮。 2)直播时将带货商品添加到直播间货架,开始带货。
2021-10-14 - 【干货分享】小程序自定义交易组件开通及打通视频号场景
想要在视频号中拥有交易购物能力,必须接入交易组件,目前包含标准版交易组件和自定义版交易组件两种接入方案,以下是微信给出的对比及适用场景。 [图片] 因为有赞已经为商家小程序提供了完善的电商能力,所以自定义交易组件的方案更适合有赞商家小程序来对接微信视频号。 本文主要分享自定义交易组件开通的流程以及基于有赞场景去接入的时候遇到的一些坑,希望能帮助到大家!~ 一、总流程[图片] 二 、开通微信小程序 这个不必多说,但需要注意的是 1、必须是一个非个人主体的小程序 2、小程序类目需要符合下图要求 [图片] 三、开通微信支付后续的订单创建、同步会拉起微信的收银台完成支付,所以需要小程序开通微信支付的能力 四、检查是否已经开通标准版交易组件标准版和自定义版交易组件是二选一的,所以需要先检查是否开通了标准版交易组件 如果已经开通标准版但没有完成开店任务的话还是可以在微信后台取消使用的; 但如果连开店任务也完成的话,需要先注销(目前微信还没有开放注销功能),如果是有赞的商家的话可以联系有赞客服协助处理 五、授权自定义交易组件权限因为有赞是微信小程序的三方开发服务商,所以需要商家授权自定义交易组件权限,当然如果非服务商开发的话不用关心。 六、申请接入微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/register/apply?access_token=xxxxxxxxx 只需要获取到access_token后请求这个接口即可,接口是同步返回的(历史上是有异步的版本的,这块如果很早接触但没有在维护过的同学要注意了),这个接口请求失败的话可能是以下原因: access_token过期小程序类目不符合已经开通了标准版交易组件七、完成商品接口调试7.1 同步商品类目至微信审核你同步商品的三级类目id以及该类目在微信这边是否要求上传相应的类目资质,需要通过获取微信全量三级类目接口来查询 微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/cat/get?access_token=xxxxxxxxx 根据回参中的 qualification_type 类目资质类型 product_qualification_type 商品资质类型 来判断资质是否需要上传 根据回参中的 qualification 类目资质 product_qualification 商品资质 来查询需要上传资质 将回参中的third_cat_id记录,后续同步商品时会用 需要同步的话,就要调用上传类目资质接口,这是个异步接口,审核结果通过需要通过事件回调获取 微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/audit/audit_category?access_token=xxxxxxxxx 这块资质图片的字段建议先通过上传图片接口换取media_id来传入 7.2 同步品牌至微信审核如果你的同步的商品是一个品牌商品,那么在同步商品之前需要先同步品牌信息至微信审核,在审核通过的回调信息中获取到brand_id,之后同步商品时传入 微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/audit/audit_brand?access_token=xxxxxxxxx 同样的,这块品牌的一些证照图片的字段建议先通过上传图片接口换取media_id来传入 这里导致审核失败的几个原因: 上传证照的图片有问题,譬如有水印、大小超过2M、图片不能正常显示等证照过期 7.3 同步商品至微信审核现在就可以将调用同步商品接口完成商品同步了,也是一个异步接口,需要等审核回调 微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/spu/add?access_token=xxxxxxxxx 这里的tips引用下微信文档上的 注意:[代码]third_cat_id[代码]请根据获取类目接口拿到,并确定其[代码]qualification_type[代码]类目资质是否为必填,若为必填,那么要先调类目资质审核接口进行该[代码]third_cat_id[代码]的资质审核;[代码]qualification_pics[代码]请根据获取类目接口中对应[代码]third_cat_id[代码]的[代码]product_qualification_type[代码]为依据,若为必填,那么该字段需要加上该商品的资质图片;若需要上传某品牌商品,需要按照微信小商店开通规则开通对应品牌使用权限。微信小商店品牌开通规则:点击跳转,若无品牌可指定无品牌(无品牌[代码]brand_id: 2100000000[代码])。库存字段[代码]stock_num[代码]注意如果是0则无法在视频号直播上架该商品。部分特殊品类商品标题需要按照规范上传,请仔细阅读,避免审核不通过。商品标题规则:点击跳转。商品详情字段[代码]desc_info.desc[代码] [代码]desc_info.imgs[代码] 虽然非必填,但一些特殊品类仍然需要上传商品详情,请仔细阅读,避免审核不通过。商品详情规则:点击跳转。 这里应该是有赞场景下去开通自定义交易组件卡点比较严重的一环了,因为有赞的商家基数较大,商品种类较多,所以让商家自己同步一个商品至微信的话很容易被微信审核拒掉。有赞这边给到的一个方案是商家在开通自定义交易组件时,系统会帮商家创建一个简单的测试商品,因为这个商品无类目、无品牌且经验证100%通过商品审核,所以这一环的卡点也就能够被顺利疏通。 八、完成订单接口调试商品同步好后,需要对这个商品用微信支付完成一次交易,并将订单同步至微信 8.1 创建、同步订单因为自定义交易组件历史版本的原因,目前存在两套创建订单并同步至微信的方案 需要后端调用创建订单的微信api获取到ticket,然后小程序获取并通过ticket调用wx.requestPayment来拉起微信收银台(可能会废弃)小程序直接将订单信息通过wx.requestOrderPayment同步给微信,并拉起微信收银台微信这边推荐使用第二套方案 8.2 支付校验1、订单全量同步 如果选择订单全量同步到微信的话,那就不需要支付校验。 2、场景校验后同步 使用scene/check方法先去判断是否为视频号场景(这块后续可能会拓展,交易组件应该还会支持视频号以外的场景),是的话再去同步订单至微信。 这里建议在自定义交易组件接口调试过程中可以全量同步,但后续正常业务下单流程还是通过scene/check方式。因为如果你的小程序商城还支持其他支付方式的话,全量同步订单的话就会有坑,原因是无论你选择哪种创建、同步订单的方式都需要唤起微信支付,这样在原本能支持多种支付方式的场景下只能使用微信支付。 8.3 发布小程序因为创建、同步订单和支付校验有一些小程序的改动,所以小程序还是需要发布版本的。仅是开通流程的话走微信开发者工具也ok。 8.4 支付同步微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/order/pay?access_token=xxxxxxxxx 创建订单并支付成功后调用支付同步接口,就会将订单状态流转待发货 九、完成物流接口调试9.1 订单发货微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/delivery/send?access_token=xxxxxxxxx 9.2 订单收货微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/delivery/recieve?access_token=xxxxxxxxx 十、完成售后接口调试10.1 创建售后微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/aftersale/add?access_token=xxxxxxxxx 10.2 更新售后微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/aftersale/update?access_token=xxxxxxxxx 物流、售后接口的调试,如果只是开通流程的话,建议直接后端自动调用完成,可以减少卡点,帮助快速开通。 十一、完成接入任务11.1 获取接入状态微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/register/finish_access_info?access_token=xxxxxxxxx 回参中的access_info内 spu_audit_success 在商品接口调试成功后会被置为1 pay_order_success 在订单接口调试成功后会被置为1 send_delivery_success 在物流接口调试成功后会被置为1 add_aftersale_success 在售后接口调试成功后会被置为1 11.2 完成所有接入任务微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/register/finish_access_info?access_token=xxxxxxxxx 这个接口可以在上面获取接入状态接口返回的spu_audit_success、pay_order_success、send_delivery_success、add_aftersale_success的字段都为1时一次性调用完成所有。 当下面的任务都被完成后,自定义交易组件就已经完成接入了 6:完成spu接口,7:完成订单接口,8:完成物流接口,9:完成售后接口,10:测试完成,11:发版完成 十二、自定义交易组件接入视频号场景微信接口地址:点击跳转 http请求方式:POST https://api.weixin.qq.com/shop/register/finish_access_info?access_token=xxxxxxxxx 只需要调用场景申请接口来申请视频号场景,然后等待微信申请成功就可以完成自定义交易组件接入视频号了 十三、微信后台添加视频号推广员需要去微信后台添加一个视频号为推广员,然后就可以在这个视频号关联到已经开通自定义交易组件的小程序,关联后就可以上架已经商品同步接口调用通过的商品了。 [图片] [图片]
2021-10-27 - 如何进行微信订单交易对账
前言: 本文仍属于新手攻略的一部分,供类似我一样的支付新人享用。 一、订单对账需求 这是根据我们的业务实践总结出的需求场景,可能和你们业务会有较多出入,仅供参考吧。 1,销售或运营查单需求 销售或运营部门,有时候会找我们技术部门确认某笔订单的到账状态。 实际他们在内部平台能直接查到订单支付状态,但订单的财务到账情况并不会同步给他们,某些场景下,他们需要确认这些信息。 2,程序运行BUG对应 微信H5支付和APP支付,偶尔会遇到用户实际支付成功,但我方订单系统没有显示支付成功,可能是某种情景下的程序BUG或网络问题。 用户或运维,会将用户支付反馈过来,这时我们首先需要确认的就是用户是否实际支付成功。 如果用户已实际支付,那先把用户付费权益加上,再修复或确认程序问题。 3,用户退款 有时会遇到用户退款需求,由销售或运维部门发起内部退款流程,但由于我们商户号有好几个(对应不同项目),但财务部门只有一个,所以需要技术部门补充用户支付的更多订单信息(属于哪个商户号、微信订单号等),以便财务人员快速定位商户号,处理后续用户退费事宜。 4,其他场景 比如定期统计对账信息,领导查阅等。 二、商户平台页面对账 不涉及开发情况下,正常的对账,就是登录官方的微信商户平台,进行用户付费查询。 1,查询位置 商户平台首页-交易中心-交易管理-交易账单 2,批量订单查询 可以直接按交易时间、支付场景、交易状态、交易金额批量查询账单信息。 [图片] 3,单个订单查询 也可以直接按照微信订单号、商户订单号查询单个订单信息。 [图片] 4,其他位置查询 也可以在账单管理里,批量打包下载。 三、API对账单同步 1,商户平台查账不方便 在官方商户平台直接查询,是可以直接对账的。 但对于我们来说,有两点不方便。 1)我们商户号较多,来回登录各个商户号流程太麻烦了。 2)我们商户号通常由财务部门管理,技术不便登录。 2,官方提供的对账单下载API 1)申请交易账单 介绍: 该接口提供按天查询对账单文件(限三个月内),可选账单日期和类型(全部/成功订单/退款订单)。 调用后会返回账单文件下载地址,该地址30秒内有效,格式类似:https://api.mch.weixin.qq.com/v3/billdownload/file?token=xxx 文档地址: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_6.shtml 2)下载账单 介绍: 对下载地址download_url进行签名,并发起请求,即可下载到账单文件的数据流。 [图片] 账单文件包括明细数据和汇总数据两部分,每一部分都包含一行表头和若干行具体数据。 例如:交易账单 ALL.xlsx、REFUND.xlsx、SUCCESS.xlsx 文档地址: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_1_8.shtml 3,公司内部平台设计 1)同步时间为每日上午10点 根据微信商户平台官方说明建议,我们应该在订单的T+1日上午10点后同步,如果更早同步,可能遇到官方数据正在生成中情况。 通过内部定时job,调用账单生成接口,解析账单下载文件,将账单内容存储到内部数据库中。 多个商户号的对账信息,都同步到内部数据库。 2)内部平台增加对账单查询功能 面向特定权限人员: 页面应标明财务账单同步时间(T+1日10点后)。 页面可以结合自身账号体系,通过查询用户账号、支付日期、支付应用(多个商户号对应的应用)、内部订单号、微信订单号等条件,查询财务订单信息。 页面也可以按范围批量查询或导出财务账单信息。 画个建议流程图吧: [图片] 感谢阅读!
2021-05-10 - 小程序unionid与公众号openid打通问题
三方平台应用代小程序实现业务问题,我们之前有公众号的会员,是通过公众号的openid做的会员标识,现在做了个新的小程序,也打通了unionid,用户进入小程序是可以获取unionid的,但是我们之前的会员是没有绑定过unionid字段的,所以查询不到。我们的思路两个步骤做解决1.授权做三方平台账号绑定的时候,我们批量跑一下现有openid去调用获取用户信息的接口拿到unionid,但是只能查询关注公众号的粉丝,没关注的查不到,只能解决部分用户绑定问题。 2.小程序加个webview做一步公众号授权openid通讯给小程序,然后带着这公众号openid调接口查询,但是这种方式交互流程太多,用户体验不好。有没有更好方式打通呢?
2018-10-25 - 公众平台/小程序服务端API的access_token的内部设计
一、背景 对于使用过公众平台的API功能的开发者来说,access_token绝对不会陌生,它就像一个打开家门的钥匙,只要拿着它,就能使用公众平台绝大部分的API功能。因此,对于开发者而言,access_token的使用方式就变得尤其的重要。在日常API接口的运营中,经常遇到各种的疑问:为什么我的access_token突然非法了?为什么刚刚拿到的access_token,用了10min就过期了?对于这些疑问,我们提供出access_token的设计方案,便于开发者对access_token使用方式上的理解。 对于access_token的获取,可以参考公众平台的官方文档:auth.getAccessToken、获取Access token 二、access_token的内部设计 2.1 access_token的时效性 众所周知,access_token是通过appid和appsecret来生成的。内部设计的步骤如下: (1)开发者通过https请求方式: GET https://API.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET,传入appid及apppsecret的参数 (2)公众平台后台会校验appid和哈希(appsecret)是否与存储匹配,若匹配,结合当前时间戳,生成新的access_token。 (3)生成新的access_token的同时,会对老的access_token的过期时间戳更新为当前时间戳。 (4)返回新的access_token给开发者。 这里以图示的方式说明一下,新旧token交替过程: [图片] 从上图需要注意的几点: (1)公众平台存储层只会存储新老两个access_token,意味着假设开发者重复调用3次接口,则会导致最早的access_token立刻失效。 (2)虽然请求新的access_token后,老的access_token过期时间会更新为当前时间,但也不会立刻失效,原理请参考 【2.2 access_token 的逐渐失效性】 (3)出于信息安全考虑,公众平台并不会明文存储appsecret,仅存储appid以及appsecret的哈希值。因此开发者要妥善保管appsecret。当appsecret疑似泄露时,需要及时登录mp.weixin.qq.com重置appsecret。 2.2 access_token 的逐渐失效性 从【access_token的时效性】了解到,当开发者请求获取新的access_token时,老的access_token过期时间会被更新为当前时间,但此时不会立刻失效,因为公众平台会提供【5分钟的新老access_token交替缓冲时间】,因此也称为access_token 的逐渐失效性。 实现的原理是: 1. 由于老的access_token过期时间戳已被刷新,所以在API接口请求期间,带上的access_token解开后,过期时间戳会加上5分钟,然后和当前设备时间进行比对,若超过当前设备时间,判断为失效。 2. 公众平台的设备会保持时钟同步,但设备之间仍然可能会存在1-2分钟的时间差异,所以【5分钟】并非绝对的时间值。当开发者获取到新的access_token后应该尽快切换到新的access_token。 [图片] 从上图需要注意的几点: (1)由于存在设备时间同步的差异,可能会导致开发者遇到拿着老的access_token请求API接口,部分请求成功,部分请求失败的情况,建议开发者获取到新的access_token后尽快使用。 (2)通过理解两个图示,对开发者来说,access_token是相当关键且不能乱调的接口,建议开发者统一管理access_token,以免造成多次请求导致access_token失效。
2021-05-11