|
@@ -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);
|
|
|
|
|
|
}
|