应用宝SDK接入总结

应用宝SDK接入总结

应用宝sdk是众所周知的难接入,经过这次接入发现其接入难点主要在以下三个方面,其一,文档杂乱,部分地方语焉不。其二,微信与手Q部分参数缠连不清,部分出处不明。其三,腾讯技术客服支持不及时、工作应付。下面分别就登录接入、支付接入、易错总结三个方面稍作总结,以便他人参考。

1 登录接入


1.1登录客户端接入

登录接入流程图如下所示:

登录接入流程图

一般来说,按照登陆文档来一步一步进行操作,登陆相较于支付还是比较容易的。在接入登陆操作期间遇到的主要问题在于onNewIntent接口的调用,按照文档要求在launchActivity的onCreat()和onNewIntent()中必须调用WGPlatform.handleCallback(),否则会造成微信登录无回调。而tivicloudSDK并未实现onNewIntent接口,结果微信登陆收不到回调。解决此问题的补偿方案是需要在WXEntryActivity.java添加如下代码:

 @Override
public void onResp(BaseResp resp)
  {
    Intent intent = new Intent(this, LoginChoice.class);
      intent.setFlags(268435456);
      intent.addFlags(536870912);
      intent.putExtra("wx_callback", "onResp");
      intent.putExtra("wx_errCode", resp.errCode);
      intent.putExtra("wx_errStr", resp.errStr);
      intent.putExtra("wx_transaction", resp.transaction);
      intent.putExtra("wx_openId", resp.openId);
      intent.putExtra("platformId", platformIds);
      if ((resp instanceof SendAuth.Resp)) 

      {
        SendAuth.Resp res = (SendAuth.Resp)resp;
        Logger.d("code: " + res.code);
        intent.putExtra("wx_token", res.code);
      }

      if (!"msdkwebpage".equals(resp.transaction)) 

      {
        startActivity(intent);
      }
      finish();
  }

1.2登录服务端的接入

登录服务的编码按照文档一步一步接入即可。重要的是要细心,与前端商量确定好具体的参数。

2 支付接入


2.1支付客户端接入

支付接入流程如下图所示:

应用宝支付接入流程

登陆接入和支付接入是两个不同的部分,使用不同的文档以及SDK,可能是由于支付文档和登陆文档衔接的不是太顺畅,在支付过程中遇到较多的问题,下面一一列出。

参数问题

在支付过程中所需参数较多,并且手Q登陆和微信登陆状态下所需的参数部分不同,和需要特别注意。其中pay_token参数的获取文档中并未明确给出。

  • pay_token

文档中并未明确给出获取方法,pay_token的获取方式是在手Q的登陆回调中获得的。具体位置在回调中case TokenType.eToken_QQ_Pay接口下,tr.value值即是pay_token.

case TokenType.eToken_QQ_Pay:               
    token = ret.getAccessToken();
    pay_Token = tr.value;   //pay_token
    break;
  • rq.sessionId、rq.sessionType、rq.pay_token

手Q状态下与微信状态下需要传递不同的参数:

//手Q登录态与微信登录态分别传递不同的参数
if (手Q登录状态下){
    // 特别注意如果使用的是手Q登录态,这里填的是支付时专用的pay_token
    rq.openKey = pay_Token; 
    rq.sessionId = "openid";
    rq.sessionType = "kp_actoken";
    }
else if(微信登陆状态下){
    rq.openKey = wxAccessToken;
    rq.sessionId ="hy_gameid";
    rq.sessionType = "wc_actoken";
    }

支付界面调起

一般情况下,支付界面调不出来很大可能是参数问题,请仔细核对参数。

2.2支付服务端接入

服务端接入关键点在于签名sig的计算。一下几点需要注意:

  • 在进行sig的计算是appID ,appkey 都用手Q 的ID和key
  • 微信和手Q支付中pay_token,在sig的计算中,微信 pay_token不参与sig的计算中.
  • 就算sig 签名使用snsigcheck中的makesig来进行计算(ts时间戳要特别注意)
  • 在请求是session_id, session_type 不同

3 易错总结


除了以上写出几个关键问题之外,我们还遇到一些其他比较刁钻难解的问题,现一一列出,以便查阅。

3.1 非官方正版应用 100044

问题描述

如下图所示:

这里写图片描述

解决方案

出现该错误的原因是,应用所用包名以及出包所用签名为非腾讯后台申请到的包名及签名,请使用在腾讯后台创建应用时所使用的包名以及签名。

3.2 按照指定签名出包后程序崩溃

问题描述

在使用eclipse默认签名情况下程序可正常运行,但是一旦按照指定签名出包后程序一运行就崩溃。

解决方案

具体原因不明,猜测可能是代码混淆原因吧,解决方法是注销project.properties文件下的一句话:

#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

—— 2015年9月14日18:41:46
——写于公司

发布了36 篇原创文章 · 获赞 85 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/u012719153/article/details/48443209