腾讯EC .net API对接第三方系统
最近公司销售部门用到了腾讯EC,实现公司内部OA系统与腾讯ec的数据同步,要求如下:
1、OA内部系统账号与腾讯ec登陆账号同步
2、首先做义工客户端工具用来把现有客户导入到EC,销售人员的客户信息与EC同步,同时EC添加客户也要同时保存到OA系统内部,两边实现同步
在此不得不吐槽一下,腾讯EC的api,竟然没有导入用户的功能,各种验证,由于内部OA使用比较长,以前手机号码有的填的手机号,有的是固话,本想直接导入到EC电话字段,ec的电话字段竟然只认手机号,同时也不得不说一下ec的产品经理,在我眼里特么他们就会说,没有安排,就是这么设计的,时间成本,那垃圾接口都难用成这样了,还不改改吗,难怪EC的客户比起钉钉来真是差远了,,,,,,,,,,,,,,,,,吐槽一下。
3、公司内部语音及电话记录自动导入到腾讯EC
4、各种自定义字段来存OA系统里面的客户信息字段
首先,封装一个通用的用来请求Https,返回json数据的网络请求方法,如下图:

腾讯EC请求接口必须要的access_token,由于token每两小时过期,于是写了一个通用的辅助缓存类,用来缓存token及其他常用数据,使用了System.Runtime.Caching的内存缓存实现:

接着就是获取token的方法和过期自动刷新token

下面说一下导入oa客户的业务了,由于腾讯EC没有同步系统账号的功能只有在api后台有个导入模板的功能,没办法只能先用表格把系统用户导入ec,然后用手机号来对应ec账号和系统账号,通过手机号拿查询ec获取id,同时也通过手机号获取oa系统内部人员和客户的关系一次来导入客户进入ec,公司系统客户信息有很多字段信息和多个联系人,而ec的可用字段只有那几个,没办法在后台建立了很多个自定义字段来做对应,总之是先查出系统的客户信息和联系人信息通过构建ec需要的Json对象*(当然还包括多个自定义字段),构造号客户添加的json直接post到接口,不得不说各种验证导致了各种错误,于是就在接口返回的地方加了日志来记录导入数据的错误信息,好在返回的错误信息还算明确
客户相关操作:

错误日志信息:

相关实体类及缓存键值:

最后附上同步程序的客户端:


此程序封装客户导入,同步,查询及同步跟踪记录的功能,跟踪记录是在另一套客服系统里面实现自动同步数据到ec,于是把ecapi封装成类库供其他程序调用。
总的来说,第三方接口对接很简单,但是感觉EC 的api接口实在是不强大,很多不合理的地方,接口至今也不完善,本文记录一次第三方系统对接EC的过程,同时也提供了一个很简单思路,仅供记录,高手勿喷,喷子勿喷,谢谢。
有需要源码和交流的可以联系:1013454562
另外也可加入本人新建的QQ群:487501652
腾讯EC .net API对接第三方系统的更多相关文章
- 第九章 Odoo 12开发之外部 API - 集成第三方系统
Odoo 服务器端带有外部 API,可供网页客户端和其它客户端应用使用.本文中我们将学习如何在我们的客户端程序中使用 Odoo 的外部 API.为避免引入大家所不熟悉的编程语言,此处我们将使用基于 P ...
- 使用SAP open connector调用第三方系统的API
我们把hubspot这个SaaS CRM作为第三方系统,首先登录hubspot,创建一个新的API key: 把创建的key拷贝到剪切板里: 然后登录SAP Cloud for Customer上的o ...
- 如何更优雅地对接第三方API
本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程 ...
- 与第三方系统对接,生成Cloud出入库单据
案例: Cloud的采购订单同步到第三方系统,第三方系统入库后同步生成Cloud采购入库单. 解决方案:调用采购订单的下推API,先生成保存状态的采购入库单(采购入库单中的仓库是必填项,可以在采购订单 ...
- 第三方API对接如何设计接口认证?
一.前言 在与第三方系统做接口对接时,往往需要考虑接口的安全性问题,本文主要分享几个常见的系统之间做接口对接时的认证方案. 二.认证方案 例如订单下单后通过 延时任务 对接 物流系统 这种 异步 的场 ...
- 如何从零开始对接第三方登录(Java版):QQ登录和微博登录
前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了QQ和微博这2大常用软件的一键登录,总的来说其实都挺简单的,可能会有一点小坑,但不算多,完整记录下来方便后来人快速对接. 后台设 ...
- JIRA API 对接
系统要跟JIRA对接,将本系统数据发送给jira. 开始一头雾水怎么让数据传过去已什么形式存在,是存数据库呢还是怎么显示呢.研究半天发现其实只要将原数据作为json数据提供给jira接口,jira接口 ...
- java 调用第三方系统时的连接代码-记录
前言:该文章主要是总结我在实际工作中遇到的问题,在调取第三方系统的时候出现的问题,算自己的总结.各位博友如果有什么建议或意见欢迎留言指正. 先将准备传入参数 再与第三方系统建立连接 再第三方系统处理后 ...
- kubernetes对接第三方认证
kubernetes对接第三方认证 kubernetes离线安装包地址 概述 本文介绍如何使用github账户去关联自己kubernetes账户.达到如下效果: 使用github用户email作为ku ...
随机推荐
- InstallShield的工程类型的选择
转载:http://blog.csdn.net/wuxiaoqrs/article/details/45717695 InstallScript vs. Basic MSI InstallScript ...
- Vmware 设置NAT模式
NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网.也就是说,使用NAT模式可以实现在虚拟系统里访问互联网. NAT模式下的虚拟系统的TCP/IP配置信息是由V ...
- caffe2 环境的搭建以及detectron的配置
caffe2 环境的搭建以及detectron的配置 建议大家看一下这篇博客https://tech.amikelive.com/node-706/comprehensive-guide-instal ...
- hexo + Github 搭建问题综述
1.Mac下安装hexo Error: Cannot find module './build/Release/DTraceProviderBindings 解决: solution 2.node s ...
- 论OI中最大值的选取
为什么我的Floyd会输出负数啊? 为什么我的代码写对了却全都爆零了啊? 那么很可能是你的INF取大/小了! 那么inf到底应该取什么值呢? 首先,inf应该要比一般的题目中出现的数据要大,但是又不能 ...
- TreeMap的应用
public class SortedMap { //treemap按key排序,默认是升序,可自定义降序 public static void main(String[] args) { Map&l ...
- shell 判断变量是否为空
一句话判断 [ ! $a ] && echo "a is null" 1.判断变量 read -p "input a word :" word ...
- VS2010快捷键大全----养成良好的习惯
VS2010版快捷键Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O ...
- 049——VUE中使用animation与transform实现vue的动画效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【LeetCode 222_完全二叉树_遍历】Count Complete Tree Nodes
解法一:递归 int countNodes(TreeNode* root) { if (root == NULL) ; TreeNode *pLeft = root->left; TreeNod ...