码迷,mamicode.com
首页 > 微信 > 详细

Force.com - 微信接口后台开发与配置

时间:2014-05-31 18:42:04      阅读:934      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   a   

为寻找国内免费云资源作为微信后台,花了一天时间试用SinaAppEngine(SAE),调试太不方便用户体验差。新浪作为媒体公司技术功底经不起考验,亚马逊能推出AWS,新浪还不行!更好选项是百度BaiduAppEngine(BAE),但最近尽然开始收费,还是安心回到force.com,至少老外承诺免费的东西一直免费且可靠。


第一步,申请force.com账号,请至developer.force.com申请,如是www.salesforce.com申请下来的是作为客户的账号,不适合开发人员;第二步,创建一个Apex Rest Class,来作为微信服务接口,这里创建的类是WeChatRestController,Rest接口名称是WeChatRest:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@RestResource(urlMapping=‘/WeChatRest/*‘)
global with sharing class WeChatRestController{
@HttpGet
    global 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(echostr + ‘ - ‘ + timestamp);
        RestContext.response.addHeader(‘Content-Type‘, ‘text/plain‘);
         
        RestContext.response.responseBody = Blob.valueOf(echostr);
         
        //return echostr;
    }
}
1
  

在微信中我们将使用这个接口来配置URL,配置时腾讯要求提供此URL,配置窗口如下:

bubuko.com,布布扣

腾讯将通过Get方式发送四个参数至此URL,URL格式如下(仅为示例):https://msd-developer-edition.ap1.force.com/services/apexrest/WeChatRest?signature=GenePoint&echostr=test&timestamp=111&nonce=222如果URL返回的值和四个参数中的echostr值一致则腾讯认为验证成功,如果不一致则认为验证失败,配置无法继续,偷懒的方法是直接返回该值即可,风险是你的URL也可以被其他人乱用。这里的echostr的值实际上是根据用户在腾讯后台配置的Token加上时间戳,再加上nonce参数的值按照一定的算法计算出来的,具体算法参照附注,这里不赘述。代码需要说明的地方是如果直接返回echostr,force.com默认会是一个xml结构的内容,腾讯会认为和echostr值不等,判断为配置失败。为此,需要通过Blog.valueOf方法来将其直接转换为文本信息。第三步,配置Site.com以启用公网访问此URLforce.com类以及网页等默认是需要用户验证后才能通过访问,但我们可以通过site.com启用公网访问此URL,为此首先需要创建域名,进入Develop->Sites,输入想创建的域名,例如笔者的域名为johnson0001:

http://johnson0001-developer-edition.ap1.force.com 

创建成功后下一步创建站点,点击New按钮:

bubuko.com,布布扣

在接下来的站点信息输入画面输入Site label,Site Name,选择任一页面作为“Active Site Home Page”(这里不需要建网页,任意选即可),保持其他选项不变,点击“save”按钮:

bubuko.com,布布扣

在紧接下来的画面里点击“Public Access Settings”按钮,

bubuko.com,布布扣

在接下来的画面里找到“Enable Apex Class Access”,点击Edit按钮

bubuko.com,布布扣

将WeChatRestController类添加到右边的列表里,这将使得该类支持匿名公开访问:

bubuko.com,布布扣

最后回到Sites首页,点击“Activate”按钮激活站点,此时既可以通过以下URL访问我们开发的接口(留意可能需要等几分钟URL才会生效):

https://johnson0001-developer-edition.ap1.force.com/services/apexrest/WeChatRest 

第四步,配置腾讯后台,在开发模式下,输入此URL,并输入任意Token,点击提交按钮,如腾讯提示成功则表明成功完成配置:

bubuko.com,布布扣
 
 

附注:验证URL Echostr算法:1. 将Token(用户在腾讯后台配置的值), 时间戳(腾讯请求URL时传过来的timestamp值),nonce(腾讯请求URL时传过来的nonce值)按照字母顺序进行排列;2. 排列好后拼接成一个字符串;3.通过sha1算法转换此字符串后的结果如果正常就是echostr的值,

Force.com - 微信接口后台开发与配置,布布扣,bubuko.com

Force.com - 微信接口后台开发与配置

标签:c   style   class   blog   code   a   

原文地址:http://www.cnblogs.com/johnsonwong/p/3762412.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!