zoukankan      html  css  js  c++  java
  • 记一次前端服务端客户端三方联调的总结

    由于负责项目的原因第一次与客户端服务端三方联调,感觉有必要总结一下,虽然内容不复杂 技术也不难,总结总是好的。

    就是要求用户去关注公众号,成功之后给予金币奖励。

    和服务端的交互:进入页面,反复轮循去请求接口,服务端轮循去查询数据库,当得到返回结果是成功的时候销毁该页面。30s后停止请求。

    和客户端的交互:

    JS模块名定义为:wechat。
    提供接口供js调用:
    launchWeChat()  调起微信
    pasteAccountName(String accountName)复制公众号文字
    getWeChatCode() 用于获取微信登录的code值,返回值是string
    onWeChatGuideGoToTaskPage()弹窗点击确认返回任务列表
    getWeChatFocusRequestEncryptString() 获取请求参数的加密数据,返回值是string
    decryptWeChatFocusString(String dataString)  获取解密数据,返回值是string

    这里涉及到的一个点是:为了保证安全,前端这边传递给服务端的数据要是加密的,服务端返回的数据也是加密的,所以这时候H5就做了一个中转。

    将数据传递给客户端,客户端加密后,H5传递给服务端

    服务端返回的数据先传递给客户端,客户端解密后传递给H5

    这里要注意一点,当服务端返回的数据是string类型而不是json时,dataType:json,ajax会去走error方法,返回值是:readysSatus:400,responseText:"aaaa",status“200”,statusText:"ok"

    这时要把json改为text,dataType:json

    这里记录下源码仅供学习

    <body>
      <div class="focus">
        <ul class="clear">
          <li>
            <h3><span>1</span><em>在微信中点击放大镜</em></h3>
              <img src="./images/step1.png" alt="">
            </li>
          <li>
            <h3><span>2</span><em>点击搜索框,长按粘贴“太易文化”,点击搜索</em></h3>
              <img src="./images/step2.png" alt="">
          </li>
          <li>
            <h3><span>3</span><em>找到“pillar工作室”公众号,点击关注</em></h3>
              <img src="./images/step3.png" alt="">
          </li>
        </ul>
        <a href="" id="toFocus">立即关注</a>
      </div>
      <div id="jinbiLayer">
        <div class="jinbi-box">
            <h3 class="jb-tit"><img src="./images/jb-tit.png"></h3>
            <span class="jb-close" id="jb-close" ><img src="./images/close.png"></span>
            <div class="jb-txt"><span id="gold-num"></span>金币</div>
            <p>恭喜,已完成关注任务</p>
            <a class="toDisk" href="com.calendar2345://task/android">继续其他任务</a>
         </div>
         <div class="ad-pic"><a href="" id="ad-link"><img src="" id="ad-pic"></a></div>
       </div>
      <script src="http://www.77tianqi.com/js/jquery.min.js"></script>
      <script>
        $(function(){
          //轮循30s每2s一次5次每4s一次5次
          var weChatMethods={
            toWeChatResult: function (){
              var _this = this;
              var $time = 0;
              var timerOne = setInterval(function(){
                if($time<5){
                  $time++;
                  _this.toWechatAjax();
                  if($time>=5){
                    clearInterval(timerOne);
                    var timerTwo = setInterval(function(){
                      $time++;
                      if($time>=10){
                        clearInterval(timerTwo);
                       }
                    _this.toWechatAjax();
                  },4000)
                }
              }
            },2000)
          },
          //请求服务端获取是否关注成功
          toWechatAjax:function (){
            var postData = window.wechat.getWeChatFocusRequestEncryptString();
            //alert(postData);
            $.ajax({
              type: "post",
              url: "http://dan.oyinji.com/frame/api/task/queryFocusTask",
              dataType: 'text',
              data:{"data":postData},
              success: function (msg) {
                var msg = window.wechat.decryptWeChatFocusString(msg);
                var msg = JSON.parse(msg);
                var data = msg.data;
                if(msg.code==200 && data.taskFinish=="true"){
                   console.log("关注成功");
                   var jinbiNum = data.taskGold;
                   $("#jinbiLayer").show();
                   $("#gold-num").html(jinbiNum);
                   $("#ad-link").attr("href",data.adverImage);
                   $("#ad-pic").attr("src",data.adverUrl);
                }else{
                  alert("关注失败");
                }
            },
            error: function (msg) {alert(JSON.stringify(msg))}
          })
        },
        //点击事件
        events:function(){
          //点击立即去关注
          $("#toFocus").click(function(){
                //调起微信
            window.wechat.launchWeChat();
            //复制文案给客户端
            window.wechat.pasteAccountName('太易文化');
        })
         //点击金币弹窗按钮
        $("#closeBtn").click(function(){
            //弹窗点击确认返回任务列表
            window.wechat.onWeChatGuideGoToTaskPage();
          })
        $("#jb-close").click(function(){
            $('#jinbiLayer').hide();
          })
        },
        //判断是否有后台切入前台
        onWebViewStateSwitched: function (isForeground){
            if(isForeground==true){
              toWeChatResult();
            }
        }
      }
      weChatMethods.events();
    })
     
    </script>
    </body>
  • 相关阅读:
    程序员的7中武器
    需要强化的知识
    微软中国联合小i推出MSN群Beta 不需任何插件
    XML Notepad 2006 v2.0
    Sandcastle August 2006 Community Technology Preview
    [推荐] TechNet 广播 SQL Server 2000完结篇
    《太空帝国 4》(Space Empires IV)以及 xxMod 英文版 中文版 TDM Mod 英文版 中文版
    IronPython 1.0 RC2 更新 1.0.60816
    Microsoft .NET Framework 3.0 RC1
    《Oracle Developer Suite 10g》(Oracle Developer Suite 10g)V10.1.2.0.2
  • 原文地址:https://www.cnblogs.com/xuniannian/p/9897611.html
Copyright © 2011-2022 走看看