123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- package com.edufound.reader.presenter;
- import android.app.ActionBar;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Handler;
- import android.os.Message;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.FrameLayout;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- import androidx.annotation.NonNull;
- import com.edufound.reader.R;
- import com.edufound.reader.apiserver.OrderApiServerImpl;
- import com.edufound.reader.base.BaseActivity;
- import com.edufound.reader.base.BasePresenter;
- import com.edufound.reader.bean.ChannelCodeEnum;
- import com.edufound.reader.bean.HttpResultBean;
- import com.edufound.reader.bean.PayResultBean;
- import com.edufound.reader.contract.TmailPayContract;
- import com.edufound.reader.util.miutil.MiSoundSDKUtil;
- import com.edufound.reader.model.TmailPayModel;
- import com.edufound.reader.util.tmailsdk.TMailSDKUtil;
- import com.edufound.reader.util.Consts;
- import com.edufound.reader.util.DeviceUtil;
- import com.edufound.reader.util.DeviceUuidFactory;
- import com.google.gson.Gson;
- import com.google.gson.reflect.TypeToken;
- import com.okhttplib.HttpInfo;
- import com.okhttplib.callback.Callback;
- import com.orhanobut.logger.Logger;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- public class TmailPayPresenter extends BasePresenter<TmailPayContract.View> implements TmailPayContract.Presenter {
- TmailPayModel mModel;
- OrderApiServerImpl mOrderApi;
- List<PayResultBean> mPayResult;
- Map<String, String> createOrderMap;
- String nowOrderId = null;
- public TmailPayPresenter() {
- this.mModel = new TmailPayModel();
- mOrderApi = new OrderApiServerImpl();
- }
- @Override
- public void getProductInfo() {
- mOrderApi.getProductListInfo(mView.getActivity(), Consts.getUMengChannel(), new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- HttpResultBean<List<PayResultBean>> bean = info.getRetDetail(new TypeToken<HttpResultBean<List<PayResultBean>>>() {
- }.getType());
- mPayResult = bean.getData();
- mView.getProductSuccess();
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- }
- });
- }
- @Override
- public void activityDestory() {
- if (handler != null) {
- handler.removeMessages(1);
- handler.removeMessages(2);
- handler = null;
- }
- }
- @Override
- 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;
- message.arg1 = i;
- handler.sendMessageDelayed(message, 50 * i);
- }
- }
- @Override
- public void isPaySuccess() {
- // mModel.isPay(mView.getActivity(), nowOrderId, new Callback() {
- // @Override
- // public void onSuccess(HttpInfo info) throws IOException {
- // HttpResultBean<PayResultBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<PayResultBean>>() {
- // }.getType());
- // Logger.e("bean.get:" + info.getRetDetail());
- // Logger.e("status:" + bean.getData().getPayStatus());
- // if (bean.getData().getPayStatus().equals("SUCCESS")) {
- // handler.removeMessages(2);
- // } else {
- // handler.sendEmptyMessageDelayed(2, 3000);
- // }
- //
- // }
- //
- // @Override
- // public void onFailure(HttpInfo info) throws IOException {
- //
- // }
- // });
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == TMailSDKUtil.TMAIL_PAY_RESULT_CODE && resultCode == Activity.RESULT_OK) {
- if (data != null) {
- boolean isPaySuccess = data.getBooleanExtra("isPaySuccess", false);
- String paySuccessDataJson = data.getStringExtra("paySuccessData");
- int payErrorCode = data.getIntExtra("payErrorCode", -1);
- String payErrorMsg = data.getStringExtra("payErrorMsg");
- Logger.e("qrcode, isPaySuccess=" + isPaySuccess +
- ";paySuccessDataJson=" + paySuccessDataJson +
- ";payErrorCode=" + payErrorCode +
- ";payErrorMsg=" + payErrorMsg);
- }
- }
- }
- void initItem(LinearLayout itemFrame, int position) {
- View view = LayoutInflater.from(mView.getActivity()).inflate(R.layout.activity_pay_tmail_item, null);
- view.setLayoutParams(new LinearLayout.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, 1));
- TmailPayPresenter.PayItemHolder holder = new TmailPayPresenter.PayItemHolder(view);
- holder.mTitle.setText(mPayResult.get(position).getTitle());
- holder.mPayMoney.setText(String.valueOf(Double.parseDouble(mPayResult.get(position).getPrice()) / 100));
- holder.mRecommend.setVisibility(View.VISIBLE);
- holder.mOriginPrice.setText("原价¥ " + String.valueOf(Double.parseDouble(mPayResult.get(position).getOriginPrice()) / 100));
- if (mPayResult.get(position).getPayType().equals("YEAR")) {
- holder.mConstraintLayoutBg.setBackgroundResource(R.drawable.activity_pay_tmail_item_year);
- } else if (mPayResult.get(position).getPayType().equals("MONTH")) {
- holder.mConstraintLayoutBg.setBackgroundResource(R.drawable.activity_pay_tmal_item_month);
- holder.mRecommend.setVisibility(View.INVISIBLE);
- } else {
- holder.mConstraintLayoutBg.setBackgroundResource(R.drawable.activity_pay_tmal_item_month);
- holder.mRecommend.setVisibility(View.INVISIBLE);
- }
- view.setTag(holder);
- mView.addUiClick(view, o -> {
- Logger.e("选择了...." + ((TmailPayPresenter.PayItemHolder) view.getTag()).mPayMoney.getText().toString());
- Map<String, String> params = new HashMap<>();
- params.put("productId", mPayResult.get(position).getId());
- params.put("channel", Consts.getUMengChannel());
- params.put("payType", mPayResult.get(position).getPayType());
- params.put("uid", Consts.getmConstsUserBean().getUid());
- params.put("first", "false");
- if (Consts.getUMengChannel().equals(ChannelCodeEnum.TMAIL.getChannelCode())) {
- //去天猫支付
- mModel.TMailPayGenie(mView.getActivity(), ((BaseActivity) mView.getActivity()).getGson().toJson(params), new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- Logger.e("创建订单返回信息成功:" + info.getRetDetail());
- Logger.e("创建订单返回信息成功:getParamJson-" + info.getParamJson());
- try {
- JSONObject object = new JSONObject(info.getRetDetail());
- JSONObject json = object.getJSONObject("data");
- Logger.e("json:" + json);
- TMailSDKUtil.tmailPay(mView.getActivity(), json.toString());
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("创建订单返回信息失败:" + info.getRetDetail());
- Logger.e("创建订单返回信息成功:getParamJson-" + info.getParamJson());
- Toast.makeText(mView.getActivity(), "创建订单失败", Toast.LENGTH_SHORT).show();
- }
- });
- } else if (Consts.getUMengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
- //小米支付
- //获取shortkey
- Logger.e("小米支付");
- mModel.MiSoundPay(mView.getActivity(), ((BaseActivity) mView.getActivity()).getGson().toJson(params), new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- try {
- JSONObject object = new JSONObject(info.getRetDetail());
- JSONObject json = object.getJSONObject("data");
- String orderId = json.getString("orderId");
- String price = json.getString("price");
- String orderDesc = json.getString("title");
- Map<String, String> getShortKeyJsonMap = new HashMap<>();
- getShortKeyJsonMap.put("country", "CN");
- getShortKeyJsonMap.put("deviceID", DeviceUuidFactory.getUuid().toString());
- getShortKeyJsonMap.put("language", "zh");
- getShortKeyJsonMap.put("platform", "13201");
- getShortKeyJsonMap.put("sdk_version", String.valueOf(android.os.Build.VERSION.SDK_INT));
- getShortKeyJsonMap.put("codever", "3");
- getShortKeyJsonMap.put("biz", "136");
- getShortKeyJsonMap.put("mac", DeviceUtil.getLocalMacAddressFromIp(mView.getActivity()));
- getShortKeyJsonMap.put("appId", "2882303761519930481");
- getShortKeyJsonMap.put("customerOrderId", orderId);
- getShortKeyJsonMap.put("trxAmount", price);
- getShortKeyJsonMap.put("orderDesc", orderDesc);
- getShortKeyJsonMap.put("bizChannel", "MI_SOUND");
- getShortKeyJsonMap.put("rid", "1");
- new Thread() {
- @Override
- public void run() {
- try {
- String shortKeyJson = new Gson().toJson(getShortKeyJsonMap);
- JSONObject resultObject = new JSONObject(MiSoundSDKUtil.getShortKey(shortKeyJson));
- JSONObject shortKeyObject = new JSONObject(resultObject.getString("data"));
- String shortKey = shortKeyObject.getString("shortKey");
- String url = "https://h5.tv.mi.com/store/thirdparty/pricetag/shortkey/" + shortKey;
- mView.MiSoundPayUrlSuccess(url);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }.start();
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("创建订单返回信息失败:" + info.getRetDetail());
- Logger.e("创建订单返回信息成功:getParamJson-" + info.getParamJson());
- Toast.makeText(mView.getActivity(), "创建订单失败", Toast.LENGTH_SHORT).show();
- }
- });
- }
- });
- itemFrame.addView(view);
- if (position >= mPayResult.size() - 1) {
- // Logger.e("position:" + position);
- // Logger.e("mPayResult.size():" + mPayResult.size());
- // itemFrame.getChildAt(0).performClick();
- }
- }
- Handler handler = new Handler(new Handler.Callback() {
- @Override
- public boolean handleMessage(@NonNull Message message) {
- switch (message.what) {
- case 1:
- initItem(((LinearLayout) message.obj), message.arg1);
- break;
- case 2:
- isPaySuccess();
- break;
- }
- return false;
- }
- });
- class PayItemHolder {
- FrameLayout mConstraintLayoutBg;
- TextView mTitle;
- TextView mOriginPrice;
- TextView mPayMoney;
- ImageView mRecommend;
- public PayItemHolder(View itemView) {
- mConstraintLayoutBg = itemView.findViewById(R.id.activity_pay_tmail_item_bg);
- mTitle = itemView.findViewById(R.id.activity_pay_tmail_item_title);
- mOriginPrice = itemView.findViewById(R.id.activity_pay_tmail_item_originprice);
- mPayMoney = itemView.findViewById(R.id.activity_pay_tmail_item_money);
- mRecommend = itemView.findViewById(R.id.activity_pay_tmail_item_recommend);
- }
- }
- }
|