浏览代码

1.增加全局监听登录
2.增加全局语音调起登录
3.增加语音监听
4.支付界面接口->商品列表->创建订单
5.小度支付调用(无云端回调)

FailedToRead 3 年之前
父节点
当前提交
1cf6238b94

+ 2 - 2
.idea/misc.xml

@@ -63,8 +63,8 @@
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_main.xml" value="0.15" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_message.xml" value="0.14" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_otherrecord.xml" value="0.303125" />
-        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_pay.xml" value="0.22" />
-        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_pay_item.xml" value="0.25" />
+        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_pay.xml" value="0.2" />
+        <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_pay_item.xml" value="0.75" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_record.xml" value="0.33" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_saffloer.xml" value="0.22" />
         <entry key="..\:/WorkSpace/Git_WorkSpace/efunboxReader-android/efunboxReader-android-master/app/src/main/res/layout/activity_saffloer_sign_layout_item.xml" value="0.5" />

+ 44 - 0
app/src/main/java/com/edufound/reader/activity/PayActivity.java

@@ -16,6 +16,7 @@ import com.edufound.reader.base.BaseMvpActivity;
 import com.edufound.reader.contract.PayContract;
 import com.edufound.reader.popwindow.PopWindowUtil;
 import com.edufound.reader.presenter.PayPresenter;
+import com.orhanobut.logger.Logger;
 
 import java.util.HashMap;
 
@@ -106,4 +107,47 @@ public class PayActivity extends BaseMvpActivity<PayPresenter> implements PayCon
     public void addUiClick(View view, Consumer onNext) {
         addUiClickListener(view, onNext);
     }
+
+    @Override
+    protected void botHandleIntent(BotIntent intent, String customData) {
+        super.botHandleIntent(intent, customData);
+        Logger.e("botHandleIntent");
+    }
+
+    @Override
+    protected void botOnClickLink(String url, HashMap<String, String> paramMap) {
+        super.botOnClickLink(url, paramMap);
+        Logger.e("botOnClickLink");
+    }
+
+    @Override
+    protected void botOnHandleScreenNavigatorEvent(int event) {
+        super.botOnHandleScreenNavigatorEvent(event);
+        Logger.e("botOnHandleScreenNavigatorEvent");
+    }
+
+    @Override
+    protected void botOnLinkAccountSucceed(String s, String s1) {
+        super.botOnLinkAccountSucceed(s, s1);
+        Logger.e("botOnLinkAccountSucceed");
+    }
+
+    @Override
+    protected void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
+        super.botOnChargeStatusUpdated(purchaseResult, authorizationAmount, capturedAmount, creationTimestamp, baiduOrderReferenceId, sellerOrderId, msg);
+        Logger.e("botOnChargeStatusUpdated");
+        String intentResult = "botOnChargeStatusUpdated:" + "\n支付状态更新:%s\n订单金额信息:%s\n"
+                + "实收金额信息:%s\n订单时间戳:%d\n"
+                + "百度侧订单号:%s\n卖方生成的订单号:%s\n订单备注信息:%s";
+        Logger.e("intentResult:" + intentResult);
+    }
+
+    @Override
+    protected void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
+        Logger.e("botOnBuyStatusUpdated");
+        super.botOnBuyStatusUpdated(purchaseResult, productId, baiduOrderId, sellerOrderId, msg, token);
+        String intentResult = "botOnBuyStatusUpdated:" + "\n支付状态更新:%s\n商品id:%s\n"
+                + "百度侧订单号:%s\n卖方生成的订单号:%s\n订单备注信息:%s";
+        Logger.e("intentResult:" + intentResult);
+    }
 }

+ 2 - 0
app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java

@@ -18,6 +18,7 @@ import android.widget.Toast;
 
 import com.baidu.duer.bot.directive.payload.AmountInfo;
 import com.baidu.duer.botsdk.BotIntent;
+import com.baidu.duer.botsdk.util.RequestBotSdkUtil;
 import com.edufound.reader.R;
 import com.edufound.reader.annotation.BindView;
 import com.edufound.reader.application.EApplication;
