fluty hace 4 años
padre
commit
c99a9941d5
Se han modificado 23 ficheros con 612 adiciones y 142 borrados
  1. 10 10
      app/src/main/java/com/funcheer/channel/sdk/MainActivity.java
  2. 1 1
      fq_channel_oppo/src/main/assets/fq_config/joint_cfg
  3. 8 21
      fq_channel_oppo/src/main/java/com/fq/channel/sdk/SdkPluginOppo.java
  4. 2 1
      fq_plugin_api/src/main/assets/fqcfg
  5. 2 1
      fq_plugin_api/src/main/java/com/fq/channel/sdk/api/FqGame.java
  6. 1 0
      fq_plugin_api/src/main/java/com/fq/channel/sdk/api/FqGameHander.java
  7. 7 61
      fq_plugin_api/src/main/java/com/fq/channel/sdk/api/bean/PaymentInfo.java
  8. 69 17
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/constants/FqConfig.java
  9. 1 1
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/interfaces/FQPluginApi.java
  10. 10 5
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/FqNetRequest.java
  11. 2 2
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/callback/BaseCallback.java
  12. 50 0
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/req/ParamsUtils.java
  13. 54 0
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/req/RepLoginBody.java
  14. 133 0
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/req/RepOrderBody.java
  15. 1 1
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/req/ResultContent.java
  16. 1 1
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/req/ResultHeader.java
  17. 1 1
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/req/ResultInitBody.java
  18. 83 0
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/result/ResultLoginBody.java
  19. 28 0
      fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/result/ResultPayBody.java
  20. 136 9
      fq_plugin_core/src/main/java/com/fq/channel/sdk/core/JointManager.java
  21. 0 9
      fq_plugin_core/src/main/java/com/fq/channel/sdk/core/TestCore.java
  22. 6 1
      fq_plugin_core/src/main/java/com/fq/channel/sdk/core/invoke/ApiPlugin.java
  23. 6 0
      fq_plugin_core/src/main/java/com/fq/channel/sdk/core/invoke/ApiReflectManager.java

+ 10 - 10
app/src/main/java/com/funcheer/channel/sdk/MainActivity.java

@@ -201,31 +201,32 @@ public class MainActivity extends Activity implements View.OnClickListener {
         }
 
         float price = Float.parseFloat(priceString);
-        Log.d(TAG,"price : "+price);
+        FqLog.d(TAG,"price : "+price);
         PaymentInfo paymentInfo = new PaymentInfo();
         paymentInfo.setOrderAmount("1");            //订单金额           必须字段
         paymentInfo.setSubject("1元宝");              //商品名             必须字段
-        paymentInfo.setRoleName("Hello");           //角色名             必须字段
         paymentInfo.setCpBillNo("cp_order001");    //CP订单号           必须字段
-//        paymentInfo.setUid(uid);                    //登录时成功拿到的UID  必须字段
         paymentInfo.setServerId("1");               //区服ID             必须字段
         paymentInfo.setExtraInfo("FqGameSdk");      //拓展信息            必须字段
+//        paymentInfo.setUid(uid);                    //登录时成功拿到的UID  必须字段
+//        paymentInfo.setRoleName("Hello");           //角色名             必须字段
         paymentInfo.setRemark("remark");            //订单备注            非必须字段
-        paymentInfo.setRoleLevel("5");              //角色等级            非必须字段
-        paymentInfo.setRoleId("Role_001");          //订单备注            非必须字段
-        paymentInfo.setPartyName("帮派");            //帮派               非必须字段
-        paymentInfo.setServerName("区服名");         //区服名              非必须字段
+
+//        paymentInfo.setRoleLevel("5");              //角色等级            非必须字段
+//        paymentInfo.setRoleId("Role_001");          //订单备注            非必须字段
+//        paymentInfo.setPartyName("帮派");            //帮派               非必须字段
+//        paymentInfo.setServerName("区服名");         //区服名              非必须字段
 
 
         FqGame.pay(MainActivity.this,paymentInfo, new IResult<String>() {
             @Override
             public void onSuccess(String s) {
-                Log.i(TAG,"pay success: "+s);
+                FqLog.i(TAG,"pay success: "+s);
             }
 
             @Override
             public void onFail(String failMsg) {
-                Log.i(TAG,"pay fail:"+failMsg);
+                FqLog.i(TAG,"pay fail:"+failMsg);
             }
         });
     }
