salesforce 和微信的集成(一)通过SFDC Site打开微信开发接口
本文代码参照柳峰的代码。十分感谢。
开始在做微信集成的时候,是采用微信+阿里云服务器+SFDC这种模式进行的。在阿里云上部署java程序实现和微信服务器的沟通,在通过SFDC的对外API实现和java程序的沟通。这种方式使项目成本提升,并且大多数客户难以接受。
后来在论坛和qq群里,看大家的讨论,发现可以采用REST API来实现。在我的传统观念里REST API需要使用SeessionID和token的。使用site功能,就相当于把借口直接暴露出来,省去了Oath认证的步骤,一般在做接口测试的时候会这么做。(Site这个功能,在有的org里没有,需要申请,这部分内容我不打了解。不过我申请的免费开发org里有这个功能)
闲言不多说。
1、在SFDC上创建Site,设置如图。
2、点击保存按钮进入到如图的页面(下次进来的时候,要先edit,然后保存,才能再次来到这个页面)
在标示为1的地方设计Site访问的class,和profile的设置方法类似。标记为2的地方不可以添加任何的页面,否则程序出现问题。
3、新建一个类代码如下
@RestResource(urlMapping='/CoreService/*')
global with sharing class ApexRESTCycleExample {@HttpGetglobal static void doGet(){// 微信加密签名 String signature=RestContext.request.params.get('signature'); // 时间戳 String timestamp=RestContext.request.params.get('timestamp'); // 随机数 String nonce=RestContext.request.params.get('nonce'); // 随机字符串 String echostr=RestContext.request.params.get('echostr'); system.debug(signature+'====='+timestamp+'====='+nonce+'====');String endstr= '';if(checkSignature(signature,timestamp,nonce)){RestContext.response.addHeader('Content-Type', 'text/plain');RestContext.response.responseBody = Blob.valueOf(echostr);}} public static boolean checkSignature(String signature, String timestamp, String nonce) { String[] arr = new String[] { 'weixin', timestamp, nonce }; // 将token、timestamp、nonce三个参数进行字典序排序 // Arrays.sort(arr); arr.sort();String content = ''; for (Integer i = 0; i < arr.size(); i++) { content += arr[i]; }Blob hash = Crypto.generateDigest('SHA1',Blob.valueOf(content));String hexDigest = EncodingUtil.convertToHex(hash);String singUpperCase = hexDigest.toUpperCase();System.debug(singUpperCase +'==============='); // 将sha1加密后的字符串可与signature对比,标识该请求来源于微信 Boolean flag = singUpperCase != null ? singUpperCase .equals(signature.toUpperCase()) : false;system.debug(flag + '==============');return flag; } }
该段代码参考 柳峰的博客编写。
4、测试程序如图。注意:必须以https的形式访问,否则失败
5、设置微信中的接口
复制上面的link到微信里,就可以成功打开了。
问题总结:1、我在写的时候,由于不知道可以直接调用API返回数据,绕了很多的弯路。
2、要以https的方式请求。
salesforce 和微信的集成(一)通过SFDC Site打开微信开发接口相关推荐
- H5静态页面跳转微信小程序;从外部浏览器,点击H5链接跳转打开微信小程序;以及在微信内直接点击H5链接打开微信小程序;
参考链接 需求:从外部浏览器,点击H5链接跳转打开微信小程序:以及在微信内直接点击H5链接打开微信小程序: 步骤1: 小程序开发需要使用云开发创建项目,使用云开发生成的项目会自带云函数文件夹: 步骤2 ...
- 如何在微信复制链接直接可以用浏览器打开 微信调用手机浏览器打开指定链接
由于微信的限制,应用文件在内置浏览器中下载全部被屏蔽掉,造成很多人用微信扫描二维码下载时,界面显示一片空白,容易误导以为在下载呢 <!DOCTYPE html> <html> ...
- 打开微信显示wifi连接到服务器地址,打开微信就能连接附近wifi,可惜大家都不知道,赶紧告诉家人...
大家好,谢谢观看本期生活小妙招,我是生活当当家,一切妙招都来于生活. Wi-Fi是一种可以将个人电脑.手持设备(如PDA.手机)等终端以无线方式互相连接的技术. 就是可以通过wifi功能(wlan)使 ...
- 微信小程序的一些基本知识,微信小程序开发
什么是**微信小程序** 微信小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用.也体现了"用完即走"的 ...
- android 微信 备份通讯录,微信备份手机通讯录在哪?怎么用微信备份手机通讯录?...
微信5.2升级后,微信界面有了很大的变化,对于有些功能设置你可能一时半会找不到在哪里,像微信通讯录备份很多人都找不到,下面说说微信备份手机通讯录在哪?怎么用微信备份手机通讯录?不明白的朋友可以参考本文 ...
- iOS微信支付集成 SDK1 7 5
最近做了一个新项目,涉及到支付宝和微信支付,支付宝和微信都是业界的老大哥,相信大家都有所觉得文档.SDK都是各种坑吧(纯粹吐槽而已),这是继上篇支付宝支付集成后接着的微信支付集成. 1.微信商户申请步 ...
- H5与企业微信jssdk集成
H5与企业微信jssdk集成 一.公众号设置 注册企业微信,在应用与小程序栏目中,设置可信域名,配置公众号菜单.可信域名不得不说下,在最初开发时,认为设置并验证后,微信认证接口会实现跨域请求,其实并没 ...
- SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据
这是Jerry 2020年的第84篇文章,也是汪子熙公众号总共第266篇原创文章. 本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发 ...
- SAP系统和微信集成的系列教程之一:微信开发环境的搭建
系列目录 (1) 微信开发环境的搭建 ( 本文 ) (2) 如何通过微信公众号消费API (3) 微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据 (4) 如何将SAP C4C主数据变化 ...
最新文章
- 基于K-gram的winnowing特征提取剽窃查重检测技术(概念篇)
- 最落寞的C9高校:从未没落
- 全能系统监控工具dstat
- ZooKeeper 3.4.5 分布式环境搭建详解
- 剑指 Offer 28. 对称的二叉树【无取巧,易于理解!】
- vs2012编译boost_1_54_0
- 模拟退火算法解决np_P和NP问题与解决方案| 演算法
- Magento重建所有索引方法
- dj鲜生-31-用户中心-功能需求分析
- weblogic 12 开启debug端口配置
- 获取程序下基目录下的文件的
- jdbc执行多条sql_JDBC相关知识总结
- 算法:泽勒的一致性 给定一个日期,输出这个日期是该年一周中的星期几 【c++ java python版本】
- 自动化运维脚本模块-stmplib,emai模块
- Ubuntu使用cmake出现Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
- 6. Lots of Parabolas
- linux下scala脚本运行报错error: expected class or object definition 解决方案
- 2020-09-15,小米笔试,java
- GPIO的配置及使用(MC9S08AW60)
- ElasticSearch:部署ElasticSearch Kibana
热门文章
- c++读取8位和24位BMP位图数据 俺的作业
- 自动化编辑器零代码手机RPA脚本开发系列教程四
- 收集一些有质感、有内涵的网站 (转载)
- Ubuntu下更新软件 updata,upgrade
- 监控swagger 接口变动
- C++文本文件,二进制文件,write(),read(),map容器,seekg(),seekp(),tellg(),tellp()函数
- 内存分配---FF、BF、WF三种算法
- Html5的Canva绘制动态时钟显示当前时间!!!(附源码)
- 有时候Mac下删除文件磁盘空间无法释放
- K-meas聚类算法