@@ -333,6 +334,7 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
     protected void botOnLinkAccountSucceed(String s, String s1) {
         super.botOnLinkAccountSucceed(s, s1);
         Logger.e(getLocalClassName() + "botOnLinkAccountSucceed");
+//        RequestBotSdkUtil.requestBuyProduct();
     }
 
     @Override

+ 7 - 0
app/src/main/java/com/edufound/reader/apiserver/OrderApiServerImpl.java

@@ -28,6 +28,11 @@ public class OrderApiServerImpl implements OrderApiServer {
     }
 
     @Override
+    public void createdOrder(Activity activity, String json, Callback callback) {
+        OkHttpClient.doPostAsync(activity, new HttpInfo.Builder().setUrl(API + "/order").addParamJson(json), callback);
+    }
+
+    @Override
     public void getAuth(Activity activity, Callback callback) {
         OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/auth"), callback);
     }
@@ -41,4 +46,6 @@ interface OrderApiServer {
     void getProductInfo(Activity activity, String channel, Callback callback);
 
     void getProductListInfo(Activity activity, String channel, Callback callback);
+
+    void createdOrder(Activity activity, String json, Callback callback);
 }

+ 103 - 2
app/src/main/java/com/edufound/reader/base/BaseActivity.java

@@ -22,31 +22,43 @@ import android.view.animation.LinearInterpolator;
 import android.widget.FrameLayout;
 import android.widget.Toast;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baidu.duer.bot.directive.payload.AmountInfo;
 import com.baidu.duer.botsdk.BotIntent;
 import com.baidu.duer.botsdk.BotSdk;
 import com.baidu.duer.botsdk.IAccountChargeMsgListener;
 import com.edufound.reader.R;
 import com.edufound.reader.annotation.BindView;
+import com.edufound.reader.apiserver.UserApiServerImpl;
 import com.edufound.reader.application.EApplication;
 import com.edufound.reader.bean.ChannelCode;
+import com.edufound.reader.bean.HttpResultBean;
+import com.edufound.reader.bean.UserBean;
 import com.edufound.reader.botsdk.BotMessageListener;
 import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.botsdk.IBotIntentCallback;
 import com.edufound.reader.receiver.HomeKeyEventReceiver;
 import com.edufound.reader.receiver.NetworkChangeReceiver;
 import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.DeviceUuidFactory;
 import com.edufound.reader.util.EfunboxUtil;
 import com.edufound.reader.util.LiuHaiScreenUtil;
+import com.edufound.reader.util.MMKVEncodeKey;
+import com.edufound.reader.util.MMKVUtil;
 import com.edufound.reader.util.PermissionsUtil;
 import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
 import com.jakewharton.rxbinding4.view.RxView;
+import com.okhttplib.HttpInfo;
+import com.okhttplib.callback.Callback;
 import com.orhanobut.logger.Logger;
 
+import java.io.IOException;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.HashMap;
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import androidx.annotation.NonNull;
@@ -298,11 +310,31 @@ public abstract class BaseActivity extends AppCompatActivity {
 
     }
 
+    /**
+     * 支付状态改变的通知
+     *
+     * @param purchaseResult        支付结果 SUCCESS 支付成功 - ERROR 支付发生错误
+     * @param authorizationAmount   应收金额信息
+     * @param capturedAmount        实际扣款信息
+     * @param creationTimestamp     订单创建时间戳
+     * @param baiduOrderReferenceId 此次交易百度生成的订单Id
+     * @param sellerOrderId         对应支付的订单ID
+     * @param msg                   订单信息
+     */
     protected void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount,
                                             AmountInfo capturedAmount, long creationTimestamp,
                                             String baiduOrderReferenceId, String sellerOrderId, String msg) {
     }
 
