Переглянути джерело

1、新增切换账号、登出接口
2、优化生命周期接口
3、代码优化

fluty 4 роки тому
батько
коміт
67257cf17a

+ 1 - 1
app/build.gradle

@@ -22,7 +22,7 @@ android {
 //        }
 //        ysdk
         debug{
-            storeFile file('C:\\ProgramFiles\\AS_WorkSpace\\FQChannelSDK\\app\\fq_bytjz_gdt.jks')
+            storeFile file('./fq_bytjz_gdt.jks')
             storePassword '201999'
             keyPassword '201999'
             keyAlias 'fq_bytjz_gdt.jks'

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

@@ -14,6 +14,7 @@ import android.widget.Toast;
 import com.example.fqchannelsdk.R;
 import com.fq.channel.sdk.api.FqGame;
 import com.fq.channel.sdk.api.IExit;
+import com.fq.channel.sdk.api.ILogout;
 import com.fq.channel.sdk.api.IResult;
 import com.fq.channel.sdk.base.bean.LoginInfo;
 import com.fq.channel.sdk.base.bean.PaymentInfo;
@@ -179,32 +180,21 @@ public class MainActivity extends Activity implements View.OnClickListener {
             showResult("请先填入价格");
             return;
         }
-
+        priceString = "0.1";
         FqLog.i(TAG,"price : "+priceString);
-        priceString = "0.01";
+//        priceString = "0.01";
         PaymentInfo paymentInfo = new PaymentInfo();
-        //订单金额
-        paymentInfo.setPrice(priceString);
-        //CP订单号
-        paymentInfo.setCpOrderId("cp"+System.currentTimeMillis());
-        //区服ID String的形式带入,值为int类型字符串
-        paymentInfo.setServerId("1");
-        //拓展信息
-        paymentInfo.setExtralInfo("FqGameSdk");
-        //订单备注 透传信息
-        paymentInfo.setRemark("remark");
-        //商品ID,String类型
-        paymentInfo.setProductId("1");
-        //商品名称
-        paymentInfo.setProductName("60金币");
-        //商品描述,值为String类型
-        paymentInfo.setProductDes("Fq");
-        //货币单位,值为String类型, 例:金币/钻石等且不可带量词
-        paymentInfo.setProductUnit("金币");
-        //兑换比例,String的形式带入,值为int类型,默认值为1
-        paymentInfo.setRate("1");
-        //计费ID 没有可不传
-        paymentInfo.setChargeId("pay123");
+        paymentInfo.setPrice(priceString);//订单金额
+        paymentInfo.setCpOrderId("cp"+System.currentTimeMillis());  //CP订单号
+        paymentInfo.setServerId("1");   //区服ID String的形式带入,值为int类型字符串
+        paymentInfo.setExtralInfo("FqGameSdk");  //扩展信息
+        paymentInfo.setRemark("remark");  //订单备注 透传信息
+        paymentInfo.setProductId("1");//商品ID,String类型
+        paymentInfo.setProductName("60金币"); //商品名称
+        paymentInfo.setProductDes("Fq"); //商品描述,值为String类型
+        paymentInfo.setProductUnit("金币"); //货币单位,值为String类型, 例:金币/钻石等且不可带量词
+        paymentInfo.setRate("10"); //兑换比例,String的形式带入,值为int类型,默认值为1
+        paymentInfo.setChargeId("pay123");  //计费ID 没有可不传
         FqGame.pay(MainActivity.this,paymentInfo, new IResult<String>() {
             @Override
             public void onSuccess(String s) {
@@ -267,12 +257,13 @@ public class MainActivity extends Activity implements View.OnClickListener {
          * ConstSet.DATA_KEY_ROLE_ID 当前登录的玩家角色ID
          * ConstSet.DATA_KEY_ROLE_NAME 当前登录的玩家角色名
          * ConstSet.DATA_KEY_ROLE_LEVEL 当前登录的玩家角色等级
+         * ConstSet.DATA_KEY_ROLE_TYPE 角色类型,例如:战士,魔法师,弓箭手
          * ConstSet.DATA_KEY_SERVER_ID 当前登录的游戏区服ID
          * ConstSet.DATA_KEY_SERVER_NAME 当前登录的游戏区服名称
          * ConstSet.DATA_KEY_BALANCE 当前用户游戏币余额
          * ConstSet.DATA_KEY_VIP_LEVEL 当前用户VIP等级
          * ConstSet.DATA_KEY_PARTY_NAME 当前用户所属帮派
-         * ConstSet.DATA_KEY_PARTY_NAME 角色创建时间(单位:秒),该时间请务必传入服务端真实角色创建时间。
+         * ConstSet.DATA_KEY_ROLE_CREATE_TIME 角色创建时间(单位:秒),该时间请务必传入服务端真实角色创建时间。
          * ConstSet.DATA_KEY_ROLE_LEVEL_TIME 角色等级变化时间(单位:秒),该时间请务必传入服务端真实角色升级时间。
          *
          * ConstSet.DATA_KEY_DATA_TYPE 数据统计类型,以下所有统计点必接):
@@ -288,6 +279,7 @@ public class MainActivity extends Activity implements View.OnClickListener {
         Bundle staticsData = new Bundle();
         staticsData.putString(ConstSet.DATA_KEY_ROLE_ID, "111");
         staticsData.putString(ConstSet.DATA_KEY_ROLE_NAME, "战士");
+        staticsData.putString(ConstSet.DATA_KEY_ROLE_TYPE, "战士");
         staticsData.putString(ConstSet.DATA_KEY_ROLE_LEVEL, "65");
         staticsData.putString(ConstSet.DATA_KEY_SERVER_ID, "11");
         staticsData.putString(ConstSet.DATA_KEY_SERVER_NAME, "服务器");
@@ -303,6 +295,13 @@ public class MainActivity extends Activity implements View.OnClickListener {
     }
 
     private void logout() {
+        FqGame.logout(this, new ILogout() {
+            @Override
+            public void onLogout() {
+                // 重新登录
+                FqLog.i(TAG,"onLogout");
+            }
+        });
     }
 
     private void showResult(String message) {

+ 4 - 6
fq_channel_mubao/src/main/java/com/fq/channel/sdk/SdkPluginDemo.java

@@ -140,13 +140,14 @@ public class SdkPluginDemo extends FQPluginApi {
         Log.d(TAG, "exit");
         exitFqSdk(prh);
     }
+    PluginResultHandler loginHander;
 
     /**
      * 注销
      */
     public void logout(final Context context, final PluginResultHandler cb) {
         Log.d(TAG, "logout");
-
+        loginHander = cb;
         Builder builder = new Builder(context);
         builder.setTitle("注销");
         builder.setMessage("是否注销?");
@@ -170,7 +171,7 @@ public class SdkPluginDemo extends FQPluginApi {
     }
 
     @Override
-    public void changeAccount(Activity activity, final PluginResultHandler cb) {
+    public void changeAccount(Context activity) {
         Log.d(TAG, " changeAccount ");
 
         Builder builder = new Builder(activity);
@@ -179,19 +180,17 @@ public class SdkPluginDemo extends FQPluginApi {
         builder.setCancelable(false);
         builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
-                fqSdkSuccess(cb);
+                fqSdkSuccess(loginHander);
                 dialog.dismiss();
             }
         });
         builder.setNeutralButton("失败", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
-                fqSdkError(cb);
                 dialog.dismiss();
             }
         });
         builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
             public void onClick(DialogInterface dialog, int which) {
-                fqSdkCancel(cb);
                 dialog.dismiss();
             }
         });
@@ -200,7 +199,6 @@ public class SdkPluginDemo extends FQPluginApi {
             @Override
             public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                 if (keyCode == KeyEvent.KEYCODE_BACK) {
-                    fqSdkCancel(cb);
                     dialog.dismiss();
                     return true;
                 }

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

@@ -155,7 +155,7 @@ public class SdkPluginOppo extends FQPluginApi {
     }
 
     @Override
-    public void changeAccount(Activity activity, final PluginResultHandler prh) {
+    public void changeAccount(Context activity) {
         FqLog.i(TAG, " changeAccount ");
     }
 

+ 1 - 20
fq_channel_ysdk/src/main/AndroidManifest.xml

@@ -115,31 +115,12 @@
         <activity android:name="com.tencent.ysdk.module.user.impl.wx.qrcode.QRActivity">
 
         </activity>
-        <!-- TODO GAME SDK 微信接入配置 END -->
-        <!--        &lt;!&ndash; TODO GAME SDK接入免登录接入配置 START &ndash;&gt;-->
-        <!--        <activity-->
-        <!--            android:name="com.tencent.ysdk.module.user.impl.freelogin.FreeLoginInfoActivity"-->
-        <!--            android:configChanges="orientation|screenSize|keyboardHidden"-->
-        <!--            android:exported="true"-->
-        <!--            android:theme="@android:style/Theme.Translucent.NoTitleBar">-->
-        <!--            &lt;!&ndash; TODO GAME 这里为解析外部传入的登录信息,为云设备或者沙盒游戏宿主所调用,这里 &ndash;&gt;-->
-        <!--            <intent-filter>-->
-        <!--                <action android:name="android.intent.action.VIEW" />-->
-        <!--                <category android:name="android.intent.category.DEFAULT" />-->
-        <!--                <category android:name="android.intent.category.BROWSABLE" />-->
-        <!--                <data android:scheme="tencentysdk" />-->
-        <!--            </intent-filter>-->
-
-        <!--        </activity>-->
-
-        <!--        &lt;!&ndash; TODO GAME SDK接入YSDK登陆接入配置 END &ndash;&gt;-->
-
-
         <!-- TODO GAME SDK Midas接入配置 START -->
         <!-- 请务必设置屏幕方向! midas当前不支持屏幕旋转 android:screenOrientation="portrait" android:screenOrientation="landscape" -->
         <activity
             android:name="com.tencent.midas.proxyactivity.APMidasPayProxyActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
+            android:screenOrientation="portrait"
             android:theme="@android:style/Theme.Translucent.NoTitleBar" />
         <activity
             android:name="com.tencent.midas.wx.APMidasWXPayActivity"

+ 1 - 8
fq_channel_ysdk/src/main/assets/ysdkconf.ini

@@ -14,11 +14,4 @@ OFFER_ID=1109962571
 :YSDK_URL=https://ysdktest.qq.com
 ;正式环境
 YSDK_URL=https://ysdk.qq.com
-;************** YSDK相关配置项,游戏需要根据各自情况修改 END **************
-;YSDK游戏内Icon开关
-YSDK_ICON_SWITCH=true
-YSDK_IMMERSIVE_ICON_SWITCH=true
-YSDK_MSG_BOX_SWITCH=true
-YSDK_ICON_CAPTURE_SWITCH=true
-;YSDK游戏内Icon位置单位dp
-YSDK_ICON_LOCATION=100
+;************** YSDK相关配置项,游戏需要根据各自情况修改 END **************

+ 112 - 0
fq_channel_ysdk/src/main/java/com/fq/channel/sdk/ReqYsdkPayBody.java

@@ -0,0 +1,112 @@
+package com.fq.channel.sdk;
+
+/**
+ * @Description: 应用宝支付通知接口的请求body
+ * @Author: FLuty
+ * @CreateDate: 2020/4/23 10:08
+ */
+public class ReqYsdkPayBody {
+    private String openId;
+    private String accessToken;
+    private String payToken;
+    private String pf;
+    private String pfKey;
+    private String zoneId;
+    private String fqBillNo;
+    private String thirdAmt;
+    private String appId;
+    private String platform;
+
+    public ReqYsdkPayBody(String openId, String accessToken, String payToken, String pf, String pfKey, String zoneId, String fqBillNo, String thirdAmt, String appId, String platform) {
+        this.openId = openId;
+        this.accessToken = accessToken;
+        this.payToken = payToken;
+        this.pf = pf;
+        this.pfKey = pfKey;
+        this.zoneId = zoneId;
+        this.fqBillNo = fqBillNo;
+        this.thirdAmt = thirdAmt;
+        this.appId = appId;
+        this.platform = platform;
+    }
+
+    public String getOpenId() {
+        return openId;
+    }
+
+    public void setOpenId(String openId) {
+        this.openId = openId;
+    }
+
+    public String getAccessToken() {
+        return accessToken;
+    }
+
+    public void setAccessToken(String accessToken) {
+        this.accessToken = accessToken;
+    }
+
+    public String getPayToken() {
+        return payToken;
+    }
+
+    public void setPayToken(String payToken) {
+        this.payToken = payToken;
+    }
+
+    public String getPf() {
+        return pf;
+    }
+
+    public void setPf(String pf) {
+        this.pf = pf;
+    }
+
+    public String getPfKey() {
+        return pfKey;
+    }
+
+    public void setPfKey(String pfKey) {
+        this.pfKey = pfKey;
+    }
+
+    public String getZoneId() {
+        return zoneId;
+    }
+
+    public void setZoneId(String zoneId) {
+        this.zoneId = zoneId;
+    }
+
+    public String getFqBillNo() {
+        return fqBillNo;
+    }
+
+    public void setFqBillNo(String fqBillNo) {
+        this.fqBillNo = fqBillNo;
+    }
+
+    public String getThirdAmt() {
+        return thirdAmt;
+    }
+
+    public void setThirdAmt(String thirdAmt) {
+        this.thirdAmt = thirdAmt;
+    }
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
+    public String getPlatform() {
+        return platform;
+    }
+
+    public void setPlatform(String platform) {
+        this.platform = platform;
+    }
+}

+ 151 - 213
fq_channel_ysdk/src/main/java/com/fq/channel/sdk/SdkPluginYsdk.java

@@ -5,10 +5,9 @@ import android.app.Dialog;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
 import android.graphics.Rect;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
 import android.text.TextUtils;
 import android.util.DisplayMetrics;
 import android.util.Log;
@@ -22,10 +21,16 @@ import android.widget.Toast;
 
 import com.fq.channel.sdk.base.config.FqConfig;
 import com.fq.channel.sdk.base.constants.ConstSet;
+import com.fq.channel.sdk.base.exception.BaseException;
 import com.fq.channel.sdk.base.interfaces.FQPluginApi;
 import com.fq.channel.sdk.base.interfaces.PluginResultHandler;
+import com.fq.channel.sdk.base.net.HttpManager;
+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.FqLog;
 import com.fq.channel.sdk.base.utils.Utils;
+import com.fq.threelib.gson.JsonObject;
 import com.tencent.ysdk.api.YSDKApi;
 import com.tencent.ysdk.framework.common.BaseRet;
 import com.tencent.ysdk.framework.common.eFlag;
@@ -54,11 +59,17 @@ public class SdkPluginYsdk extends FQPluginApi implements UserListener, BuglyLis
     private static final String TAG = "SdkPluginYsdk";
 
     private PluginResultHandler loginHandler, payHandler, logoutHander;
-    /**
-     * 数据统计
-     */
-    private int dataType;
-    private String roleId, roleName, roleLevel, zoneId, zoneName, serverId, serverName, balance, vipLevel, partyName;
+
+    private Activity mActivity;
+
+    private String qqAppId, wxAppId, mAppid = null;
+    private String openId, accessToken, platform = null;
+    private String payToken;
+    private String pf;
+    private String pfKey;
+    private String zoneId;
+    private String fqBillNo;
+    private String thirdAmt;
 
     /**
      * 初始化
@@ -66,8 +77,8 @@ public class SdkPluginYsdk extends FQPluginApi implements UserListener, BuglyLis
     @Override
     public void init(Context activity, final PluginResultHandler handler) {
         FqLog.i(TAG, "init");
-        String qqAppId = (String) FqConfig.get().get("qqAppId");
-        String wxAppId = (String) FqConfig.get().get("wxAppId");
+        qqAppId = (String) FqConfig.get().get("qqAppId");
+        wxAppId = (String) FqConfig.get().get("wxAppId");
         FqLog.i(TAG, "qqAppId/wxAppId:" + qqAppId + "/" + wxAppId);
         if (TextUtils.isEmpty(qqAppId) || TextUtils.isEmpty(wxAppId)) {
             FqLog.e(TAG, "QQ_APP_ID 或者 WX_APP_ID 为空!");
@@ -83,10 +94,11 @@ public class SdkPluginYsdk extends FQPluginApi implements UserListener, BuglyLis
     @Override
     public void login(final Context activity, final PluginResultHandler handler) {
         FqLog.i(TAG, "login ");
+        mActivity = (Activity) activity;
         loginHandler = handler;
         final Dialog mDialog = new Dialog(activity, Utils.getIdentifier("LoginDialog", "style"));
         mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
-        final View view = LayoutInflater.from((Activity) activity).inflate(Utils.getIdentifier("fq_ysdk_login", "layout"), null);
+        final View view = LayoutInflater.from(mActivity).inflate(Utils.getIdentifier("fq_ysdk_login", "layout"), null);
         Button wx = view.findViewById(Utils.getIdentifier("ysdk_wx", "id"));
         Button qq = view.findViewById(Utils.getIdentifier("ysdk_qq", "id"));
         mDialog.setContentView(view);
@@ -119,31 +131,30 @@ public class SdkPluginYsdk extends FQPluginApi implements UserListener, BuglyLis
                     final PluginResultHandler handler) {
         FqLog.i(TAG, "pay map:" + (map != null ? map.toString() : ""));
         payHandler = handler;
-        String orderId = String.valueOf(map.get(ConstSet.PAY_ORDER_ID));
-        String extral = String.valueOf(map.get(ConstSet.PAY_EXTRAL_INFO));
-        float price = Float.valueOf((String) map.get(ConstSet.PAY_PRICE));
-        String productName = String.valueOf(map.get(ConstSet.PAY_PRODUCT_NAME));
-        String goodsResData = String.valueOf(map.get(ConstSet.PAY_CHARGE_ID));
-        String notifyUrl = String.valueOf(map.get(ConstSet.PAY_NOTIFY_URl));
-        int amount = 0;
-        try {
-            amount = (int) (price * 100); // 支付金额,单位分
-        } catch (NumberFormatException e) {
-            e.printStackTrace();
+        fqBillNo = (String) map.get(ConstSet.PAY_ORDER_ID);
+        Float price = Float.valueOf((String) map.get(ConstSet.PAY_PRICE));
+        int payRate = Integer.valueOf((String) map.get(ConstSet.PAY_RATE));
+        if (price > 0) {
+            price = price * payRate;
         }
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         byte[] appResData = baos.toByteArray();
+        thirdAmt = String.valueOf(price.intValue());
+        zoneId = "1";
+        FqLog.i(TAG, "price : " + thirdAmt);
+        YSDKApi.recharge(zoneId, thirdAmt, false, appResData, "ysdkExt", new PayListener() {
 
-        YSDKApi.recharge("1", String.valueOf(price), false, appResData,  "ysdkExt", new PayListener() {
             @Override
             public void OnPayNotify(PayRet ret) {
-                FqLog.i(TAG, ret.toString());
+                FqLog.i(TAG, "OnPayNotify:"+ret.toString());
                 if (PayRet.RET_SUCC == ret.ret) {
                     // 支付流程成功
                     switch (ret.payState) {
                         // 支付成功
                         case PayRet.PAYSTATE_PAYSUCC:
-                            fqSdkSuccess(payHandler);
+//                            扣款回调
+                            ReqYsdkPayBody payBody = new ReqYsdkPayBody( openId,  accessToken,  payToken,  pf,  pfKey,  zoneId,  fqBillNo,  thirdAmt,  mAppid,  platform);
+                            ysdkPayNotify(payBody);
                             break;
                         // 取消支付
                         case PayRet.PAYSTATE_PAYCANCEL:
@@ -210,123 +221,17 @@ public class SdkPluginYsdk extends FQPluginApi implements UserListener, BuglyLis
     }
 
     @Override
-    public void changeAccount(Activity activity, final PluginResultHandler prh) {
+    public void changeAccount(Context activity) {
         FqLog.i(TAG, " changeAccount ");
     }
 
 
-    private void showTips(final String message) {
-        Handler handler = new Handler(Looper.getMainLooper());
-        handler.post(new Runnable() {
-
-            @Override
-            public void run() {
-//				Activity activity = IdsLingdoCache.get().getCurrentActivity();
-//				if (null != activity){
-//					Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();
-//				}
-            }
-        });
-    }
-
     /**
      * 游戏角色信息
      *
      * @param data
      */
     public void setRoleInfo(Bundle data) {
-        if (null == data) {
-            data = new Bundle();
-        }
-        Log.i(TAG, "setExtraBundle data:" + data.toString());
-
-        roleName = data.getString("roleName");// 角色名称
-        roleLevel = data.getString("roleLevel");//当前登录的玩家角色等级
-        roleId = data.getString("roleId");// 角色名称
-        serverId = data.getString("serverId"); //当前登录的游戏区服ID
-        serverName = data.getString("serverName");//当前登录的游戏区服名称
-        balance = data.getString("balance");//当前用户游戏币余额
-        vipLevel = data.getString("vipLevel");//当前用户VIP等级
-        partyName = data.getString("partyName");//当前用户所属帮派
-        zoneId = data.getString("zoneId");//角色所在区域唯一标示
-        zoneName = data.getString("zoneName");//角色所在区域名称
-        dataType = data.getInt("dataType");//统计判断类型
-
-        StringBuffer reportData = new StringBuffer();
-        reportData.append("[");
-        reportData.append(" roleName:" + roleName);
-        reportData.append(" roleLevel:" + roleLevel);
-        reportData.append(" roleId:" + roleId);
-        reportData.append(" serverId:" + serverId);
-        reportData.append(" serverName:" + serverName);
-        reportData.append(" balance:" + balance);
-        reportData.append(" vipLevel:" + vipLevel);
-        reportData.append(" partyName:" + zoneId);
-        reportData.append(" zoneName:" + zoneName);
-        reportData.append(" dataType:" + dataType);
-        reportData.append("]");
-
-        switch (dataType) {
-            case 0://创建角色
-                showTips("数据上报:创建角色 ");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 1://角色升级
-                showTips("数据上报:角色升级");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 2:// 上传区服信息
-                showTips("数据上报:上传区服信息");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 3://登录
-                showTips("数据上报:登录");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 4://支付
-                showTips("数据上报:进入游戏");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 5:// 选择服务器
-                showTips("数据上报:支付");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 6://退出游戏
-                showTips("数据上报:退出游戏");
-                Log.i(TAG, "reportData" + reportData);
-                break;
-
-            case 7:// 备注(预留参数)
-                showTips("数据上报:退出游戏");
-                FqLog.i(TAG, "reportData" + reportData);
-                break;
-            default:
-                break;
-        }
-
-        String roleId = data.getString("roleId");// 角色id
-        String roleName = data.getString("roleName");
-        String roleLevel = data.getString("roleLevel");// 角色等级
-        String zoneId = data.getString("zoneId");
-        String zoneName = data.getString("zoneName");
-        String serverId = data.getString("serverId");
-        String serverName = data.getString("serverName");
-        int dataType = data.getInt("dataType");
-        switch (dataType) {
-            //这个在登入的时候调用
-            case 3:
-                FqLog.i(TAG, "setExtraBundle: roleId:" + roleId + ",roleName:" + roleName + ",roleLevel:" + roleLevel + ",serverId:" + serverId + ",serverName:" + serverName + ",chapter:Idreamsky");
-                break;
-
-            default:
-                break;
-        }
     }
 
     @Override
@@ -336,7 +241,7 @@ public class SdkPluginYsdk extends FQPluginApi implements UserListener, BuglyLis
 
     @Override
     public int getPayId() {
-        return 4;
+        return 5;
     }
 
     /**
@@ -423,28 +328,28 @@ public class SdkPluginYsdk extends FQPluginApi implements UserListener, BuglyLis
     }
 
     public void onRestart(Activity context) {
-        Log.i(TAG, "onRestart");
-        YSDKApi.onRestart((Activity) context);
+       FqLog.i(TAG, "onRestart");
+        YSDKApi.onRestart(context);
     }
 
     public void onResume(Activity context) {
-        Log.i(TAG, "onResume");
-        YSDKApi.onResume((Activity) context);
+       FqLog.i(TAG, "onResume");
+        YSDKApi.onResume(context);
     }
 
     public void onPause(Activity context) {
-        Log.i(TAG, "onPause");
-        YSDKApi.onPause((Activity) context);
+       FqLog.i(TAG, "onPause");
+        YSDKApi.onPause(context);
     }
 
     public void onStop(Activity context) {
-        Log.i(TAG, "onStop");
-        YSDKApi.onStop((Activity) context);
+       FqLog.i(TAG, "onStop");
+        YSDKApi.onStop(context);
     }
 
     public void onDestroy(Activity context) {
-        Log.i(TAG, "onDestroy");
-        YSDKApi.onDestroy((Activity) context);
+       FqLog.i(TAG, "onDestroy");
+        YSDKApi.onDestroy(context);
     }
 
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
@@ -489,94 +394,92 @@ public class SdkPluginYsdk extends FQPluginApi implements UserListener, BuglyLis
      */
     @Override
     public void OnLoginNotify(UserLoginRet ret) {
-        FqLog.i(TAG, "OnLoginNotify called ret:" + ret.getAccessToken() + " the ret:" + ret.toString());
+        FqLog.i(TAG, "OnLoginNotify called");
+        FqLog.i(TAG, "OnLoginNotify called ret:" + ret.getAccessToken());
+        FqLog.i(TAG, "OnLoginNotify ret:" + ret.toString());
         switch (ret.flag) {
             case eFlag.Succ:
                 YSDKApi.getLoginRecord(ret);
-
                 if (ret.ret != BaseRet.RET_SUCC) {
                     Log.d(TAG, "UserLogin error!!!");
                     fqSdkError(loginHandler, "UserLogin error!!!");
                     YSDKApi.logout();
                     return;
                 }
-                ePlatform mPlatform = ePlatform.QQ;
-
                 if (ret.platform == ePlatform.PLATFORM_ID_QQ) {
-                    mPlatform = ePlatform.QQ;
-                    YSDKApi.queryUserInfo(mPlatform);
+                    mAppid = qqAppId;
+                    platform = "1";
                 } else if (ret.platform == ePlatform.PLATFORM_ID_WX) {
-                    mPlatform = ePlatform.WX;
-                    YSDKApi.queryUserInfo(mPlatform);
+                    mAppid = wxAppId;
+                    platform = "2";
                 }
-
+                pf = ret.pf;
+                pfKey = ret.pf_key;
+                payToken = ret.getPayToken();
+                openId = ret.open_id;
+                accessToken = ret.getAccessToken();
+                FqLog.i(TAG, "platform: " + platform + "---mAppid:" + mAppid + "---openId:" + openId + "---accessToken:" + accessToken);
+
+                // 风起登录
+                JsonObject jsonObject = new JsonObject();
+                jsonObject.addProperty("appId", mAppid);
+                jsonObject.addProperty("accessToken", accessToken);
+                jsonObject.addProperty("openId", openId);
+                jsonObject.addProperty("platform", platform);
+                FqLog.e(TAG, "loginFqSdkSuccess: " + jsonObject.toString());
+                loginFqSdkSuccess(loginHandler, "ysdk", jsonObject);
                 break;
             // 游戏逻辑,对登录失败情况分别进行处理
-//            case eFlag.QQ_UserCancel:
-//                showToastTips("用户取消授权,请重试");
-//                isLogin = false;
-//                loginLedouSdkError(loginHandler, "用户取消授权,请重试");
-//                break;
-//            case eFlag.QQ_LoginFail:
-//                showToastTips("QQ登录失败,请重试");
-//                isLogin = false;
-//                loginLedouSdkError(loginHandler, "QQ登录失败,请重试");
-//                break;
-//            case eFlag.QQ_NetworkErr:
-//                showToastTips("QQ登录异常,请重试");
-//                isLogin = false;
-//                loginLedouSdkError(loginHandler, "QQ登录异常,请重试");
-//                break;
-//            case eFlag.QQ_NotInstall:
-//                showToastTips("手机未安装手Q,请安装后重试");
-//                isLogin = false;
-//                loginLedouSdkError(loginHandler, "手机未安装手Q,请安装后重试");
-//                break;
-//            case eFlag.QQ_NotSupportApi:
-//                showToastTips("手机手Q版本太低,请升级后重试");
-//                isLogin = false;
-//                loginLedouSdkError(loginHandler, "手机手Q版本太低,请升级后重试");
-//                break;
-//            case eFlag.WX_NotInstall:
-//                showToastTips("手机未安装微信,请安装后重试");
-//                isLogin = false;
-//                loginLedouSdkError(loginHandler, "手机未安装微信,请安装后重试");
-//                break;
-//            case eFlag.WX_NotSupportApi:
-//                showToastTips("手机微信版本太低,请升级后重试");
-//                isLogin = false;
-//                loginLedouSdkError(loginHandler, "手机微信版本太低,请升级后重试");
-//                break;
-//            case eFlag.WX_UserCancel:
-//                showToastTips("用户取消授权,请重试");
-//                isLogin = false;
-//                loginLedouSdkError(loginHandler, "用户取消授权,请重试");
-//                break;
-//            case eFlag.WX_UserDeny:
-//                showToastTips("用户拒绝了授权,请重试");
-//                isLogin = false;
-//                loginLedouSdkError(loginHandler, "用户拒绝了授权,请重试");
-//                break;
-//            case eFlag.WX_LoginFail:
-//                showToastTips("微信登录失败,请重试");
-//                isLogin = false;
-//                loginLedouSdkError(loginHandler, "微信登录失败,请重试");
-//                break;
-//            case eFlag.Login_TokenInvalid:
-//                loginLedouSdkError(loginHandler, "您尚未登录或者之前的登录已过期,请重试");
-//                break;
-//            case eFlag.Login_NotRegisterRealName:
-//                // 显示登录界面
-//                showToastTips("您的账号没有进行实名认证,请实名认证后重试");
-//                loginLedouSdkError(loginHandler, "您的账号没有进行实名认证,请实名认证后重试");
-//                break;
+            case eFlag.QQ_UserCancel:
+                ysdkLoginError("用户取消授权,请重试");
+                break;
+            case eFlag.QQ_LoginFail:
+                ysdkLoginError("QQ登录失败,请重试");
+                break;
+            case eFlag.QQ_NetworkErr:
+                ysdkLoginError("QQ登录异常,请重试");
+                break;
+            case eFlag.QQ_NotInstall:
+                ysdkLoginError("手机未安装手Q,请安装后重试");
+                break;
+            case eFlag.QQ_NotSupportApi:
+                showTips("手机手Q版本太低,请升级后重试");
+                fqSdkError(loginHandler, "手机手Q版本太低,请升级后重试");
+                break;
+            case eFlag.WX_NotInstall:
+                ysdkLoginError("手机未安装微信,请安装后重试");
+                break;
+            case eFlag.WX_NotSupportApi:
+                ysdkLoginError("手机微信版本太低,请升级后重试");
+                break;
+            case eFlag.WX_UserCancel:
+                ysdkLoginError("用户取消授权,请重试");
+                break;
+            case eFlag.WX_UserDeny:
+                ysdkLoginError("用户拒绝了授权,请重试");
+                break;
+            case eFlag.WX_LoginFail:
+                ysdkLoginError("微信登录失败,请重试");
+                break;
+            case eFlag.Login_TokenInvalid:
+                ysdkLoginError("您尚未登录或者之前的登录已过期,请重试");
+                break;
+            case eFlag.Login_NotRegisterRealName:
+                ysdkLoginError("您的账号没有进行实名认证,请实名认证后重试");
+                break;
 
         }
     }
 
+    private void ysdkLoginError(String msg) {
+        showTips(msg);
+        fqSdkError(loginHandler, msg);
+        YSDKApi.logout();
+    }
+
     @Override
     public void OnWakeupNotify(WakeupRet ret) {
-        FqLog.i(TAG, "called");
+        FqLog.i(TAG, "OnWakeupNotify called");
         FqLog.i(TAG, ret.toString() + ":flag:" + ret.flag);
         FqLog.i(TAG, ret.toString() + "msg:" + ret.msg);
         FqLog.i(TAG, ret.toString() + "platform:" + ret.platform);
@@ -600,11 +503,13 @@ public class SdkPluginYsdk extends FQPluginApi implements UserListener, BuglyLis
 
     @Override
     public void OnRelationNotify(UserRelationRet relationRet) {
+        FqLog.i(TAG, "OnRelationNotify called");
+
         String result = "";
         result = result + "flag:" + relationRet.flag + "\n";
         result = result + "msg:" + relationRet.msg + "\n";
         result = result + "platform:" + relationRet.platform + "\n";
-        Log.d(TAG, "OnRelationNotify:" + result);
+        FqLog.i(TAG, "OnRelationNotify:" + result);
         PersonInfo personInfo = null;
         JSONObject userProperty = new JSONObject();
         if (relationRet.persons != null && relationRet.persons.size() > 0) {
@@ -628,8 +533,41 @@ public class SdkPluginYsdk extends FQPluginApi implements UserListener, BuglyLis
         } else {
             result = result + "relationRet.persons is bad";
         }
-        FqLog.e(TAG,"OnRelationNotify" + result);
-        // 发送结果到结果展示界面
+        FqLog.e(TAG, "OnRelationNotify" + result);
+
+
+    }
 
+    /**
+     * 弹Toast
+     */
+    public void showTips(final String msg) {
+        if (mActivity != null) {
+            mActivity.runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    FqLog.e(TAG, "msg:" + msg);
+                    Toast.makeText(mActivity, msg, Toast.LENGTH_SHORT).show();
+                }
+            });
+        }
+    }
+
+    private void ysdkPayNotify(ReqYsdkPayBody payBody){
+        String request = ParamsUtils.getInstance().generateParams(payBody);
+        FqLog.i(TAG, "ysdkPayNotify:" + request);
+        HttpManager.getInstance().post(FqConfig.get().getBaseUrl()+"/api/sdk/ysdk/v1/notify ", Utils.decodeText(request), new BaseCallback() {
+            @Override
+            public void onFailure(BaseException msg) {
+                FqLog.e(TAG, "ysdkPayNotify: onFailure" + msg.getMsg());
+                fqSdkError(payHandler,msg.getMsg());
+            }
+
+            @Override
+            public void onSuccess(int code, String msg, Object data) {
+                FqLog.i(TAG, "ysdkPayNotify msg::" +msg+" /data: "+ data.toString());
+                fqSdkSuccess(payHandler);
+            }
+        });
     }
 }

+ 6 - 6
fq_plugin_api/src/main/assets/fqcfg

@@ -1,12 +1,12 @@
 {
-"appId": "20213",
-"channelId": "1110",
-"adId": "844922",
-"adFlag": "sglsbw_oppo_0001",
+"appId": "20366",
+"channelId": "1108",
+"adId": "473610",
+"adFlag": "zsjjby_yyb_0001",
 "isDebug":true,
 
-"qqAppId": "1108134389",
-"wxAppId": "wxbfdd8ed9995ce4a6",
+"qqAppId": "1109962571",
+"wxAppId": "wx93ae0a8f6a37f9b4",
 
 "oppo_gameSecret": "f953537dbffa425d8ce693ecd483559e"
 

+ 14 - 0
fq_plugin_api/src/main/assets/params

@@ -0,0 +1,14 @@
+oppo 参数
+"appId": "20213",
+"channelId": "1110",
+"adId": "844922",
+"adFlag": "sglsbw_oppo_0001",
+"oppo_gameSecret": "f953537dbffa425d8ce693ecd483559e"
+
+ysdk参数
+"appId": "20366",
+"channelId": "1108",
+"adId": "473610",
+"adFlag": "zsjjby_yyb_0001",
+"qqAppId": "1109962571",
+"wxAppId": "wx93ae0a8f6a37f9b4"

+ 17 - 0
fq_plugin_api/src/main/java/com/fq/channel/sdk/api/FqGame.java

@@ -63,6 +63,23 @@ public class FqGame {
         FqGameHander.exit(activity, result);
     }
 
+    /**
+     * 提供给CP调用的切换账号接口
+     *
+     * @param activity
+     */
+    public static void changeAccount(@NonNull Activity activity){
+        ApiPlugin.getInstace().changeAccount(activity);
+    }
+    /**
+     * 提供给CP调用的登出接口
+     *
+     * @param activity
+     */
+    public static void logout(@NonNull Activity activity,ILogout logout){
+        FqGameHander.logout(activity, logout);
+    }
+
     /**
      * 提供给CP调用角色信息上报的接口
      *

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

@@ -163,6 +163,19 @@ public class FqGameHander {
         });
     }
 
+    public static void logout(Activity activity, final ILogout exit) {
+        JointManager.getInstance().logout(activity, new PluginResultHandler() {
+            @Override
+            public void onHandlePluginResult(PluginResult result) {
+                PluginResult.Status mStatus = result.getStatus();
+                FqLog.i(TAG, "logout mStatus :" + mStatus);
+                if (PluginResult.Status.OK == mStatus) {
+                    exit.onLogout();
+                }
+            }
+        });
+    }
+
     protected static void onRequestPermissionsResult(int requestCode,
                                                      String[] permissions, int[] grantResults) {
         PermissionManager.getInstance().onRequestPermissionsResult(requestCode, permissions, grantResults);

+ 13 - 0
fq_plugin_api/src/main/java/com/fq/channel/sdk/api/ILogout.java

@@ -0,0 +1,13 @@
+package com.fq.channel.sdk.api;
+
+/**
+ * @Description: 描述
+ * @Author: FLuty
+ * @CreateDate: 2020/4/22 17:09
+ */
+public interface ILogout {
+    /**
+     * 登出成功
+     */
+    void onLogout();
+}

+ 10 - 2
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/config/FqConfig.java

@@ -40,9 +40,9 @@ public class FqConfig {
     public static final String KEY_DEBUG = "isDebug";
 
 
-    public static final String BASE_URL = "http://ta.funcheergame.com";  //测试环境
+    //    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.0.151:9099";  //本地环境
 
     /**
      * 初始化
@@ -233,4 +233,12 @@ public class FqConfig {
         return key;
     }
 
+    /**
+     * 获取 BaseUrl
+     *
+     * @return
+     */
+    public String getBaseUrl() {
+        return BASE_URL;
+    }
 }

+ 0 - 3
fq_plugin_base/src/main/java/com/fq/channel/sdk/base/constants/ConstSet.java

@@ -81,7 +81,4 @@ public class ConstSet {
     public static final String DATA_KEY_ZONE_ID = "zoneId" ;
     public static final String DATA_KEY_ZONE_NAME = "zoneName" ;
     public static final String DATA_KEY_DATA_TYPE = "dataType" ;
-    public static final String DATA_KEY_DATA_MONEY = "money" ;
-    public static final String DATA_KEY_DATA_PARTY_NAME = "partyName" ;
-
 }

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

@@ -53,9 +53,8 @@ public abstract class FQPluginApi {
      * 切换用户
      *
      * @param activity
-     * @param prh
      */
-    public abstract void changeAccount(final Activity activity, final PluginResultHandler prh);
+    public abstract void changeAccount(final Context activity);
 
     /**
      * 退出

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

@@ -52,18 +52,8 @@ public class ParamsUtils {
      * @return
      */
     public String generateInitParams() {
-
-        ReqContent<ReqInitBody> reqContent = new ReqContent<>();
-        //生成init操作的boby
         ReqInitBody body = new ReqInitBody(FqConfig.get().getAdId());
-        //生成init操作的head
-        ReqHeader head = generateReqHeader(body);
-
-        //转换成最终请求用的Json
-        reqContent.setHead(head);
-        reqContent.setBody(body);
-
-        return gson2Json(reqContent);
+        return generateParams(body);
     }
 
     /**
@@ -72,8 +62,6 @@ public class ParamsUtils {
      * @return
      */
     public String generateLoginParams(HashMap<String, String> loginOauthInfo) {
-
-        ReqContent<RepLoginBody> reqContent = new ReqContent<>();
         //生成login对象
         RepLoginBody body = new RepLoginBody<JsonObject>();
         body.setAdid(FqConfig.get().getAdId());
@@ -88,13 +76,7 @@ public class ParamsUtils {
         body.setChannelType(channelType);
         body.setChannelParams(jsonObject);
 
-        //生成login 操作的head
-        ReqHeader head = generateReqHeader(body);
-        //转换成最终请求用的Json
-        reqContent.setHead(head);
-        reqContent.setBody(body);
-
-        return gson2Json(reqContent);
+        return generateParams(body);
     }
 
     /**
@@ -103,18 +85,28 @@ public class ParamsUtils {
      * @return
      */
     public String generateOrderParams(RepOrderBody repOrderBody) {
+        return generateParams(repOrderBody);
+    }
 
-        ReqContent<RepOrderBody> reqContent = new ReqContent<>();
-        //生成init操作的head
-        ReqHeader head = generateReqHeader(repOrderBody);
+    /**
+     * 生成通用请求的 对应的Json
+     *
+     * @return
+     */
+    public <T> String generateParams(T repBody) {
+
+        ReqContent<T> reqContent = new ReqContent<>();
+        //生成通用操作的head
+        ReqHeader head = generateReqHeader(repBody);
 
         //转换成最终请求用的Json
         reqContent.setHead(head);
-        reqContent.setBody(repOrderBody);
+        reqContent.setBody(repBody);
 
         return gson2Json(reqContent);
     }
 
+
     /**
      * 根据对应请求的body生成 对应Json中的head
      *

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

@@ -101,7 +101,7 @@ public class JointManager {
         FqNetRequest.login(channelInfo, new BaseCallback<ResultLoginBody>() {
             @Override
             public void onFailure(BaseException msg) {
-                FqLog.e(TAG, "createOrder onFailure:" + "i=" + msg.getMessage());
+                FqLog.e(TAG, "channelLogin onFailure:" + "i=" + msg.getMsg());
                 cb.onHandlePluginResult(new PluginResult(Status.ERROR, msg.getMsg()));
             }
 
@@ -146,7 +146,7 @@ public class JointManager {
         repOrderBody.setIsTest("0");
         repOrderBody.setOrderAmount(price);
         repOrderBody.setOrderPlatform(ApiPlugin.getInstace().getPayId());
-        repOrderBody.setOrderType("6");
+        repOrderBody.setOrderType("4");
         repOrderBody.setRemark(remark);
         repOrderBody.setSubject(productName);
         repOrderBody.setServerId(serverId);
@@ -160,15 +160,15 @@ public class JointManager {
         FqNetRequest.createOrder(repOrderBody, new BaseCallback<ResultPayBody>() {
             @Override
             public void onFailure(BaseException msg) {
-                FqLog.e(TAG, "createOrder onFailure:" + "i=" + msg.getMessage());
-                cb.onHandlePluginResult(new PluginResult(Status.ERROR, msg.getMessage()));
+                FqLog.e(TAG, "createOrder onFailure:" + "i=" + msg.getMsg());
+                cb.onHandlePluginResult(new PluginResult(Status.ERROR, msg.getMsg()));
             }
 
             @Override
             public void onSuccess(int code, String msg, ResultPayBody data) {
                 FqLog.i(TAG, "createOrder : " + data.getOrderId() + " /NotifyUrl : " + data.getNotifyUrl());
                 map.put(PAY_ORDER_ID, data.getOrderId());
-                map.put(PAY_NOTIFY_URl, FqConfig.BASE_URL + "/" + data.getNotifyUrl());
+                map.put(PAY_NOTIFY_URl, FqConfig.get().getBaseUrl() + "/" + data.getNotifyUrl());
                 ApiPlugin.getInstace().pay(context, map, new PluginResultHandler() {
                     @Override
                     public void onHandlePluginResult(PluginResult result) {
@@ -193,6 +193,10 @@ public class JointManager {
         ApiPlugin.getInstace().exit(context, cb);
     }
 
+    public void logout(Context context, PluginResultHandler cb) {
+        ApiPlugin.getInstace().logout(context, cb);
+    }
+
     public void setRoleInfo(Bundle data) {
         this.data = data;
         ApiPlugin.getInstace().setRoleInfo(data);

+ 23 - 0
fq_plugin_core/src/main/java/com/fq/channel/sdk/core/invoke/ApiPlugin.java

@@ -99,6 +99,29 @@ public class ApiPlugin extends ApiReflectManager {
 
     }
 
+    public void changeAccount(Context context){
+        try {
+            invoke(getDeclaredMethod("changeAccount", Context.class),
+                    context);
+        } catch (NoSuchFunctionException e) {
+            FqLog.printStackTrace(e);
+        }
+    }
+
+    public void logout(Context context, PluginResultHandler cb){
+        if(cb == null) {
+            FqLog.e(TAG, "====logout====的回调函数为null,请初始化");
+            return;
+        }
+        try {
+            invoke(getDeclaredMethod("logout", Context.class, PluginResultHandler.class),
+                    context, cb);
+        } catch (NoSuchFunctionException e) {
+            FqLog.printStackTrace(e);
+            cb.onHandlePluginResult(new PluginResult(PluginResult.Status.CANCEL));
+        }
+    }
+
     public void exit(Context context, final PluginResultHandler cb) {
         if(cb == null) {
             FqLog.e(TAG, "====exit====的回调函数为null,请初始化");

+ 2 - 0
gradle.properties

@@ -20,5 +20,7 @@ org.gradle.jvmargs=-Xmx1536m
 ## Kotlin code style for this project: "official" or "obsolete":
 #kotlin.code.style=official
 #android.injected.testOnly=false
+android.useAndroidX=true
+android.enableJetifier=true