|
@@ -0,0 +1,581 @@
|
|
|
+package com.edufound.reader.presenter;
|
|
|
+
|
|
|
+import android.content.Intent;
|
|
|
+import android.content.IntentSender;
|
|
|
+import android.os.Handler;
|
|
|
+import android.os.Message;
|
|
|
+import android.text.TextUtils;
|
|
|
+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.HttpResultBean;
|
|
|
+import com.edufound.reader.bean.PayResultBean;
|
|
|
+import com.edufound.reader.contract.HuaWeiPayContract;
|
|
|
+import com.edufound.reader.cusview.CusToast;
|
|
|
+import com.edufound.reader.interfaces.EfunboxInterfaces;
|
|
|
+import com.edufound.reader.model.HuaWeiPayModel;
|
|
|
+import com.edufound.reader.util.Consts;
|
|
|
+import com.edufound.reader.util.EfunboxUtil;
|
|
|
+import com.google.gson.reflect.TypeToken;
|
|
|
+import com.huawei.hmf.tasks.OnFailureListener;
|
|
|
+import com.huawei.hmf.tasks.OnSuccessListener;
|
|
|
+import com.huawei.hmf.tasks.Task;
|
|
|
+import com.huawei.hms.iap.Iap;
|
|
|
+import com.huawei.hms.iap.IapApiException;
|
|
|
+import com.huawei.hms.iap.entity.ConsumeOwnedPurchaseReq;
|
|
|
+import com.huawei.hms.iap.entity.ConsumeOwnedPurchaseResult;
|
|
|
+import com.huawei.hms.iap.entity.InAppPurchaseData;
|
|
|
+import com.huawei.hms.iap.entity.IsEnvReadyResult;
|
|
|
+import com.huawei.hms.iap.entity.OrderStatusCode;
|
|
|
+import com.huawei.hms.iap.entity.OwnedPurchasesReq;
|
|
|
+import com.huawei.hms.iap.entity.OwnedPurchasesResult;
|
|
|
+import com.huawei.hms.iap.entity.PurchaseIntentReq;
|
|
|
+import com.huawei.hms.iap.entity.PurchaseIntentResult;
|
|
|
+import com.huawei.hms.iap.entity.PurchaseResultInfo;
|
|
|
+import com.huawei.hms.iap.util.IapClientHelper;
|
|
|
+import com.huawei.hms.support.api.client.Status;
|
|
|
+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 HuaWeiPayPresenter extends BasePresenter<HuaWeiPayContract.View> implements HuaWeiPayContract.Presenter {
|
|
|
+
|
|
|
+
|
|
|
+ HuaWeiPayModel mModel;
|
|
|
+ OrderApiServerImpl mOrderApi;
|
|
|
+ List<PayResultBean> mPayResult;
|
|
|
+ HuaWeiPayBean payBean;
|
|
|
+ String HuaWeiPayType = "";
|
|
|
+
|
|
|
+ public HuaWeiPayPresenter() {
|
|
|
+ this.mModel = new HuaWeiPayModel();
|
|
|
+ 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 {
|
|
|
+ Logger.e("error:" + info.getRetDetail());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @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);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ 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(0, ViewGroup.LayoutParams.MATCH_PARENT, 1));
|
|
|
+ view.animate().scaleX(0.9f).scaleY(0.9f).setDuration(0).start();
|
|
|
+ PayItemHolder holder = new PayItemHolder(view);
|
|
|
+ holder.mTitle.setText(mPayResult.get(position).getTitle());
|
|
|
+ holder.mPayMoney.setText(String.valueOf(Integer.parseInt(mPayResult.get(position).getPrice()) / 100));
|
|
|
+ holder.mRecommend.setVisibility(View.VISIBLE);
|
|
|
+ holder.mOriginPrice.setText("原价¥ " + String.valueOf(Integer.parseInt(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 -> {
|
|
|
+ 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");
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ String json = ((BaseActivity) mView.getActivity()).getGson().toJson(params);
|
|
|
+ if (mPayResult.get(position).getPayType().equals("CONSECUTIVE_MONTH")) {
|
|
|
+
|
|
|
+ HuaWeiPayType = "2";
|
|
|
+ mModel.HuaWeiPayContinuous(mView.getActivity(), json, createOrderCallBack);
|
|
|
+ } else {
|
|
|
+ HuaWeiPayType = "0";
|
|
|
+ mModel.HuaWeiPay(mView.getActivity(), json, createOrderCallBack);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ });
|
|
|
+ itemFrame.addView(view);
|
|
|
+ if (position >= mPayResult.size() - 1) {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Callback createOrderCallBack = 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);
|
|
|
+
|
|
|
+ payBean = new HuaWeiPayBean();
|
|
|
+ payBean.orderId = json.getString("orderId");
|
|
|
+ payBean.productIds = json.getString("productId");
|
|
|
+ payBean.priceType = HuaWeiPayType;
|
|
|
+ toPay(payBean);
|
|
|
+ } 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();
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ 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:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void isEnvReady() {
|
|
|
+
|
|
|
+ Task<IsEnvReadyResult> task = Iap.getIapClient(mView.getActivity()).isEnvReady();
|
|
|
+ task.addOnSuccessListener(new OnSuccessListener<IsEnvReadyResult>() {
|
|
|
+ @Override
|
|
|
+ public void onSuccess(IsEnvReadyResult result) {
|
|
|
+
|
|
|
+ String carrierId = result.getCarrierId();
|
|
|
+ Logger.e("onSuccess=carrierId:" + carrierId);
|
|
|
+ if (payBean != null) {
|
|
|
+ toPay(payBean);
|
|
|
+ } else {
|
|
|
+ CusToast.getInstance(mView.getActivity()).show("payBean==null", 3000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).addOnFailureListener(new OnFailureListener() {
|
|
|
+ @Override
|
|
|
+ public void onFailure(Exception e) {
|
|
|
+ if (e instanceof IapApiException) {
|
|
|
+ IapApiException apiException = (IapApiException) e;
|
|
|
+ Status status = apiException.getStatus();
|
|
|
+ if (status.getStatusCode() == OrderStatusCode.ORDER_HWID_NOT_LOGIN) {
|
|
|
+
|
|
|
+ if (status.hasResolution()) {
|
|
|
+ try {
|
|
|
+
|
|
|
+
|
|
|
+ status.startResolutionForResult(mView.getActivity(), 6666);
|
|
|
+ } catch (IntentSender.SendIntentException exp) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (status.getStatusCode() == OrderStatusCode.ORDER_ACCOUNT_AREA_NOT_SUPPORTED) {
|
|
|
+
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void checkOrder(int pricetype) {
|
|
|
+ Logger.e("补单:" + pricetype);
|
|
|
+
|
|
|
+ OwnedPurchasesReq ownedPurchasesReq = new OwnedPurchasesReq();
|
|
|
+
|
|
|
+ ownedPurchasesReq.setPriceType(pricetype);
|
|
|
+
|
|
|
+
|
|
|
+ Task<OwnedPurchasesResult> task = Iap.getIapClient(mView.getActivity()).obtainOwnedPurchases(ownedPurchasesReq);
|
|
|
+ task.addOnSuccessListener(new OnSuccessListener<OwnedPurchasesResult>() {
|
|
|
+ @Override
|
|
|
+ public void onSuccess(OwnedPurchasesResult result) {
|
|
|
+
|
|
|
+ if (result != null && result.getInAppPurchaseDataList() != null) {
|
|
|
+ for (int i = 0; i < result.getInAppPurchaseDataList().size(); i++) {
|
|
|
+ String inAppPurchaseData = result.getInAppPurchaseDataList().get(i);
|
|
|
+ String inAppSignature = result.getInAppSignature().get(i);
|
|
|
+ Logger.e("inAppPurchaseData:" + inAppPurchaseData);
|
|
|
+ if (inAppPurchaseData != null) {
|
|
|
+ sendProduct(inAppPurchaseData);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).addOnFailureListener(new OnFailureListener() {
|
|
|
+ @Override
|
|
|
+ public void onFailure(Exception e) {
|
|
|
+ if (e instanceof IapApiException) {
|
|
|
+ IapApiException apiException = (IapApiException) e;
|
|
|
+ Status status = apiException.getStatus();
|
|
|
+ int returnCode = apiException.getStatusCode();
|
|
|
+ } else {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void checkAutoPay() {
|
|
|
+
|
|
|
+ OwnedPurchasesReq ownedPurchasesReq = new OwnedPurchasesReq();
|
|
|
+
|
|
|
+ ownedPurchasesReq.setPriceType(2);
|
|
|
+
|
|
|
+ Task<OwnedPurchasesResult> task = Iap.getIapClient(mView.getActivity()).obtainOwnedPurchases(ownedPurchasesReq);
|
|
|
+ task.addOnSuccessListener(new OnSuccessListener<OwnedPurchasesResult>() {
|
|
|
+ @Override
|
|
|
+ public void onSuccess(OwnedPurchasesResult result) {
|
|
|
+
|
|
|
+ if (result != null && result.getInAppPurchaseDataList() != null) {
|
|
|
+ for (int i = 0; i < result.getInAppPurchaseDataList().size(); i++) {
|
|
|
+ String inAppPurchaseData = result.getInAppPurchaseDataList().get(i);
|
|
|
+ String inAppSignature = result.getInAppSignature().get(i);
|
|
|
+
|
|
|
+
|
|
|
+ try {
|
|
|
+ InAppPurchaseData inAppPurchaseDataBean = new InAppPurchaseData(inAppPurchaseData);
|
|
|
+ int purchaseState = inAppPurchaseDataBean.getPurchaseState();
|
|
|
+ boolean isSubValid = inAppPurchaseDataBean.isSubValid();
|
|
|
+
|
|
|
+ *
|
|
|
+ * true:表示商品已经收费且未过期,也没有发生退款;商品处于宽限期。您可以基于该标志为顾客提供服务。
|
|
|
+ * false:未完成购买或者已经过期,或者购买后已经退款。
|
|
|
+ *
|
|
|
+ * */
|
|
|
+ if (isSubValid) {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ } else {
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ EfunboxUtil.getYFVip(mView.getActivity(), new EfunboxInterfaces.getYFVipInterfaces() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void success(long time) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void error() {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } catch (JSONException e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).addOnFailureListener(new OnFailureListener() {
|
|
|
+ @Override
|
|
|
+ public void onFailure(Exception e) {
|
|
|
+ if (e instanceof IapApiException) {
|
|
|
+ IapApiException apiException = (IapApiException) e;
|
|
|
+ Status status = apiException.getStatus();
|
|
|
+ int returnCode = apiException.getStatusCode();
|
|
|
+ } else {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
+ if (requestCode == 6666) {
|
|
|
+ if (data != null) {
|
|
|
+
|
|
|
+ int returnCode = IapClientHelper.parseRespCodeFromIntent(data);
|
|
|
+ if (returnCode == OrderStatusCode.ORDER_STATE_SUCCESS) {
|
|
|
+
|
|
|
+
|
|
|
+ String carrierId = IapClientHelper.parseCarrierIdFromIntent(data);
|
|
|
+ Logger.e("onActivityResult--carrierId:" + carrierId);
|
|
|
+ if (payBean != null) {
|
|
|
+ toPay(payBean);
|
|
|
+ } else {
|
|
|
+ CusToast.getInstance(mView.getActivity()).show("payBean==null", 3000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ } else if (requestCode == 9999) {
|
|
|
+
|
|
|
+
|
|
|
+ PurchaseResultInfo purchaseResultInfo = Iap.getIapClient(mView.getActivity()).parsePurchaseResultInfoFromIntent(data);
|
|
|
+ switch (purchaseResultInfo.getReturnCode()) {
|
|
|
+ case OrderStatusCode.ORDER_STATE_CANCEL:
|
|
|
+
|
|
|
+
|
|
|
+ CusToast.getInstance(mView.getActivity()).show("取消支付", 3000);
|
|
|
+ break;
|
|
|
+ case OrderStatusCode.ORDER_STATE_FAILED:
|
|
|
+ case OrderStatusCode.ORDER_STATE_DEFAULT_CODE:
|
|
|
+ case OrderStatusCode.ORDER_PRODUCT_OWNED:
|
|
|
+
|
|
|
+ Logger.e("\"支付失败:\" + purchaseResultInfo.getReturnCode():" + purchaseResultInfo.getReturnCode());
|
|
|
+ CusToast.getInstance(mView.getActivity()).show("支付失败:" + purchaseResultInfo.getReturnCode(), 3000);
|
|
|
+ break;
|
|
|
+ case OrderStatusCode.ORDER_STATE_SUCCESS:
|
|
|
+
|
|
|
+ String inAppPurchaseData = purchaseResultInfo.getInAppPurchaseData();
|
|
|
+ String inAppPurchaseDataSignature = purchaseResultInfo.getInAppDataSignature();
|
|
|
+ Logger.e("支付成功:" + inAppPurchaseData);
|
|
|
+ CusToast.getInstance(mView.getActivity()).show("支付成功", 3000);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (Integer.valueOf(payBean.priceType) == 0) {
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ sendProduct(inAppPurchaseData);
|
|
|
+ } else if (Integer.valueOf(payBean.priceType) == 1) {
|
|
|
+
|
|
|
+ } else if (Integer.valueOf(payBean.priceType) == 2) {
|
|
|
+
|
|
|
+ checkAutoPay();
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ Logger.e("支付default:purchaseResultInfo.getReturnCode():" + purchaseResultInfo.getReturnCode());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void toPay(HuaWeiPayBean bean) {
|
|
|
+ if (bean == null) {
|
|
|
+ CusToast.getInstance(mView.getActivity()).show("payBean==null", 3000);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ PurchaseIntentReq req = new PurchaseIntentReq();
|
|
|
+
|
|
|
+ req.setProductId(bean.productIds);
|
|
|
+
|
|
|
+ if (TextUtils.isEmpty(bean.priceType)) {
|
|
|
+ bean.priceType = "0";
|
|
|
+ }
|
|
|
+ req.setPriceType(Integer.valueOf(bean.priceType));
|
|
|
+ req.setDeveloperPayload(bean.orderId);
|
|
|
+
|
|
|
+
|
|
|
+ Task<PurchaseIntentResult> task = Iap.getIapClient(mView.getActivity()).createPurchaseIntent(req);
|
|
|
+ task.addOnSuccessListener(new OnSuccessListener<PurchaseIntentResult>() {
|
|
|
+ @Override
|
|
|
+ public void onSuccess(PurchaseIntentResult result) {
|
|
|
+
|
|
|
+ Status status = result.getStatus();
|
|
|
+ if (status.hasResolution()) {
|
|
|
+ try {
|
|
|
+
|
|
|
+ status.startResolutionForResult(mView.getActivity(), 9999);
|
|
|
+ } catch (IntentSender.SendIntentException exp) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).addOnFailureListener(new OnFailureListener() {
|
|
|
+ @Override
|
|
|
+ public void onFailure(Exception e) {
|
|
|
+ if (e instanceof IapApiException) {
|
|
|
+ IapApiException apiException = (IapApiException) e;
|
|
|
+ Status status = apiException.getStatus();
|
|
|
+ int returnCode = apiException.getStatusCode();
|
|
|
+ Logger.e("支付调用失败:" + status + "--returnCode=" + returnCode);
|
|
|
+ } else {
|
|
|
+
|
|
|
+ }
|
|
|
+ CusToast.getInstance(mView.getActivity()).show("支付调用失败", 3000);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public void sendProduct(String data) {
|
|
|
+
|
|
|
+ InAppPurchaseData inAppPurchaseDataBean = null;
|
|
|
+ try {
|
|
|
+ inAppPurchaseDataBean = new InAppPurchaseData(data);
|
|
|
+ int purchaseState = inAppPurchaseDataBean.getPurchaseState();
|
|
|
+ int consumptionState = inAppPurchaseDataBean.getConsumptionState();
|
|
|
+ if (purchaseState == 0 && consumptionState == 0) {
|
|
|
+
|
|
|
+
|
|
|
+ Logger.e("准备发货");
|
|
|
+ String purchaseToken = inAppPurchaseDataBean.getPurchaseToken();
|
|
|
+
|
|
|
+ ConsumeOwnedPurchaseReq req = new ConsumeOwnedPurchaseReq();
|
|
|
+ req.setPurchaseToken(purchaseToken);
|
|
|
+ Task<ConsumeOwnedPurchaseResult> task = Iap.getIapClient(mView.getActivity()).consumeOwnedPurchase(req);
|
|
|
+ task.addOnSuccessListener(new OnSuccessListener<ConsumeOwnedPurchaseResult>() {
|
|
|
+ @Override
|
|
|
+ public void onSuccess(ConsumeOwnedPurchaseResult result) {
|
|
|
+
|
|
|
+ Logger.e("发货成功");
|
|
|
+ EfunboxUtil.getYFVip(mView.getActivity(), new EfunboxInterfaces.getYFVipInterfaces() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void success(long time) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void error() {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }).addOnFailureListener(new OnFailureListener() {
|
|
|
+ @Override
|
|
|
+ public void onFailure(Exception e) {
|
|
|
+ if (e instanceof IapApiException) {
|
|
|
+ IapApiException apiException = (IapApiException) e;
|
|
|
+ Status status = apiException.getStatus();
|
|
|
+ int returnCode = apiException.getStatusCode();
|
|
|
+ } else {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ } else if (purchaseState == 0 && consumptionState == 1) {
|
|
|
+ Logger.e("已购买并且已经发货了");
|
|
|
+ EfunboxUtil.getYFVip(mView.getActivity(), new EfunboxInterfaces.getYFVipInterfaces() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void success(long time) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void error() {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ Logger.e("发货失败");
|
|
|
+ Logger.e("purchaseState:" + purchaseState);
|
|
|
+ Logger.e("consumptionState:" + consumptionState);
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (JSONException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ class HuaWeiPayBean {
|
|
|
+
|
|
|
+ public String productIds;
|
|
|
+ public String priceType;
|
|
|
+ public String orderId;
|
|
|
+ }
|
|
|
+}
|