+    /**
+     * 购买结果更新
+     *
+     * @param purchaseResult 支付结果,SUCCESS 支付成功 -ERROR 支付发生错误
+     * @param productId      商品id
+     * @param baiduOrderId   百度侧订单id
+     * @param sellerOrderId  卖家订单id
+     * @param msg            订单备注信息
+     */
     protected void botOnBuyStatusUpdated(@NonNull final String purchaseResult,
                                          @NonNull final String productId,
                                          @NonNull final String baiduOrderId,
@@ -312,7 +344,75 @@ public abstract class BaseActivity extends AppCompatActivity {
     IBotIntentCallback mBotIntentCallBack = new IBotIntentCallback() {
         @Override
         public void handleIntent(BotIntent intent, String customData) {
-            botHandleIntent(intent, customData);
+            if (intent.name.equals("all_login")) {
+                //用户主动要求登录
+                EfunboxUtil.checkLogin(EApplication.mActivityList.get(EApplication.mActivityList.size() - 1));
+                return;
+            }
+            if (BotRegisterListener.isNoLoginIntent(intent)) {
+                //不是获取手机号
+                botHandleIntent(intent, customData);
+            } else {
+                //是获取手机号
+                if (intent.slots.get(0).value.equals("SUCCESS")) {
+                    //获取手机号Token成功
+                    String token = intent.slots.get(1).value;
+                    UserApiServerImpl userApiServer = new UserApiServerImpl();
+                    Activity topActivity = EApplication.mActivityList.get(EApplication.mActivityList.size() - 1);
+                    userApiServer.getBaiDuUserPhone(topActivity, token, new Callback() {
+                        @Override
+                        public void onSuccess(HttpInfo info) throws IOException {
+                            JSONObject object = JSONObject.parseObject(info.getRetDetail().toString());
+                            String phone = JSONObject.parseObject(object.getString("data")).getString("phone");
+                            Logger.e("获取的手机号:" + phone);
+                            if (EfunboxUtil.isMobileNO(phone)) {
+                                Map<String, String> map = new HashMap<>();
+                                map.put("deviceCode", DeviceUuidFactory.getUuid());
+                                map.put("channel", Consts.getUmengChannel());
+                                map.put("mobileNo", phone);
+                                if (MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE).equals("") || MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE) == null) {
+                                    //如果没有,默认给一年级
+                                    map.put("grade", "PRIMARY_FIRST_GRADE");
+                                } else {
+                                    map.put("grade", MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE));
+                                }
+                                String json = getGson().toJson(map);
+                                Logger.e("json:" + json);
+                                userApiServer.registerMobile(topActivity, json, new Callback() {
+                                    @Override
+                                    public void onSuccess(HttpInfo info) throws IOException {
+                                        Logger.e("手机号注册成功:" + info.getRetDetail());
+                                        HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
+                                        }.getType());
+                                        Consts.setUID(bean.getData().getUid());
+                                        //用户是否登录,登录了,创建Consts的userbean
+                                        String nickName = EfunboxUtil.setPhoneMiddle(bean.getData().getMobile());
+                                        bean.getData().setNickName(nickName);
+                                        Consts.setmConstsUserBean(bean.getData());
+                                        Logger.e("看看到底对没有:" + getGson().toJson(Consts.getmConstsUserBean()));
+                                    }
+
+                                    @Override
+                                    public void onFailure(HttpInfo info) throws IOException {
+                                        Logger.e("手机号注册失败:" + info.getRetDetail());
+                                        Toast.makeText(topActivity, "注册失败", Toast.LENGTH_SHORT).show();
+                                    }
+                                });
+                            } else {
+                                Toast.makeText(topActivity, "手机号不正确", Toast.LENGTH_SHORT).show();
+                            }
+                        }
+
+                        @Override
+                        public void onFailure(HttpInfo info) throws IOException {
+
+                        }
+                    });
+                } else if (intent.slots.get(0).value.equals("FAIL")) {
+                    //获取手机号Token失败
+                }
+            }
+
         }
 
         @Override
@@ -337,6 +437,7 @@ public abstract class BaseActivity extends AppCompatActivity {
         public void onChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount,
                                           AmountInfo capturedAmount, long creationTimestamp,
                                           String baiduOrderReferenceId, String sellerOrderId, String msg) {
+            Logger.e("baseActivity---onChargeStatusUpdated");
             botOnChargeStatusUpdated(purchaseResult, authorizationAmount, capturedAmount, creationTimestamp, baiduOrderReferenceId, sellerOrderId, msg);
         }
 
