### **SDK接入文档** ~~~ 简介:本文主要介绍SDK接入文档 ~~~ * * * * * **一、SDK文件说明** ![](https://box.kancloud.cn/2016-06-21_57691e6409bf9.png) SDK包含的三个文件夹 libs目录为接入sdk需要导入的jar包 paysdk.jar(基本) libammsdk.jar(微信用) alipaySdk-20160120.jar(支付宝用) xutillibrary.jar(http与图片加载框架) wxapi微信回掉专用目录。 res 目录 sdk资源文件目录 ![](https://box.kancloud.cn/2016-06-21_57691e643081f.png) Libs目录包含的文件 ![](https://box.kancloud.cn/2016-06-21_57691e6441cf3.png) Armeabi下文件 **二、 SDK使用步骤** 以下以Eclipse为开发IDE进行范例说明: 准备:需要安装jdk和eclipse下配置安卓sdk; 没有安装的需要网上查找相关教程。 1、导入项目 开发者将项需要集成sdk的项目导入eclipse。 2、添加SDK文件 将SDK文件添加到项目指定目录 SDK文件夹目录 (1.)添加libs和res目录 复制libs,res两个文件夹,粘贴到项目根目录覆盖。 覆盖之后,项目原有libs目录和res目录对应多了sdk的libs目录和res目录中的内容。 为了避免重复,sdk资源文件命名多以mch_前缀,并且命名偏长。 lib文件下的所有文件如下: res下的所有文件如下: 如果sdk的libs目录和res目录下的所有文件都拷贝到项目的libs目录和res目录下对应的目录中;添加libs和res目录成功。 (2.)导入jar包 一般情况下,jar包拷贝到libs目录会自动导入jar包; 如果没有自动导入的话,请打开libs目录; 选中paysdk.jar,libammsdk.jar,alipaySdk-20160120.jar; 右击 -> build path -> add to build path;导入成功。 成功导入 (3.)添加wxapi目录 打开src目录下程序主包名所在目录; 拷贝wxapi文件夹到该目录; 打开WXPayEntryActivity.java,修正WXPayEntryActivity.java所在的包; WXPayEntryActivity不报错;wxapi目录添加成功。 添加wxapi之后 3、修改清单文件 文件位置 (1.)添加权限 打开项目AndroidManifest.xml文件,在mainfest内application外添加以下代码: `<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />` (2.)添加activity声明: 复制以下代码到application节点里面。 ~~~ <activity android:name="com.mchsdk.paysdk.activity.ChoosePayActivity" android:launchMode="singleTop" android:screenOrientation="portrait" > </activity> <activity android:name="com.mchsdk.paysdk.activity.PTBPayResultActivity" android:launchMode="singleTop" android:screenOrientation="portrait" > </activity> <activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent" > </activity> <activity android:name="com.mchsdk.paysdk.activity.MCPacksActivity" android:launchMode="singleTop" android:screenOrientation="portrait" > </activity> <activity android:name="com.mchsdk.paysdk.activity.MCPersonalInfoActivity" android:launchMode="singleTop" android:screenOrientation="portrait" > </activity> <activity android:name="com.mchsdk.paysdk.activity.MCChangePasswordActivity" android:launchMode="singleTop" android:screenOrientation="portrait" > </activity> <activity android:name="com.mchsdk.paysdk.activity.MCMoneyRecordActivity" android:launchMode="singleTop" android:screenOrientation="portrait" > </activity> <activity android:name="com.mchsdk.paysdk.activity.MCAddPtbMoneyActivity" android:launchMode="singleTop" android:screenOrientation="portrait" > </activity> <activity android:name="com.mchsdk.paysdk.activity.MCBindPhoneActivity" android:launchMode="singleTop" android:screenOrientation="portrait" > </activity> <activity android:name="com.alipay.sdk.app.H5PayActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" android:windowSoftInputMode="adjustResize|stateHidden" > </activity> <activity android:name="com.alipay.sdk.auth.AuthActivity" android:configChanges="orientation|keyboardHidden|navigation" android:exported="false" android:screenOrientation="behind" > </activity> ~~~ <service android:name="com.mchsdk.paysdk.server.MCHFloatService" > </service> <activity android:name="com.mchsdk.paysdk.activity.MCForgetPasswordActivity" android:screenOrientation="portrait" > </activity> 调用SDK接口 (1) 登录功能使用 ~~~ import com.mchsdk.paysdk.MCApiFactory; import com.mchsdk.paysdk.IGPUserObsv; /** ~~~ * 登录回调接口 ~~~ */ private IGPUserObsv mUserObsv = new IGPUserObsv() { @Override public void onFinish(GPUserResult result) { switch (result.getmErrCode()) { case GPUserResult.USER_RESULT_LOGIN_FAIL: writeLog("登录回调:登录失败"); break; case GPUserResult.USER_RESULT_LOGIN_SUCC: //登陆账户 String accountNo = result.getAccountNo(); writeLog("登录回调:登录成功"); break; } } }; /** ~~~ * 接口调用 ~~~ */ MCApiFactory.getMCApi().startlogin(context,mUserObsv); ~~~ (2)支付掉的方法: ~~~ import com.mchsdk.paysdk.MCApiFactory; import com.mchsdk.paysdk.entity.OrderInfo; import com.mchsdk.paysdk.payCallback; // 支付结果回调 public payCallback payCallback = new payCallback() { public void callback(int result) { if (result == 1) { //支付成功 return; } } }; ~~~ // 支付接口调用 ~~~ OrderInfo o = new OrderInfo(); //物品价格,单位分。 o.setAmount(1); //游戏交易唯一ID,确定玩家信息,透传给游戏方 o.setExtendInfo(""); //物品描述 o.setProductDesc(""); //物品名称,微信支付时,此物品名称不能有中文 o.setProductName("12"); MCApiFactory.getMCApi().pay(MainActivity.this, getFragmentManager(), o, payCallback); ~~~ 支付参目前默认用这个OrderInfo这个类传递 (3)悬浮窗 Sdk2.0.0添加悬浮窗系统,如个人中心等功能。 显示悬浮窗的Activity添加如下内容: ~~~ @Override protected void onStart() { MCApiFactory.getMCApi().floatingIsClose = false; super.onStart(); } @Override protected void onResume() { super.onResume(); MCApiFactory.getMCApi().startFloating(MainActivity.this); } @Override protected void onPause() { MCApiFactory.getMCApi().floatingIsClose = true; super.onPause(); } @Override protected void onStop() { super.onStop(); if (MCApiFactory.getMCApi().floatingIsClose) { MCApiFactory.getMCApi().stopFloating(MainActivity.this); } } ~~~ 三、测试 以上步骤检查无误后,可以clean项目之后调试进行初步测试。