应用宝SDK接入总结

来源:互联网 发布:php 读取股票数据文件 编辑:程序博客网 时间:2024/05/21 22:32

应用宝SDK接入总结

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

1 登录接入


1.1登录客户端接入

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

登录接入流程图

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

 @Overridepublic 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
——写于公司

0 0
原创粉丝点击