@@ -345,7 +446,7 @@ public abstract class BaseActivity extends AppCompatActivity {
                                        @NonNull final String productId,
                                        @NonNull final String baiduOrderId,
                                        @NonNull final String sellerOrderId, @Nullable final String msg, String token) {
-
+            Logger.e("baseActivity---onBuyStatusUpdated");
             botOnBuyStatusUpdated(purchaseResult, productId, baiduOrderId, sellerOrderId, msg, token);
 
         }

+ 92 - 1
app/src/main/java/com/edufound/reader/base/BaseFragment.java

@@ -1,22 +1,40 @@
 package com.edufound.reader.base;
 
 import android.annotation.SuppressLint;
+import android.app.Activity;
 import android.content.Context;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.Toast;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baidu.duer.bot.directive.payload.AmountInfo;
 import com.baidu.duer.botsdk.BotIntent;
 import com.baidu.duer.botsdk.IAccountChargeMsgListener;
+import com.edufound.reader.apiserver.UserApiServerImpl;
+import com.edufound.reader.application.EApplication;
+import com.edufound.reader.bean.HttpResultBean;
+import com.edufound.reader.bean.UserBean;
 import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.botsdk.IBotIntentCallback;
 import com.edufound.reader.receiver.NetworkChangeReceiver;
+import com.edufound.reader.util.Consts;
+import com.edufound.reader.util.DeviceUuidFactory;
+import com.edufound.reader.util.EfunboxUtil;
+import com.edufound.reader.util.MMKVEncodeKey;
+import com.edufound.reader.util.MMKVUtil;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
 import com.jakewharton.rxbinding4.view.RxView;
+import com.okhttplib.HttpInfo;
+import com.okhttplib.callback.Callback;
 import com.orhanobut.logger.Logger;
 
+import java.io.IOException;
 import java.util.HashMap;
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import androidx.annotation.NonNull;
@@ -160,10 +178,83 @@ public abstract class BaseFragment extends Fragment {
                                          @NonNull final String sellerOrderId, @Nullable final String msg, String token) {
     }
 
+
     IBotIntentCallback mBotIntentCallBack = new IBotIntentCallback() {
         @Override
         public void handleIntent(BotIntent intent, String customData) {
-            botHandleIntent(intent, customData);
+            Logger.e("intent:" + intent.name);
+            if (intent.name.equals("all_login")) {
+                //用户主动要求登录
+                EfunboxUtil.checkLogin(getActivity());
+                return;
+            }
+            if (BotRegisterListener.isNoLoginIntent(intent)) {
+                //不是获取手机号
+                botHandleIntent(intent, customData);
+            } else {
+                //是获取手机号
+                if (intent.slots.get(0).value.equals("SUCCESS")) {
+                    //获取手机号Token成功
+                    String token = intent.slots.get(1).value;
+                    UserApiServerImpl userApiServer = new UserApiServerImpl();
+                    Activity topActivity = EApplication.mActivityList.get(EApplication.mActivityList.size() - 1);
+                    userApiServer.getBaiDuUserPhone(topActivity, token, new Callback() {
+                        @Override
+                        public void onSuccess(HttpInfo info) throws IOException {
+                            JSONObject object = JSONObject.parseObject(info.getRetDetail().toString());
+                            String phone = JSONObject.parseObject(object.getString("data")).getString("phone");
+                            Logger.e("获取的手机号:" + phone);
+                            if (EfunboxUtil.isMobileNO(phone)) {
+                                Map<String, String> map = new HashMap<>();
+                                map.put("deviceCode", DeviceUuidFactory.getUuid());
+                                map.put("channel", Consts.getUmengChannel());
+                                map.put("mobileNo", phone);
+                                if (MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE).equals("") || MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE) == null) {
+                                    //如果没有,默认给一年级
+                                    map.put("grade", "PRIMARY_FIRST_GRADE");
+                                } else {
+                                    map.put("grade", MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE));
+                                }
+                                Gson gson = new Gson();
+                                String json = gson.toJson(map);
+                                Logger.e("json:" + json);
+                                userApiServer.registerMobile(topActivity, json, new Callback() {
+                                    @Override
+                                    public void onSuccess(HttpInfo info) throws IOException {
+                                        Logger.e("手机号注册成功:" + info.getRetDetail());
+
+                                        HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
+                                        }.getType());
+
+                                        Consts.setUID(bean.getData().getUid());
+                                        //用户是否登录,登录了,创建Consts的userbean
+                                        String nickName = EfunboxUtil.setPhoneMiddle(bean.getData().getMobile());
+                                        bean.getData().setNickName(nickName);
+                                        Consts.setmConstsUserBean(bean.getData());
+                                        Logger.e("看看到底对没有:" + gson.toJson(Consts.getmConstsUserBean()));
+                                    }
+
+                                    @Override
+                                    public void onFailure(HttpInfo info) throws IOException {
+                                        Logger.e("手机号注册失败:" + info.getRetDetail());
+                                        Toast.makeText(topActivity, "注册失败", Toast.LENGTH_SHORT).show();
+                                    }
+                                });
+                            } else {
+                                Toast.makeText(topActivity, "手机号不正确", Toast.LENGTH_SHORT).show();
+                            }
+                        }
+
+                        @Override
+                        public void onFailure(HttpInfo info) throws IOException {
+
+                        }
+                    });
+                } else if (intent.slots.get(0).value.equals("FAIL")) {
+                    //获取手机号Token失败
+                }
+            }
+
         }
 
         @Override

