简介
服务人员,是商家为用户提供服务和转化生意的重要一环。通过支付即服务,商家可在支付完成后为用户推送专属服务人员名片,方便用户快速添加专属服务人员为好友,将线下短时服务转化为线上持续服务,弱联系变为强连接,提升用户体验和商家运营效率。
微信支付账单页带服务人员名片
协助商家沉淀优质用户,为商家的服务带来持续、稳定的曝光,提供二次连接用户的机会。
服务人员信息展示
服务人员名片展示服务人员姓名、头像、门店等信息,并提供为服务人员点赞等互动功能,增强用户专属感的同时提升亲密度,利于双方发生二次联系。
快速好友添加
服务人员名片会直接展示服务人员二维码(企业微信或个人微信),方便用户快速添加专属服务人员为好友,将线下短时服务转化为线上持续服务,弱联系变为强连接,创造未来触达的可能性。
跨时空连接
支付即服务推送的服务人员名片可随时通过支付账单找回。即使用户在支付完成的当下未添加服务人员,只要后续产生了对商家服务的需求,可随时进入服务人员名片页面进行添加。支付即服务跨时空的连接方式满足了用户的延时需求,进一步提高商家连接用户的效率。
用户在商家支付完成后,可在微信支付账单页点击“联系商家xxx”(如点击左图中的联系商家服务人员),进入商家的服务人员名片,扫描二维码快速添加服务人员为好友。
产品优势
- 优势一:1 vs. N vs. N的框架模型
1 :N:N的模式,一个商户号可以对应着若干个门店,而一个门店下又对应着若干个服务人员。这种以细化到人的维度去触达用户的模式提高了商家与用户进行联系的效率,能较快地辐射到更多用户,且能给单个用户更具个性化的服务和营销。
- 优势二:企业微信、个人微信全方位支持
为了满足各行各业商家的服务人员在线下的真实服务现状,支付即服务产品对企业微信和个人微信进行了全方位的支持。
- 优势三:灵活分配服务人员
支付即服务在不改变商家原有下单支付流程的基础上,支持商家为用户灵活分配服务人员。服务人员的分配规则完全在商家内部闭环,满足不同商家的差异化需求。
支付即服务的接入流程如图所示:
- 商家开通支付即服务,并进行产品相关设置;
- 注册服务人员,由微信支付为每一位注册成功的服务人员生成一个服务人员ID;
- 商家在下单前进行服务人员分配,为指定的订单传入对应的服务人员ID;
- 该笔订单正常完成支付流程,用户即可在支付后的账单页点击查看服务人员名片。
- 在正式接入支付即服务前,你需要进行以下准备步骤:
- 选择接入模式:普通商户或普通服务商
- 申请参数:AppID、商户号
- 申请权限:分为普通商户和普通服务商
- 商户需要判断自己公司注册区域适用的接入模式和自身实际情况,申请成为普通商户或普通服务商:
- 普通商户自行申请入驻微信支付,无需服务商协助。
- 普通服务商则自身无法作为一个普通商户直接发起交易,其发起交易必须传入相关特约商户商户号的参数信息。
- 具体接入模式介绍请参考接入模式文档,并按照参考文档完成相应模式的接入。
- 请根据自身接入模式分别参考微信支付接入准备-普通商户或微信支付接入准备-普通服务商中的参数申请 - 配置API key - 下载并配置商户证书三个步骤申请接入参数。
- 商家开通支付即服务后,需在【微信服务商平台 (opens new window)】对支付即服务的产品功能进行如下相关设置。
- 商户号的超管及产品管理员方可进入产品设置页面进行操作,其中产品管理员是指在服务商平台员工管理中拥有支付即服务产品配置权限的员工。商家可按实际情况为相关员工配置该权限,配置流程如下:
- 超管或其他管理员通过扫码登录微信服务商平台 (opens new window)(若无法扫码登录说明超管还未绑定微信号,超管需先绑定微信号);
- 进入【账户中心—>员工账号管理】;
- 选择某一角色,点击配置权限,并勾选营销中心下的支付即服务产品配置权限,则该角色下的所有员工都拥有了支付即服务的产品管理员权限。
- 信息填写完成后,点击【确认】即可。
- 产品管理员配置完成后,产品管理员可进入【支付即服务产品设置】页面进行服务人员名片设置。页面操作路径:【产品中心—>我的产品—>支付即服务—>产品设置】。
- 【产品设置】页面如下图所示,具体内容包括上传商家logo、选择服务人员名称及选择名片功能模块。
- 说明:
- 商家logo
- 图片尺寸为120*120px,格式可为png、jpg、bmp、jpeg,大小需在2M以内。
- 服务人员名称
- 普通服务商可根据所在行业选择适合的服务人员名称,服务人员名称将展示在支付后消息入口和服务人员名片上。
- 例如: 若商家选择的服务人员名称为导购员,则支付后消息入口的文案展现为联系商家导购员,名片页面上服务人员姓名下方将展示XX门店导购员(其中XX门店展示该服务人员所在门店名称)。
- 提示
- 若服务人员名称列表中无合适的服务人员名称,可点击【查看指引】,按指引要求发送申请邮件至指定邮箱,微信支付侧将于5个工作日内进行审核并返回审核结果。
- 二维码模块
- 商家可选择展示个人二维码或群二维码(至少选择一个,两者可同时选择)。其中群二维码仅支持企业微信群活码。若需展示群二维码,则需通过注册API传入群二维码URL字段,或通过信息更新API为已注册服务人员增加群二维码URL字段。
- 其他模块
- 服务人员名片另外有电话(指致电给服务人员)和门店导航(指导航至服务人员所在门店)两个模块,商家可根据实际情况进行选择。选择后可立刻在页面右侧的名片预览区进行样式查看。
- 1. 接口规则
- 为了在保证支付安全的前提下,带给商户简单、一致且易用的开发体验,我们推出了全新的微信支付APIv3接口。该版本API的具体规则请参考。
- 为了帮助开发者调用开放接口,我们提供了JAVA、PHP、GO三种语言版本的开发库,封装了签名生成、签名验证、敏感信息加/解密、媒体文件上传 等基础功能(更多语言版本的开发库将在近期陆续提供)。
- 测试步骤:
- 1、根据自身开发语言,选择对应的开发库并构建项目,具体配置请参考下面链接的详细说明:
- wechatpay-java (opens new window)(推荐)、wechatpay-apache-httpClient (opens new window),适用于Java开发者。
- 注:当前开发指引接口JAVA示例代码采用wechatpay-apache-httpclient版本。
- wechatpay-php (opens new window)(推荐)、wechatpay-guzzle-middleware (opens new window),适用于PHP开发者。
- 注:当前开发指引接口PHP示例代码采用wechatpay-guzzle-middleware版本。
- wechatpay-go (opens new window),适用于Go开发者。
- 更多资源可前往微信支付开发者社区 (opens new window)搜索查看。
- 2、创建加载商户私钥、加载平台证书、初始化httpClient的通用方法。
- 示例代码
- javaphp
- 1@Before2public void setup() throws IOException {3 // 加载商户私钥(privateKey:私钥字符串)4 PrivateKey merchantPrivateKey = PemUtil5 .loadPrivateKey(new ByteArrayInputStream(privateKey.getBytes("utf-8")));6 7 // 加载平台证书(mchId:商户号,mchSerialNo:商户证书序列号,apiV3Key:V3密钥)8 AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(9 new WechatPay2Credentials(mchId, new PrivateKeySigner(mchSerialNo, merchantPrivateKey)),apiV3Key.getBytes("utf-8"));10 11 // 初始化httpClient12 httpClient = WechatPayHttpClientBuilder.create()13 .withMerchant(mchId, mchSerialNo, merchantPrivateKey)14 .withValidator(new WechatPay2Validator(verifier)).build();15}16 17@After18public void after() throws IOException {19 httpClient.close();20}
- 3、基于接口的示例代码,替换请求参数后可发起测试。
- 说明:
- 上面的开发库为微信支付官方开发库,其它没有审核或者控制下的第三方工具和库,微信支付不保证它们的安全性和可靠性。通过包管理工具引入SDK后,可根据下面每个接口的示例代码替换相关参数后进行快速测试。
- 开发者如果想详细了解签名生成、签名验证、敏感信息加/解密、媒体文件上传等常用方法的具体代码实现,可阅读下面的详细说明:
- 签名生成
- 签名验证
- 敏感信息加解密
- merchantPrivateKey(私钥)
- wechatpayCertificates(平台证书)
- APIV3Key(V3 key)
- 如想更详细的了解我们的接口规则,可查看我们的接口规则指引文档。
- 通过路径【产品中心—>我的产品—>支付即服务—>产品设置】,即可开通支付即服务,开通后完成产品设置。
- 【产品设置】页面如下图所示,具体内容包括上传商家logo、选择服务人员名称及选择名片功能模块。
- 重点步骤说明:
- 步骤6 使用企业微信的商户,通过《服务人员注册API》接口传入服务人员信息进行注册,微信支付返回服务人员ID给到商户,商户需将服务人员注册信息和对应的服务人员ID进行妥善保存。
- 步骤11 商户在下单时生成商户订单号,接着调用《服务人员分配API》传入“商户订单号 服务人员ID”,随后按照原有流程和支付接口完成支付即可。
- 文档展示了如何使用微信支付服务端 SDK 快速接入商家券产品,完成与微信支付对接的部分。
- 注意
- 文档中的代码示例是用来阐述 API 基本使用方法,代码中的示例参数需替换成商户自己账号及请求参数才能跑通。
- 以下接入步骤仅提供参考,请商户结合自身业务需求进行评估、修改。
- 步骤说明: 商户开发者使用「服务人员注册接口」为商户注册服务人员。
- 注意
- 调用接口前商家需完成支付即服务产品的开通和设置 (opens new window)。若普通服务商为特约商户调用接口,需在特约商户开通并完成产品设置后,与特约商户建立产品授权关系。
- 示例代码
- javaphp
- 1public void RegSmartGuide() throws Exception{2 //请求URL3 HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/smartguide/guides");4 // 请求body参数5 String reqdata = "{"6 "\"sub_mchid\":\"1234567890\","7 "\"store_id\":1234,"8 "\"corpid\":\"1234567890\","9 "\"name\":\"pVd1HJ6v/69bDnuC4EL5Kz4jBHLiCa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==\","10 "\"mobile\":\"pVd1HJ6v/69bDnuC4EL5Kz4jBHLiCa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==\","11 "\"qr_code\":\"https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=xxx\","12 "\"avatar\":\"http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0\","13 "\"group_qrcode\":\"http://p.qpic.cn/wwhead/nMl9ssowtibVGyrmvBiaibzDtp/0\","14 "\"userid\":\"robert\""15 "}";16 StringEntity entity = new StringEntity(reqdata,"utf-8");17 entity.setContentType("application/json");18 httpPost.setEntity(entity);19 httpPost.setHeader("Accept", "application/json");2021 //完成签名并执行请求22 CloseableHttpResponse response = httpClient.execute(httpPost);2324 try {25 int statusCode = response.getStatusLine().getStatusCode();26 if (statusCode == 200) { //处理成功27 System.out.println("success,return body = " EntityUtils.toString(response.getEntity()));28 } else if (statusCode == 204) { //处理成功,无返回Body29 System.out.println("success");30 } else {31 System.out.println("failed,resp code = " statusCode ",return body = " EntityUtils.toString(response.getEntity()));32 throw new IOException("request failed");33 }34 } finally {35 response.close();36 }37}
- 重要入参说明:
- store_id: 门店在微信支付商户平台的唯一标识(查找路径:登录商户平台—>营销中心—>门店管理,若无门店则需先创建门店)。
- name: 员工在商户企业微信通讯录上的姓名,需使用微信支付平台公钥加密该字段需进行加密处理,加密方法详见敏感信息加密说明。特殊规则:加密前字段长度限制为64个字节。
- 更多参数、响应详情及错误码请参见服务人员注册API接口文档。
- 步骤说明: 服务人员分配接口用于商户开发者在顾客下单后为顾客分配服务人员使用。
- 注意
- 调用服务人员分配接口需在完成支付之前,若分配服务人员晚于支付完成,则将无法在支付凭证上出现服务人员名片入口。
- 示例代码
- javaphp
- 1public void AssignGuide() throws Exception{2 //请求URL3 HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/smartguide/guides/LLA3WJ6DSZUfiaZDS79FH5Wm5m4X69TBic/assign");4 // 请求body参数5 String reqdata = "{"6 "\"out_trade_no\":\"20150806125346\""7 "\"sub_mchid\":\"1234567890\""8 "}";9 StringEntity entity = new StringEntity(reqdata,"utf-8");10 entity.setContentType("application/json");11 httpPost.setEntity(entity);12 httpPost.setHeader("Accept", "application/json");1314 //完成签名并执行请求15 CloseableHttpResponse response = httpClient.execute(httpPost);1617 try {18 int statusCode = response.getStatusLine().getStatusCode();19 if (statusCode == 200) { //处理成功20 System.out.println("success,return body = " EntityUtils.toString(response.getEntity()));21 } else if (statusCode == 204) { //处理成功,无返回Body22 System.out.println("success");23 } else {24 System.out.println("failed,resp code = " statusCode ",return body = " EntityUtils.toString(response.getEntity()));25 throw new IOException("request failed");26 }27 } finally {28 response.close();29 }30}
- 重要入参说明:
- out_trade_no: 商户系统内部订单号,要求32个字符内,仅支持使用字母、数字、中划线-、下划线_、竖线|、星号*这些英文半角字符的组合,请勿使用汉字或全角等特殊字符,且在同一个商户号下唯一。
- 步骤说明: 服务人员查询接口用于商户开发者查询已注册的服务人员ID等信息。
- 注意
- 个人微信商家
- 传入门店ID,查询该门店下的所有已注册服务人员的信息(每次查询不可超过10条)。
- 传入服务人员的工号(服务人员注册时填写)或手机号,查询单个服务人员的信息。
- 企业微信商家
- 传入门店ID,查询该门店下的所有已注册服务人员的信息(每次查询不可超过10条)。
- 传入服务人员的企业微信员工ID或手机号,查询单个服务人员的信息。
- 服务人员注册API和查询API请求URL相同,区别主要是在body和query,请注意区分。
- 示例代码
- javaphp
- 1public void QueryGuide() throws Exception{2 //请求URL3 HttpGet httpGet = new HttpGet("https://api.mch.weixin.qq.com/v3/smartguide/guides?store_id=1234&sub_mchid=1234567890");4 httpGet.setHeader("Accept", "application/json");56 //完成签名并执行请求7 CloseableHttpResponse response = httpClient.execute(httpGet);89 try {10 int statusCode = response.getStatusLine().getStatusCode();11 if (statusCode == 200) { //处理成功12 System.out.println("success,return body = " EntityUtils.toString(response.getEntity()));13 } else if (statusCode == 204) { //处理成功,无返回Body14 System.out.println("success");15 } else {16 System.out.println("failed,resp code = " statusCode ",return body = " EntityUtils.toString(response.getEntity()));17 throw new IOException("request failed");18 }19 } finally {20 response.close();21 }22}
- 重要入参说明:
- userid: 员工在商户企业微信通讯录使用的唯一标识,企业微信商家可传入该字段查询单个服务人员信息;不传则查询整个门店下的服务人员信息。
- 步骤说明: 服务人员信息更新接口用于商户开发者为商户更新门店服务人员的姓名、头像等信息。
- 注意
- 个人微信商家、企业微信商家均支持服务人员信息更新。
- 示例代码
- javaphp
- 1public void UpdateGuide() throws Exception{2 //请求URL3 HttpPatch httpPatch = new HttpPatch("https://api.mch.weixin.qq.com/v3/smartguide/guides/LLA3WJ6DSZUfiaZDS79FH5Wm5m4X69TBic");4 // 请求body参数5 String reqdata = "{"6 7"\"sub_mchid\":\"1234567890\","8 9"\"name\":\"pVd1HJ6v/69bDnuC4EL5Kz4jBHLiCa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==\","10 "\"mobile\":\"pVd1HJ6v/69bDnuC4EL5Kz4jBHLiCa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg==\","11 "\"qr_code\":\"https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=xxx\","12 "\"avatar\":\"http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0\","13 "\"group_qrcode\":\"http://p.qpic.cn/wwhead/nMl9ssowtibVGyrmvBiaibzDtp/0\""14 "}";15 StringEntity entity = new StringEntity(reqdata,"utf-8");16 entity.setContentType("application/json");17 httpPatch.setEntity(entity);18 httpPatch.setHeader("Accept", "application/json");1920 //完成签名并执行请求21 CloseableHttpResponse response = httpClient.execute(httpPatch);2223 try {24 int statusCode = response.getStatusLine().getStatusCode();25 if (statusCode == 200) { //处理成功26 System.out.println("success,return body = " EntityUtils.toString(response.getEntity()));27 } else if (statusCode == 204) { //处理成功,无返回Body28 System.out.println("success");29 } else {30 System.out.println("failed,resp code = " statusCode ",return body = " EntityUtils.toString(response.getEntity()));31 throw new IOException("request failed");32 }33 } finally {34 response.close();35 }36}
- 重要入参说明:
- guide_id: 务人员在支付即服务系统中的唯一标识。
- A:如果是普通特约商户自己调接口,不传即可;如果是普通服务商帮特约商户调接口,传特约商户的商户号。
- A:获取corpid可进入企业微信的管理后台,查找路径:【我的企业->企业信息→查看“企业ID”】(需要有管理员权限)。
- A:是的,注册时必须传入门店ID。该门店ID是微信支付门店系统的编码,查找路径:【登录商户平台->营销中心→门店管理】,门店管理页面下的门店编号即为需要填写的门店ID(该门店信息与企业微信的门店系统无关)。
- 若未创建门店,则需创建门店并通过腾讯地图审核后,方可使用门店ID进行注册。
- A:支付前。建议当商家生成当前交易的“商户订单号”时,通过“服务人员分配API”将“服务人员ID 商户订单号”传给微信支付,并按照原有流程引导用户完成支付即可。若分配服务人员晚于支付完成,则将无法在支付凭证上出现服务人员名片入口。
- A:使用服务人员分配API进行分配时,服务人员的分配机制由商家内部闭环,可以灵活掌控。在支付前调用分配接口时,商家可自行决定分配哪名服务人员,商家可选择随机分配、按时间段分配,或为某笔订单指定特定服务人员的分配方式(例如在线下门店支付时,可分配当前为该顾客提供服务的服务人员)。使用免开发版本时,商户号下的所有订单将随机分配给不同服务人员,商家可通过小程序调整服务人员分配的时间段,但是不能针对不同订单分配特定的服务人员。
- 如下图所示,服务人员名称将展示在支付后消息入口和服务人员名片上。例如若商家选择的服务人员名称为“导购员”,则支付后消息入口的文案展现为“联系商家导购员”,名片页面上服务人员姓名下方将展示“门店名称 导购员”。
- 商家可根据所在的行业选择适合的服务人员名称,若产品设置页面的服务人员名称列表中无合适选项,商家可按照本指引申请所需的服务人员名称。
- 通用性:名称不含品牌名/门店名等商家个性信息,可应用到同行业内的其他商家;
- 契合性:名称与所选行业及使用场景相符合;
- 唯一性:不能重复申请目前已在服务人员列表中的名称;
- 合法性:符合法律法规,不含敏感词。
- 按照以下标题和正文格式发送邮件至指定邮箱,微信支付将在5个工作日内审核并通过邮件返回审核结果。
- 邮箱地址: payservice@tencent.com
- 邮件标题: XXX公司服务人员名称申请
- 正文内容:
- 公司简介
- 申请服务人员名称
- 使用场景介绍
- 联系人及联系方式
- 为了降低商家的使用门槛,支付即服务提供了免开发版本供使用个人微信的商家接入,通过路径【产品中心—>我的产品—>支付即服务】,即可开通支付即服务,开通后完成产品设置。
- 个人微信商家需要超管或产品管理员进入【支付即服务】小程序邀请服务人员注册。
- 步骤三 选择某个服务人员,进入后为其设置分配规则,可根据商家的实际经营状况为每位服务人员设置为其自动分配订单的时间,并点击保存。
- 以上步骤完成后,支付即服务免开发版本即配置完成,在5分钟内即可生效,显示【自动分配中】的服务人员的名片将被随机分配到对应时间段的订单中。
- 注意
- 打开自动分配按钮后,使用API分配服务人员将无效。
- 若未给服务人员设置分配规则,则该服务人员不会实现自动分配。
- 免开发版本仅支持商户号下的所有订单随机分配给不同服务人员,不能针对不同门店的订单分配特定的服务人员。
- 流程
- 对于使用个人微信的商家,由于个人微信属于个人财产,因此需通过小程序邀请授权的方式完成注册流程。
- 个人微信商家需要超管或产品管理员进入【支付即服务】小程序邀请服务人员注册,具体流程如下:
- 步骤一 产品管理员进入【微信支付商家助手】小程序,在首页点击跳转至【支付即服务】小程序(必须由商家助手小程序跳转进入)。进入后,点击【服务人员管理】,然后在门店列表页选择需邀请服务人员的门店。点击添加服务人员,通过转发或扫码的方式邀请服务人员注册。
- 若无法在“商家助手”小程序中找到“支付即服务”入口,请按以下方式进行排查:
- 确认是否已在商户平台开通支付即服务并完成产品设置;
- 删除小程序后重新登录进入。
- 对于无线下门店的线上场景(例如小程序),也需在微信支付商户平台注册一个专供线上场景使用的门店,门店地址可设为品牌的总部或办公场所(可通过单个创建,在腾讯地图上直接选择一个地点,该方法不会触发腾讯地图审核,更加高效)。
- 认证完成后的门店,需经过2个小时左右方可在支付即服务小程序中同步门店信息。若门店创建并认证后,进入支付即服务小程序中依然提示没有门店可选,可耐心等待,并尝试删除小程序后重新登录进入。
- 步骤二 服务人员填写信息。服务人员扫码或收到被邀请的消息后,进入填写注册信息页面,在该页面填写正确的信息并提交。除工号为选填信息外,其他信息均为必填信息。服务人员填写完成后提交即可。
- 步骤三 产品管理员管理员审核信息。产品管理员再次进入【支付即服务】小程序,点击“服务人员审核”即可看到服务人员提交的注册信息,确认无误后点击通过即可完成注册(若信息有误,可选择驳回并再次发起邀请)。
- 注册完成后,会为每位服务人员生成服务人员ID。小程序中,服务人员列表页面会显示服务人员的姓名、服务人员ID等信息,点击复制即可将服务人员姓名、电话和ID复制到粘贴板中,同时,点击该服务人员将进入服务人员信息详情页,可看到服务人员注册时填写的信息。商家可将该服务人员的ID等信息进行本地存储,便于后续使用。
以上内容是支付即服务简介和使用操作流程,如有不明白之处可以咨询与我们。