@@ -235,7 +236,6 @@ public class MainActivity extends Activity implements View.OnClickListener {
             @Override
             public void onExit() {
                 //退出游戏
-                android.os.Process.killProcess(android.os.Process.myPid());
                 System.exit(0);
             }
 

+ 1 - 1
fq_channel_oppo/src/main/assets/fq_config/joint_cfg

@@ -1,4 +1,4 @@
 {
-"plugin_name": "testchannel",
+"plugin_name": "oppo",
 "plugin_sdk_class_name":"com.fq.channel.sdk.SdkPluginOppo"
 }

+ 8 - 21
fq_channel_oppo/src/main/java/com/fq/channel/sdk/SdkPluginOppo.java

@@ -68,27 +68,14 @@ public class SdkPluginOppo extends FQPluginApi {
                         FqLog.i(TAG, "doGetTokenAndSsoid->onSuccess: " + resultMsg);
                         try {
                             JSONObject json = new JSONObject(resultMsg);
-                            String token = json.getString("token");
-                            String ssoid = json.getString("ssoid");
-                            String url = null;
-//                            HashMap<String, String> loginAuthData = new HashMap<String, String>(
-//                                    1);
-//                            String udid = ContextUtil.getUUID(context);
-//                            String nudid = UDIDUtil.getUdid(context);
-//                            String channelId = IdsLingdoCache.get().getChannelId();
-//                            String imei = ContextUtil.getIMEI(context);
-//                            if(IdsLingdoCache.get().getIsUnify()){
-//                                loginAuthData.put("token", URLEncoder.encode(token));
-//                                loginAuthData.put("ssoid", ssoid);
-//                                loginAuthData.put("ssoi", ssoid);
-//                                loginAuthData.put("udid", udid);
-//                                loginAuthData.put("nudid", nudid);
-//                                loginAuthData.put("channel_id", channelId);
-//                                loginAuthData.put("imei", imei);
-//                                loginAuthData.put("type", "5");// 渠道登录
-//                                loginAuthData.put("login_type", "2"); // 游客登陆传1, 渠道登陆传2
-//                                loginAuthData.put("loginInterface", "channel_login/OppoLogin");
-//                            }else {
+                            JSONObject result = new JSONObject();
+                            result.put("ssoid",json.getString("ssoid"));
+                            result.put("token",json.getString("token"));
+
+                            HashMap<String, String> loginAuthData = new HashMap<>();
+                            loginAuthData.put("channelType","oppo");
+                            loginAuthData.put("channelParams",result.toString());
+                            loginFqSdkSuccess(handler,loginAuthData);
 
                         } catch (JSONException e) {
                             loginFqSdkError(handler, e.getMessage());

+ 2 - 1
fq_plugin_api/src/main/assets/fqcfg

@@ -3,5 +3,6 @@
 "channelId": "1110",
 "adId": "844922",
 "adFlag": "sglsbw_oppo_0001",
-"oppo_gameSecret": "f953537dbffa425d8ce693ecd483559e"
+"oppo_gameSecret": "f953537dbffa425d8ce693ecd483559e",
+"isDebug":true
 }

+ 2 - 1
fq_plugin_api/src/main/java/com/fq/channel/sdk/api/FqGame.java

@@ -8,6 +8,7 @@ import android.support.annotation.NonNull;
 import com.fq.channel.sdk.api.bean.LoginInfo;
 import com.fq.channel.sdk.api.bean.PaymentInfo;
 import com.fq.channel.sdk.base.utils.FqLog;
+import com.fq.channel.sdk.core.JointManager;
 import com.fq.channel.sdk.core.invoke.ApiPlugin;
 
 /**
@@ -68,7 +69,7 @@ public class FqGame {
      * @param mBundle
      */
     public static void setRoleInfo(Bundle mBundle){
-        ApiPlugin.getInstace().setRoleInfo(mBundle);
+        JointManager.getInstance().setRoleInfo(mBundle);
     }
 
     /**

+ 1 - 0
fq_plugin_api/src/main/java/com/fq/channel/sdk/api/FqGameHander.java

@@ -77,6 +77,7 @@ public class FqGameHander {
         FqConfig fqConfig = FqConfig.get(activity);
         fqConfig.setCurrentActivity(activity);
         fqConfig.init(activity);
+        fqConfig.commit();
         HttpManager.getInstance().initHttp();
         JointManager.getInstance().initCfgConfigFile(activity);
     }

+ 7 - 61
fq_plugin_api/src/main/java/com/fq/channel/sdk/api/bean/PaymentInfo.java

@@ -10,7 +10,7 @@ import com.fq.channel.sdk.base.utils.Utils;
  * 提供个CP传入支付信息
  */
 
-public class PaymentInfo implements Parcelable {
+public class PaymentInfo {
 
     /**
      * 必须字段
@@ -59,14 +59,6 @@ public class PaymentInfo implements Parcelable {
     //Td_AppId
     private String tdAppId;
 
-    public String getTdAppId() {
-        return tdAppId;
-    }
-
-    public void setTdAppId(String tdAppId) {
-        this.tdAppId = tdAppId;
-    }
-
     public String getOrderAmount() {
         return orderAmount;
     }
@@ -163,57 +155,11 @@ public class PaymentInfo implements Parcelable {
         this.serverName = serverName;
     }
 
+    public String getTdAppId() {
+        return tdAppId;
+    }
 
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.orderAmount);
-        dest.writeString(this.subject);
-        dest.writeString(this.roleName);
-        dest.writeString(this.cpBillNo);
-        dest.writeString(this.uid);
-        dest.writeString(this.serverId);
-        dest.writeString(this.extraInfo);
-        dest.writeString(this.remark);
-        dest.writeString(this.roleLevel);
-        dest.writeString(this.roleId);
-        dest.writeString(this.partyName);
-        dest.writeString(this.serverName);
-        dest.writeString(this.tdAppId);
-    }
-
-    public PaymentInfo() {
-    }
-
-    protected PaymentInfo(Parcel in) {
-        this.orderAmount = in.readString();
-        this.subject = in.readString();
-        this.roleName = in.readString();
-        this.cpBillNo = in.readString();
-        this.uid = in.readString();
-        this.serverId = in.readString();
-        this.extraInfo = in.readString();
-        this.remark = in.readString();
-        this.roleLevel = in.readString();
-        this.roleId = in.readString();
-        this.partyName = in.readString();
-        this.serverName = in.readString();
-        this.tdAppId = in.readString();
-    }
-
-    public static final Creator<PaymentInfo> CREATOR = new Creator<PaymentInfo>() {
-        @Override
-        public PaymentInfo createFromParcel(Parcel source) {
-            return new PaymentInfo(source);
-        }
-
-        @Override
-        public PaymentInfo[] newArray(int size) {
-            return new PaymentInfo[size];
-        }
-    };
+    public void setTdAppId(String tdAppId) {
+        this.tdAppId = tdAppId;
+    }
 }

+ 69 - 17
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/constants/FqConfig.java

@@ -12,6 +12,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.Map;
+import java.util.concurrent.locks.ReentrantLock;
 
 /**
  * @Description: 描述
@@ -20,7 +21,7 @@ import java.util.Map;
  */
 public class FqConfig {
 
-    public static boolean DEBUG_VERSION = true;
+    public static boolean DEBUG_VERSION = false;
 
     public static final String KEY_APP_ID = "appId";
 
@@ -30,26 +31,48 @@ public class FqConfig {
 
     public static final String KEY_AD_FLAG = "adFlag";
 
+    public static final String KEY_CHANNEL_TYPE = "channelType";
 
+    public static final String KEY_UID = "uid";
 
-//    private static final String BASE_URL = "http://ta.funcheergame.com";  //测试环境
+    public static final String KEY_DEBUG = "isDebug";
+
+
+    private static final String BASE_URL = "http://ta.funcheergame.com";  //测试环境
 //    private static final String BASE_URL = "https://app.funcheergame.com";  //正试环境
-    private static final String BASE_URL = "http://192.168.1.152:9099";  //本地环境
+//    private static final String BASE_URL = "http://192.168.1.152:9099";  //本地环境
 
     /**
      * 初始化
      */
     public static String KEY_URL_INT = BASE_URL + "/api/game/v1/active";
+    /**
+     * 登录
+     * api/third/oppo/v1/login
+     * api/sdk/channel/v1/login
+     */
+    public static String KEY_URL_LOGIN = BASE_URL + "/api/third/oppo/v1/login";//
+    /**
+     * 创建订单
+     */
+    public static String KEY_URL_CREATE_ORDER = BASE_URL + "/api/sdk/channel/v1/createOrder";
 
 
-    private String mFilePath = "fqcfg";
+    private String mFilePath = "fq" + "cfg";
 
-    private Map<String, Object> mData = new HashMap <String, Object>();
+    private Map<String, Object> mData = new HashMap<String, Object>();
+
+    private ReentrantLock mLock = new ReentrantLock();
 
     private static FqConfig sCache;
 
     private Context mAppContext;
 
+    private String mAppId;
+    private String mChannelId;
+    private String mAdId;
+    private String mAdFlag;
+
     private FqConfig(Context appContext) {
         mAppContext = appContext;
     }
@@ -99,7 +122,7 @@ public class FqConfig {
     }
 
     private WeakReference<Activity> mCurrActivityRef;
-    private LinkedList<WeakReference <Activity>> mActivities;
+    private LinkedList<WeakReference<Activity>> mActivities;
 
     /**
      * 设置top activity
@@ -114,23 +137,19 @@ public class FqConfig {
         if (mCurrActivityRef != null) {
             mCurrActivityRef.clear();
         }
-        mCurrActivityRef = new WeakReference <Activity>(activity);
+        mCurrActivityRef = new WeakReference<Activity>(activity);
         // ----------------end ----------------//
 
         // -----------------保存所有开发者设置的Activity--------------------//
         // 用于在退出时,所有activity都退出
         if (mActivities == null) {
-            mActivities = new LinkedList <WeakReference <Activity>>();
+            mActivities = new LinkedList<WeakReference<Activity>>();
         }
-        mActivities.add(new WeakReference <Activity>(activity));
+        mActivities.add(new WeakReference<Activity>(activity));
         // -----------------------end---------------------------//
 
     }
 
-    public void onPause(Activity activity) {
-
-    }
-
     /**
      * 获取当前top activity, 依赖于开发者调用,可能返回空
      *
@@ -144,6 +163,25 @@ public class FqConfig {
         return mData.get(key);
     }
 
+    public void put(String key, Object value) {
+        mLock.lock();
+        mData.put(key, value);
+        mLock.unlock();
+    }
+
+    public void commit() {
+        mLock.lock();
+        mAppId = (String) mData.get(KEY_APP_ID);
+        mChannelId = (String) mData.get(KEY_CHANNEL_ID);
+        mAdId = (String) mData.get(KEY_AD_ID);
+        mAdFlag = (String) mData.get(KEY_AD_FLAG);
+        //正式包 cfg文件不带 "isDebug"字段
+        if (mData.get(KEY_DEBUG) != null) {
+            DEBUG_VERSION = (Boolean) mData.get(KEY_DEBUG);
+        }
+        mLock.unlock();
+    }
+
     public String getString(String key) {
         return String.valueOf(mData.get(key));
     }
@@ -152,7 +190,11 @@ public class FqConfig {
      * 获取adId
      * 如果获取不到 则使用默认的adId
      */
-    public String getAppId() {return getString(KEY_APP_ID);
+    public String getAppId() {
+        mLock.lock();
+        String key = mAppId;
+        mLock.unlock();
+        return key;
     }
 
     /**
@@ -160,14 +202,21 @@ public class FqConfig {
      * 如果获取不到 则使用默认的channelId
      */
     public String getChannelId() {
-        return getString(KEY_CHANNEL_ID);
+        mLock.lock();
+        String key = mChannelId;
+        mLock.unlock();
+        return key;
     }
 
     /**
      * 获取adId
      * 如果获取不到 则使用默认的adId
      */
-    public String getAdId() {return getString(KEY_AD_ID);
+    public String getAdId() {
+        mLock.lock();
+        String key = mAdId;
+        mLock.unlock();
+        return key;
     }
 
     /**
@@ -176,7 +225,10 @@ public class FqConfig {
      * @return
      */
     public String getAdFlag() {
-        return getString(KEY_AD_FLAG);
+        mLock.lock();
+        String key = mAdFlag;
+        mLock.unlock();
+        return key;
     }
 
 }

+ 1 - 1
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/interfaces/FQPluginApi.java

@@ -97,7 +97,7 @@ public abstract class FQPluginApi {
         }
     }
 
-    public void loginFqSdkSuccess(PluginResultHandler cb, HashMap<String, String> loginAuthData) {
+    public void loginFqSdkSuccess(PluginResultHandler cb, HashMap<String, String> loginAuthData ) {
         if (cb != null) {
             cb.onHandlePluginResult(new PluginResult(
                     PluginResult.Status.OK, loginAuthData));

+ 10 - 5
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/FqNetRequest.java

@@ -3,10 +3,12 @@ package com.fq.channel.sdk.base.net;
 import com.fq.channel.sdk.base.constants.FqConfig;
 import com.fq.channel.sdk.base.net.callback.BaseCallback;
 import com.fq.channel.sdk.base.net.req.ParamsUtils;
+import com.fq.channel.sdk.base.net.req.RepOrderBody;
 import com.fq.channel.sdk.base.utils.Utils;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
+import java.util.HashMap;
 
 /**
  * @Description: 业务网络请求封装类
@@ -26,12 +28,14 @@ public class FqNetRequest {
     }
 
     /**
-     * 登录
+     * 渠道登录
      *
+     * @param channelInfo
      * @param callback
      */
-    public static void login(BaseCallback callback) {
-
+    public static void login(HashMap<String, String> channelInfo, BaseCallback callback) {
+        String request = ParamsUtils.getInstance().generateLoginParams(channelInfo);
+        HttpManager.getInstance().post(FqConfig.KEY_URL_LOGIN,Utils.decodeText(request) , callback);
     }
 
     /**
@@ -39,8 +43,9 @@ public class FqNetRequest {
      *
      * @param callback
      */
-    public static void createOrder(BaseCallback callback) {
-
+    public static void createOrder(RepOrderBody payInfo, BaseCallback callback) {
+        String request = ParamsUtils.getInstance().generateOrderParams(payInfo);
+        HttpManager.getInstance().post(FqConfig.KEY_URL_CREATE_ORDER,Utils.decodeText(request) , callback);
     }
 
 }

+ 2 - 2
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/callback/BaseCallback.java

@@ -4,7 +4,7 @@ import android.text.TextUtils;
 
 import com.fq.channel.sdk.base.exception.BaseException;
 import com.fq.channel.sdk.base.net.HttpConstant;
-import com.fq.channel.sdk.base.net.req.ResultHeader;
+import com.fq.channel.sdk.base.net.result.ResultHeader;
 import com.fq.channel.sdk.base.utils.FqLog;
 import com.fq.threelib.gson.Gson;
 import com.fq.threelib.okhttp3.Call;
@@ -43,7 +43,7 @@ public abstract class BaseCallback<T> implements Callback {
                 if (resultHeader!=null&&resultHeader.getResponseCode().equals("00000")){
                     successParseJson(jsonObject.optString(HttpConstant.KEY_RESPONSE_BODY));
                 }else {
-                    onFailure(new BaseException(HttpConstant.HTTP_NET_ERROR,HttpConstant.HTTP_MSG_PARSE_ERROR));
+                    onFailure(new BaseException(HttpConstant.HTTP_NET_ERROR,resultHeader.getResponseMsg()));
                 }
             } catch (Exception e) {
                 e.printStackTrace();

+ 50 - 0
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/req/ParamsUtils.java

@@ -1,6 +1,7 @@
 package com.fq.channel.sdk.base.net.req;
 
 import com.fq.channel.sdk.base.constants.AppConfig;
+import com.fq.channel.sdk.base.constants.FqConfig;
 import com.fq.channel.sdk.base.exception.NullStringToEmptyAdapterFactory;
 import com.fq.channel.sdk.base.utils.DES;
 import com.fq.channel.sdk.base.utils.DeviceUtils;
@@ -9,11 +10,16 @@ import com.fq.channel.sdk.base.utils.Utils;
 import com.fq.threelib.gson.Gson;
 import com.fq.threelib.gson.GsonBuilder;
 
+import org.json.JSONObject;
+
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.TreeMap;
 
+import static com.fq.channel.sdk.base.constants.FqConfig.KEY_CHANNEL_TYPE;
+
 /**
  * Created by Ethan on 2017/7/5.
  * 生成请求参数的单例工具类
@@ -52,12 +58,56 @@ public class ParamsUtils {
         ReqHeader head = generateReqHeader(body);
 
         //转换成最终请求用的Json
+        reqContent.setHead(head);
         reqContent.setBody(body);
+
+        return gson2Json(reqContent);
+    }
+
+    /**
+     * 生成登录请求的 对应的Json
+     *
+     * @return
+     */
+    public String generateLoginParams(HashMap<String, String> loginOauthInfo) {
+
+        ReqContent<RepLoginBody> reqContent = new ReqContent<>();
+        //生成login对象
+        RepLoginBody body = new RepLoginBody();
+        body.setAdid(FqConfig.get().getAdId());
+        body.setChannelId(FqConfig.get().getChannelId());
+        //缓存 渠道类型 , 创建订单使用
+        String channelType = loginOauthInfo.get("channelType");
+        FqConfig.get().put(KEY_CHANNEL_TYPE,channelType);
+
+        body.setChannelType(channelType);
+        body.setChannelParams(loginOauthInfo.get("channelParams"));
+        //生成login 操作的head
+        ReqHeader head = generateReqHeader(body);
+        //转换成最终请求用的Json
         reqContent.setHead(head);
+        reqContent.setBody(body);
 
         return gson2Json(reqContent);
     }
 
+    /**
+     * 生成订单请求的 对应的Json
+     *
+     * @return
+     */
+    public String generateOrderParams(RepOrderBody repOrderBody) {
+
+        ReqContent<RepOrderBody> reqContent = new ReqContent<>();
+        //生成init操作的head
+        ReqHeader head = generateReqHeader(repOrderBody);
+
+        //转换成最终请求用的Json
+        reqContent.setHead(head);
+        reqContent.setBody(repOrderBody);
+
+        return gson2Json(reqContent);
+    }
 
     /**
      * 根据对应请求的body生成 对应Json中的head

+ 54 - 0
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/req/RepLoginBody.java

@@ -0,0 +1,54 @@
+package com.fq.channel.sdk.base.net.req;
+
+/**
+ * @Description: 渠道登录请求体
+ * @Author: FLuty
+ * @CreateDate: 2020/4/13 09:35
+ */
+public class RepLoginBody{
+
+
+    /**
+     * channelType : oppo
+     *  channelId  :  channelId
+     *  adid :  adid
+     * channelParams :
+     */
+
+    private String channelType;
+    private String channelId;
+    private String adid;
+    private String channelParams;
+
+    public String getChannelType() {
+        return channelType;
+    }
+
+    public void setChannelType(String channelType) {
+        this.channelType = channelType;
+    }
+
+    public String getChannelId() {
+        return channelId;
+    }
+
+    public void setChannelId(String channelId) {
+        this.channelId = channelId;
+    }
+
+    public String getAdid() {
+        return adid;
+    }
+
+    public void setAdid(String adid) {
+        this.adid = adid;
+    }
+
+    public String getChannelParams() {
+        return channelParams;
+    }
+
+    public void setChannelParams(String channelParams) {
+        this.channelParams = channelParams;
+    }
+}

+ 133 - 0
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/req/RepOrderBody.java

@@ -0,0 +1,133 @@
+package com.fq.channel.sdk.base.net.req;
+
+/**
+ * @Description: 描述
+ * @Author: FLuty
+ * @CreateDate: 2020/4/13 11:33
+ */
+public class RepOrderBody {
+
+    /**
+     * cpBillNo :
+     * extraInfo :
+     * isTest : 0
+     * orderAmount :
+     * orderType : 6
+     * orderPlatform : 4
+     * remark :
+     * roleName :
+     * serverId :
+     * subject :
+     * uid :
+     * channelType : oppo
+     */
+
+    private String cpBillNo;
+    private String extraInfo;
+    private String isTest;
+    private String orderAmount;
+    private String orderType;
+    private String orderPlatform;
+    private String remark;
+    private String roleName;
+    private String serverId;
+    private String subject;
+    private String uid;
+    private String channelType;
+
+    public String getCpBillNo() {
+        return cpBillNo;
+    }
+
+    public void setCpBillNo(String cpBillNo) {
+        this.cpBillNo = cpBillNo;
+    }
+
+    public String getExtraInfo() {
+        return extraInfo;
+    }
+
+    public void setExtraInfo(String extraInfo) {
+        this.extraInfo = extraInfo;
+    }
+
+    public String getIsTest() {
+        return isTest;
+    }
+
+    public void setIsTest(String isTest) {
+        this.isTest = isTest;
+    }
+
+    public String getOrderAmount() {
+        return orderAmount;
+    }
+
+    public void setOrderAmount(String orderAmount) {
+        this.orderAmount = orderAmount;
+    }
+
+    public String getOrderType() {
+        return orderType;
+    }
+
+    public void setOrderType(String orderType) {
+        this.orderType = orderType;
+    }
+
+    public String getOrderPlatform() {
+        return orderPlatform;
+    }
+
+    public void setOrderPlatform(String orderPlatform) {
+        this.orderPlatform = orderPlatform;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getRoleName() {
+        return roleName;
+    }
+
+    public void setRoleName(String roleName) {
+        this.roleName = roleName;
+    }
+
+    public String getServerId() {
+        return serverId;
+    }
+
+    public void setServerId(String serverId) {
+        this.serverId = serverId;
+    }
+
+    public String getSubject() {
+        return subject;
+    }
+
+    public void setSubject(String subject) {
+        this.subject = subject;
+    }
+
+    public String getUid() {
+        return uid;
+    }
+
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+
+    public String getChannelType() {
+        return channelType;
+    }
+
+    public void setChannelType(String channelType) {
+        this.channelType = channelType;
+    }
+}

+ 1 - 1
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/req/ResultContent.java

@@ -1,4 +1,4 @@
-package com.fq.channel.sdk.base.net.req;
+package com.fq.channel.sdk.base.net.result;
 
 /**
  * Created by Ethan on 2017/7/5.

+ 1 - 1
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/req/ResultHeader.java

@@ -1,4 +1,4 @@
-package com.fq.channel.sdk.base.net.req;
+package com.fq.channel.sdk.base.net.result;
 
 /**
  * Created by Ethan on 2017/7/5.

+ 1 - 1
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/req/ResultInitBody.java

@@ -1,4 +1,4 @@
-package com.fq.channel.sdk.base.net.req;
+package com.fq.channel.sdk.base.net.result;
 
 
 /**

+ 83 - 0
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/result/ResultLoginBody.java

@@ -0,0 +1,83 @@
+package com.fq.channel.sdk.base.net.result;
+
+/**
+ * @Description: 描述
+ * @Author: FLuty
+ * @CreateDate: 2020/4/13 10:22
+ */
+public class ResultLoginBody {
+
+    /**
+     * uid :
+     * userName :
+     * phone :
+     * token :
+     * closeUrl :
+     * pwd :
+     * register :
+     */
+
+    private String uid;
+    private String userName;
+    private String phone;
+    private String token;
+    private String closeUrl;
+    private String pwd;
+    private String register;
+
+    public String getUid() {
+        return uid;
+    }
+
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getToken() {
+        return token;
+    }
+
+    public void setToken(String token) {
+        this.token = token;
+    }
+
+    public String getCloseUrl() {
+        return closeUrl;
+    }
+
+    public void setCloseUrl(String closeUrl) {
+        this.closeUrl = closeUrl;
+    }
+
+    public String getPwd() {
+        return pwd;
+    }
+
+    public void setPwd(String pwd) {
+        this.pwd = pwd;
+    }
+
+    public String getRegister() {
+        return register;
+    }
+
+    public void setRegister(String register) {
+        this.register = register;
+    }
+}

+ 28 - 0
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/net/result/ResultPayBody.java

@@ -0,0 +1,28 @@
+package com.fq.channel.sdk.base.net.result;
+
+/**
+ * Created by fengqi on 2018/7/3.
+ */
+
+public class ResultPayBody {
+
+    private String orderId;
+
+    private String notifyUrl;
+
+    public String getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(String orderId) {
+        this.orderId = orderId;
+    }
+
+    public String getNotifyUrl() {
+        return notifyUrl;
+    }
+
+    public void setNotifyUrl(String notifyUrl) {
+        this.notifyUrl = notifyUrl;
+    }
+}

+ 136 - 9
fq_plugin_core/src/main/java/com/fq/channel/sdk/core/JointManager.java

@@ -1,16 +1,30 @@
 package com.fq.channel.sdk.core;
 
 import android.content.Context;
+import android.os.Bundle;
 
+import com.fq.channel.sdk.base.constants.FqConfig;
+import com.fq.channel.sdk.base.exception.BaseException;
+import com.fq.channel.sdk.base.interfaces.PluginResult;
 import com.fq.channel.sdk.base.interfaces.PluginResultHandler;
 import com.fq.channel.sdk.base.constants.ResourceCfg;
+import com.fq.channel.sdk.base.interfaces.PluginResult.*;
+import com.fq.channel.sdk.base.net.FqNetRequest;
+import com.fq.channel.sdk.base.net.callback.BaseCallback;
+import com.fq.channel.sdk.base.net.req.RepOrderBody;
+import com.fq.channel.sdk.base.net.result.ResultLoginBody;
+import com.fq.channel.sdk.base.net.result.ResultPayBody;
+import com.fq.channel.sdk.base.utils.FqLog;
 import com.fq.channel.sdk.core.invoke.ApiPlugin;
 
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.HashMap;
 import java.util.Map;
 
 /**
  * @Description: 核心层对外API
- *
  * @Author: FLuty
  * @CreateDate: 2020/3/24 17:59
  */
@@ -19,9 +33,14 @@ public class JointManager {
 
     private volatile static JointManager uniqueInstance;
 
+    private PluginResultHandler cb;
+
     private ResourceCfg mCfg;
 
-    private JointManager() {}
+    Bundle data;
+
+    private JointManager() {
+    }
 
     public static JointManager getInstance() {
         if (uniqueInstance == null) {
@@ -40,25 +59,133 @@ public class JointManager {
         }
     }
 
-    public void init(Context context,PluginResultHandler cb){
+    public void init(Context context, PluginResultHandler cb) {
         initCfgConfigFile(context);//加载assets/cfg文件
         // 获取对应的ApiPlugin子类实例,并反射初始化SDK操作
         ApiPlugin.getInstace().init(context, cb);
     }
 
-    public void login(Context context,PluginResultHandler cb){
-//        统一登录
-        ApiPlugin.getInstace().login(context, cb);
+    public void login(Context context, PluginResultHandler cb) {
+        this.cb = cb;
+        ApiPlugin.getInstace().login(context, onLoginCallBack);
     }
 
-    public void pay(Context context, Map paymentInfo, PluginResultHandler cb){
-        ApiPlugin.getInstace().pay(context, paymentInfo, cb);
+    /**
+     * 登录回调处理
+     */
+    private PluginResultHandler onLoginCallBack = new PluginResultHandler() {
+        @Override
+        public void onHandlePluginResult(PluginResult result) {
+            if (result.getStatus() == Status.OK) {
+                final String msg = result.getMessage();
+                HashMap<String, String> loginOauthInfo = (HashMap<String, String>) result.getRawMessage();
+                FqLog.d(TAG, "msg:" + msg);
+                if (null != loginOauthInfo || 0 != loginOauthInfo.size()) {
+                    channelLogin(loginOauthInfo);
+                } else {
+                    cb.onHandlePluginResult(new PluginResult(Status.ERROR, "channel login failss"));
+                }
+            } else if (result.getStatus() == Status.CANCEL) {
+                cb.onHandlePluginResult(new PluginResult(Status.CANCEL));
+
+            } else if (result.getStatus() == Status.ERROR) {
+                cb.onHandlePluginResult(new PluginResult(Status.ERROR, "channel login failss"));
+            }
+        }
+    };
+
+    private void channelLogin(HashMap<String, String> channelInfo) {
+        FqNetRequest.login(channelInfo, new BaseCallback<ResultLoginBody>() {
+            @Override
+            public void onFailure(BaseException msg) {
+                cb.onHandlePluginResult(new PluginResult(Status.ERROR, msg.getMsg()));
+            }
+
+            @Override
+            public void onSuccess(int code, String msg, ResultLoginBody data) {
+                try {
+                    JSONObject jsonObject = new JSONObject();
+                    String uid = data.getUid();
+                    //缓存Uid
+                    FqConfig.get().put(FqConfig.KEY_UID,uid);
+
+                    jsonObject.put("uid", uid);
+                    jsonObject.put("token", data.getToken());
+
+                    cb.onHandlePluginResult(new PluginResult(Status.OK, jsonObject));
+                } catch (JSONException e) {
+                    cb.onHandlePluginResult(new PluginResult(Status.ERROR, "JSONException"));
+                }
+            }
+        });
     }
 
-    public void exit(Context context,PluginResultHandler cb){
+    public void pay(Context context, Map paymentInfo, PluginResultHandler cb) {
+        createOrder(context, paymentInfo, cb);
+    }
+
+    private void createOrder(final Context context, final Map map, final PluginResultHandler cb) {
+        RepOrderBody repOrderBody = new RepOrderBody();
+        repOrderBody.setChannelType( FqConfig.get().getString(FqConfig.KEY_CHANNEL_TYPE));
+        repOrderBody.setUid( FqConfig.get().getString(FqConfig.KEY_UID));
+        repOrderBody.setExtraInfo(getMapValus(map,"extraInfo"));
+        repOrderBody.setIsTest(FqConfig.DEBUG_VERSION?"1":"0");
+        repOrderBody.setOrderAmount(getMapValus(map,"orderAmount"));
+        repOrderBody.setOrderPlatform(getMapValus(map,"orderPlatform"));
+        repOrderBody.setOrderType(getMapValus(map,"orderType"));
+        repOrderBody.setRemark(getMapValus(map,"remark"));
+        repOrderBody.setSubject(getMapValus(map,"subject"));
+        data.getBundle("roleName");
+        data.getBundle("serverId");
+        repOrderBody.setRoleName(getMapValus(map,"roleName"));
+        repOrderBody.setServerId(getMapValus(map,"serverId"));
+
+        FqNetRequest.createOrder(repOrderBody, new BaseCallback<ResultPayBody>() {
+            @Override
+            public void onFailure(BaseException msg) {
+                cb.onHandlePluginResult(new PluginResult(Status.ERROR, msg.getMessage()));
+            }
+
+            @Override
+            public void onSuccess(int code, String msg, ResultPayBody data) {
+
+//               startPay(context,data,cb);
+            }
+        });
+    }
+
+    private String getMapValus(Map map,String key){
+        return String.valueOf(map.get(key));
+    }
+
+//    private void startPay(Context context,ResultPayBody data, PluginResultHandler cb) {
+//        HashMap<Object, Object> payParams = new HashMap<Object, Object>();
+//        payParams.put(ConstSet.PAY_ORDER_ID, unolPay.getOrder_id());
+//        payParams.put(ConstSet.PAY_PAYMENT_STATE, 8);
+//        payParams.put(ConstSet.PAY_PAYMETHOD, paymethod);
+//        payParams.put(ConstSet.PAY_PRODUCT_DES, productDescription);
+//        payParams.put(ConstSet.PAY_PRICE, price);
+//        payParams.put(ConstSet.PAY_PRODUCT_NAME, productName);
+//        payParams.put(ConstSet.PAY_SERVER_ID, serverId);
+//        payParams.put(ConstSet.PAY_EXTRAL_INFO, extraInfo);
+//        payParams.put(ConstSet.PAY_PRODUCT_ID, id);
+//        payParams.put(ConstSet.PAY_AMOUNT, amount);
+//        payParams.put(ConstSet.PAY_RATE, rate);
+//        payParams.put(ConstSet.PAY_MONETARYUNIT, monetaryunit);
+//        payParams.put(ConstSet.PAY_CHARGE_ID, chargeId);
+//        payParams.put(ConstSet.PAY_GOODS_ID, goodsId);
+//        ApiPlugin.getInstace().pay(context, paymentInfo, cb);
+//    }
+
+    public void exit(Context context, PluginResultHandler cb) {
         ApiPlugin.getInstace().exit(context, cb);
     }
 
+    public void setRoleInfo(Bundle data) {
+        this.data = data;
+        ApiPlugin.getInstace().setRoleInfo(data);
+    }
+
     public String getPluginSdkClassName() {
         return mCfg.getString("plugin_sdk_class_name");
     }

+ 0 - 9
fq_plugin_core/src/main/java/com/fq/channel/sdk/core/TestCore.java

@@ -1,9 +0,0 @@
-package com.fq.channel.sdk.core;
-
-/**
- * @Description: 描述
- * @Author: FLuty
- * @CreateDate: 2020/3/24 16:48
- */
-public class TestCore {
-}

+ 6 - 1
fq_plugin_core/src/main/java/com/fq/channel/sdk/core/invoke/ApiPlugin.java

@@ -13,7 +13,12 @@ import com.fq.channel.sdk.base.interfaces.PluginResultHandler;
 import com.fq.channel.sdk.base.utils.FqLog;
 
 import java.util.Map;
-
+/**
+ * @Description: 反射渠道方法
+ *
+ * @Author: FLuty
+ * @CreateDate: 2020/3/24 17:59
+ */
 public class ApiPlugin extends ApiReflectManager {
 
     protected String TAG = getClass().getSimpleName();

+ 6 - 0
fq_plugin_core/src/main/java/com/fq/channel/sdk/core/invoke/ApiReflectManager.java

@@ -10,6 +10,12 @@ import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * @Description: 获取渠道插件信息
+ *
+ * @Author: FLuty
+ * @CreateDate: 2020/3/24 17:59
+ */
 public class ApiReflectManager {
 	private String TAG = getClass().getSimpleName();
 	private Class<?> mClazz;