+ 40 - 0
app/src/main/java/com/edufound/reader/bean/PayResultBean.java

@@ -21,6 +21,46 @@ public class PayResultBean {
 
     private String title;
 
+    private String payType;
+
+    private String productId;
+
+    private String orderId;
+
+    private String thirdPartOrderId;
+
+    public String getProductId() {
+        return productId;
+    }
+
+    public void setProductId(String productId) {
+        this.productId = productId;
+    }
+
+    public String getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(String orderId) {
+        this.orderId = orderId;
+    }
+
+    public String getThirdPartOrderId() {
+        return thirdPartOrderId;
+    }
+
+    public void setThirdPartOrderId(String thirdPartOrderId) {
+        this.thirdPartOrderId = thirdPartOrderId;
+    }
+
+    public String getPayType() {
+        return payType;
+    }
+
+    public void setPayType(String payType) {
+        this.payType = payType;
+    }
+
     public void setAddDays(String addDays) {
         this.addDays = addDays;
     }

+ 35 - 0
app/src/main/java/com/edufound/reader/botsdk/BotRegisterListener.java

@@ -1,9 +1,12 @@
 package com.edufound.reader.botsdk;
 
+import com.baidu.duer.bot.directive.payload.AmountInfo;
 import com.baidu.duer.bot.event.payload.LinkClickedEventPayload;
+import com.baidu.duer.bot.event.payload.SellerOrderStructure;
 import com.baidu.duer.botsdk.BotIntent;
 import com.baidu.duer.botsdk.BotSdk;
 import com.baidu.duer.botsdk.IAccountChargeMsgListener;
+import com.baidu.duer.botsdk.util.RequestBotSdkUtil;
 import com.edufound.reader.bean.ChannelCode;
 import com.edufound.reader.util.Consts;
 import com.orhanobut.logger.Logger;
@@ -59,5 +62,37 @@ public class BotRegisterListener {
 
     }
 
+    /**
+     * 产生一个固定的金额信息
+     *
+     * @return amountinfo
+     */
+    public static AmountInfo mockAmountInfo(String price) {
+        AmountInfo amountInfo = new AmountInfo();
+        amountInfo.amount = price;
+        amountInfo.currencyCode = "CNY";
+        return amountInfo;
+    }
 
+    /**
+     * 构造卖家订单信息
+     *
+     * @return
+     */
+    public static SellerOrderStructure mockSellerOlrderStructure(String productId, String description, String sellerOrderId, String productName) {
+        SellerOrderStructure sellerOrderStructure = new SellerOrderStructure();
+//        sellerOrderStructure.productId = "111" + System.currentTimeMillis();
+//        sellerOrderStructure.description = "测试商品介绍";
+//        sellerOrderStructure.sellerOrderId = "222" + System.currentTimeMillis();
+//        sellerOrderStructure.productName = "测试商品名称";
+        sellerOrderStructure.productId = productId;
+        sellerOrderStructure.description = description;
+        sellerOrderStructure.sellerOrderId = sellerOrderId;
+        sellerOrderStructure.productName = productName;
+        return sellerOrderStructure;
+    }
+
+    public static void requestBuyProduct() {
+        RequestBotSdkUtil.requestBuyProduct("123123123123", "191025095313376709");
+    }
 }

