B2C场景:微信与C4C 服务请求的集成实现
1. 背景
以一个简单的场景为例,用户通过关注相关的公众号,在C4C系统里,创建与该用户相关联的个人客户账号。然后用户可以根据需求通过公众号创建服务请求。管理员可以在C4C系统里回复服务请求,然后回复信息将会推送给用户。
2. 前提条件
在这个集成过程中,需要满足如下前提条件:
- 你需要自己搭建一个中间服务器用以转接和转发微信服务器和C4C系统的信息。
- C4C端需要发布对应的接口
3. 备注
- 整个集成场景主要是基于SOAP协议的Webservices, 对应的OData service版本在2019年的版本中陆续提供。
4. 集成流程
4.1 流程图
4.2 流程说明
- 用户关注公众号,中间服务器获取关注用户信息,在C4C系统创建该用户的个人客户信息;
- 用户通过公众号创建客户账号,中间服务器接受用户请求,通过C4C提供的接口,在C4C系统创建客户账号;
- 用户通过公众号创建ticket,中间服务器接受用户请求,通过C4C提供的接口,在C4C系统里创建ticket;
- 管理员在C4C系统里回复信息,信息通过C4C配置的接口,转发给中间服务器,中间服务器将信息推送给用户。
4.3 流程开发内容
- 中间服务器的开发
- C4C系统后台接口配置
- 微信公众号交互网页开发
5.设计实现
5.1 中间服务器
要搭建自己的中间服务器,以SAP SCP 为例,首先请参看官方的SCP帮助文档来了解如何在SCP上搭建一个节点服务器。如下内容则是关于节点服务器的一些主要的实现逻辑,具体详情,可以参考范例代码。
5.1.1监听路径及功能
路径 | 请求 | 功能 |
GET | 验证与微信公众号服务器的连接 | |
POST | 接收公众号发来的信息及各种事件 | |
/c4c/wechat | POST | 接收C4C系统发来的信息 |
/getWXWebToken | POST | 获取公众号网页所需token及openid |
/web/create | POST | 处理公众号网页发送的创建请求 |
/web/update | POST | 处理公众号网页发送的更新请求 |
/web/get | GET | 处理公众号网页发送的取数请求 |
5.1.2 处理公众号接口密钥
通过微信公众号接口:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 获取访问其他接口所需的密钥;因为密钥的有效时间为2个小时,并且新的密钥一旦生成,旧的就会失效。所以为了避免多用户操作的密钥失效的问题,需要将密钥存在服务器里,并且定时刷新密钥,是所有用户都是用保存的密钥,避免密钥重复刷新。
5.1.3 验证微信公众号服务器
在公众号管理页面类,按如下格式配置公众号信息:
保存时,微信服务器会将配置的token和一些参数以GET方式发送到所配的服务器路径“/wechat”上,在中间服务器上用相同的token进行编码,并与签名比对,实现服务器的相互连接。中间服务器接收的参数有:token、timestamp、nonce、signature;
1)将token、timestamp、nonce三个参数进行字典序排序; 2)将三个参数字符串拼接成一个字符串进行sha1加密 ;3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
5.1.4 生成公众号自定义菜单
调用微信公众号接口:http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN ACCESS_TOKEN 用先前存在服务器的密钥。具体调用参数参考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013
5.2 C4C 配置
5.2.1 创建混搭Web服务(Mashup Service)
创建一个混搭Web服务(Mashup Service)来跟你的中间服务器交互,具体步骤如下:
- 首先进入管理员工作中心,并选择业务灵活性工作中心视图。
- 选择混搭Web服务,并点击新建。
- 选择REST服务。
- 在新的界面填入相应的信息。 其中服务信息部分的url填的是:<你的中间服务器地址>/c4c/wechat。
5.2.2 创建社交媒体通道
为微信创建一个社交媒体通道,这个通道就是相关公众号在C4C系统的体现。在创建时需要把先前创建的混搭web服务(mashup service)的ID填进去。具体步骤如下:
- 进入管理员工作中心,并选择服务与社交工作中心视图。
- 在社交媒体模块下,打开社交媒体渠道这个链接。
- 点击页面右上角的新建。
- 选择Wechat作为社交媒体渠道类型。
- 维护渠道编号,渠道,以及在上一步创建的混搭Web服务 (Mashup Service )编号。 如下图所示:
5.2.3 C4C对外接口
我们推荐使用ODATA接口来进行与C4C系统的交互,但是由于现在标准产品提供的ODATA接口有限,部分接口暂时需要使用soap协议的web service,缺失的接口,部分已经计划在2019年的版本中陆续开放,请注意关注官方的帮助文档,查看最新可用的ODATA接口列表。此外,还可以在Influence上提交反馈,可能会考虑在后续的版本中开放。
5.2.3.1 ODATA接口
在C4C里,我们提供了标准的ODATA service:https://<host_url>/sap/c4c/odata/v1/c4codata,在这个service下边有各种entity,通过https://<host_url>/sap/c4c/odata/v1/c4codata/entityCollection来对数据进行增删改查。
5.2.3.2 Web Service接口
通过下图中的步骤,来配置和获取web service接口:
5.3 微信公众号网页
具体可以参考sample code。
Nice,如果标识开发团队可以提供微信服务器消息转发组件就更美了。。