+ 52 - 7
app/src/main/java/com/edufound/reader/presenter/PayPresenter.java

@@ -1,24 +1,24 @@
 package com.edufound.reader.presenter;
 
 import android.app.ActionBar;
+import android.graphics.Color;
 import android.os.Handler;
 import android.os.Message;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import com.baidu.duer.botsdk.BotSdk;
 import com.edufound.reader.R;
 import com.edufound.reader.apiserver.OrderApiServerImpl;
-import com.edufound.reader.application.EApplication;
+import com.edufound.reader.base.BaseActivity;
 import com.edufound.reader.base.BasePresenter;
 import com.edufound.reader.bean.HttpResultBean;
-import com.edufound.reader.bean.HttpResultDataListBean;
 import com.edufound.reader.bean.PayResultBean;
+import com.edufound.reader.botsdk.BotRegisterListener;
 import com.edufound.reader.contract.PayContract;
-import com.edufound.reader.model.CharacterFragmentModel;
 import com.edufound.reader.model.PayModel;
 import com.edufound.reader.util.Consts;
 import com.google.gson.reflect.TypeToken;
@@ -27,15 +27,19 @@ import com.okhttplib.callback.Callback;
 import com.orhanobut.logger.Logger;
 
 import java.io.IOException;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import androidx.annotation.NonNull;
+import androidx.constraintlayout.widget.ConstraintLayout;
 
 public class PayPresenter extends BasePresenter<PayContract.View> implements PayContract.Presenter {
 
     PayModel mModel;
     OrderApiServerImpl mOrderApi;
     List<PayResultBean> mPayResult;
+    Map<String, String> createOrderMap;
 
     public PayPresenter() {
         this.mModel = new PayModel();
@@ -64,7 +68,6 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
     public void initPayItem(LinearLayout itemFrame) {
         Logger.e("initPayItem");
         for (int i = 0; i < mPayResult.size(); i++) {
-
             Message message = new Message();
             message.obj = itemFrame;
             message.what = 1;
@@ -72,18 +75,58 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
             handler.sendMessageDelayed(message, 50 * i);
         }
 
-
     }
 
     void initItem(LinearLayout itemFrame, int position) {
         View view = LayoutInflater.from(mView.getActivity()).inflate(R.layout.activity_pay_item, null);
         view.setLayoutParams(new LinearLayout.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, 0, 1));
-        view.setTag(new PayItemHolder(view));
+        PayItemHolder holder = new PayItemHolder(view);
+        holder.mTitle.setText(mPayResult.get(position).getTitle());
+        holder.mPayMoney.setText(String.valueOf(Double.parseDouble(mPayResult.get(position).getPrice()) / 100));
+        holder.mIsCheck.setVisibility(View.INVISIBLE);
+        double a = (Double.parseDouble(mPayResult.get(position).getOriginPrice()) / 100);
+        double b = (Double.parseDouble(mPayResult.get(position).getPrice()) / 100);
+        holder.mContent.setText("原价:" + a + ",现价:" + b);
+        if (mPayResult.get(position).getPayType().equals("YEAR")) {
+            holder.mConstraintLayoutBg.setBackgroundColor(Color.parseColor("#FF904E"));
+        } else if (mPayResult.get(position).getPayType().equals("MONTH")) {
+            holder.mConstraintLayoutBg.setBackgroundColor(Color.parseColor("#E08CFF"));
+        } else {
+            holder.mConstraintLayoutBg.setBackgroundColor(Color.parseColor("#FFFFFF"));
+        }
+        view.setTag(holder);
+
         mView.addUiClick(view, o -> {
             for (int j = 0; j < itemFrame.getChildCount(); j++) {
                 ((PayItemHolder) itemFrame.getChildAt(j).getTag()).mIsCheck.setVisibility(View.INVISIBLE);
             }
             ((PayItemHolder) view.getTag()).mIsCheck.setVisibility(View.VISIBLE);
+            Logger.e("选择了...." + ((PayItemHolder) view.getTag()).mPayMoney.getText().toString());
+
+            if (createOrderMap == null) {
+                createOrderMap = new HashMap<>();
+            }
+            createOrderMap.put("channel", Consts.getUmengChannel());
+            createOrderMap.put("productId", mPayResult.get(position).getId());
+            createOrderMap.put("first", "false");
+            mOrderApi.createdOrder(mView.getActivity(), ((BaseActivity) mView.getActivity()).getGson().toJson(createOrderMap), new Callback() {
+                @Override
+                public void onSuccess(HttpInfo info) throws IOException {
+                    HttpResultBean<PayResultBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<PayResultBean>>() {
+                    }.getType());
+
+                    BotSdk.getInstance().requireCharge(BotRegisterListener.mockAmountInfo(String.valueOf(Double.parseDouble(bean.getData().getPrice()) / 100)),
+                            BotRegisterListener.mockSellerOlrderStructure(bean.getData().getProductId(), "", bean.getData().getOrderId(), bean.getData().getTitle()),
+                            bean.getData().getTitle());
+//                    BotRegisterListener.requestBuyProduct();
+                }
+
+                @Override
+                public void onFailure(HttpInfo info) throws IOException {
+
+                }
+            });
+
         });
         itemFrame.addView(view);
     }
@@ -101,12 +144,14 @@ public class PayPresenter extends BasePresenter<PayContract.View> implements Pay
     });
 
     class PayItemHolder {
+        ConstraintLayout mConstraintLayoutBg;
         TextView mTitle;
         TextView mContent;
         TextView mPayMoney;
         ImageView mIsCheck;
 
         public PayItemHolder(View itemView) {
+            mConstraintLayoutBg = itemView.findViewById(R.id.activity_pay_item_bg);
             mTitle = itemView.findViewById(R.id.activity_pay_item_title);
             mContent = itemView.findViewById(R.id.activity_pay_item_content);
             mPayMoney = itemView.findViewById(R.id.activity_pay_item_money);

+ 4 - 5
app/src/main/java/com/edufound/reader/util/EfunboxUtil.java

@@ -130,11 +130,10 @@ public class EfunboxUtil {
 
 
     public static boolean checkLogin(Context context) {
-        if (!Consts.getUID().equals("test")) {
-            //已登录
-            return true;
-        }
-        Logger.e("Consts.getUmengChannel():" + Consts.getUmengChannel());
+//        if (!Consts.getUID().equals("test")) {
+//            //已登录,无论登不登录都调用登录...
+//            return true;
+//        }
         //未登录,去登录
         if (Consts.getUmengChannel().equals(ChannelCode.BAIDU.getChannelCode())) {
             //百度渠道调用百度的授权

+ 0 - 1
app/src/main/res/layout/activity_pay.xml

@@ -65,7 +65,6 @@
                         android:layout_width="0dp"
                         android:layout_height="match_parent"
                         android:layout_gravity="center"
-                        android:layout_marginLeft="45dp"
                         android:layout_marginTop="30dp"
                         android:layout_marginBottom="30dp"
                         android:layout_weight="1.3"

+ 4 - 5
app/src/main/res/layout/activity_pay_item.xml

@@ -7,8 +7,8 @@
 
 
     <com.edufound.reader.cusview.RoundFrameLayout
-            android:layout_width="530dp"
-            android:layout_height="167dp"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
             android:layout_gravity="center">
 
         <com.edufound.reader.cusview.RoundFrameLayout
@@ -18,11 +18,10 @@
                 android:elevation="5dp">
 
             <androidx.constraintlayout.widget.ConstraintLayout
-                    android:id="@+id/activity_pay_item"
+                    android:id="@+id/activity_pay_item_bg"
                     android:layout_width="522dp"
                     android:layout_height="162dp"
-                    android:layout_gravity="center"
-                    android:background="@color/red">
+                    android:layout_gravity="center">
 
                 <TextView
                         android:id="@+id/activity_pay_item_title"