|
|
@@ -2,38 +2,12 @@ package com.sheep.gamegroup.view.activity;
|
|
|
|
|
|
import android.content.Intent;
|
|
|
import android.os.Bundle;
|
|
|
-import android.text.TextUtils;
|
|
|
-import android.view.View;
|
|
|
-import android.widget.ImageView;
|
|
|
-import android.widget.TextView;
|
|
|
-
|
|
|
-import com.kfzs.duanduan.utils.NumberFormatUtils;
|
|
|
import com.sheep.gamegroup.absBase.BaseActivity;
|
|
|
-import com.sheep.gamegroup.model.entity.BaseMessage;
|
|
|
-import com.sheep.gamegroup.model.entity.DialogConfig;
|
|
|
-import com.sheep.gamegroup.model.entity.PayOrder;
|
|
|
-import com.sheep.gamegroup.model.entity.UserAssets;
|
|
|
import com.sheep.gamegroup.model.entity.WebParams;
|
|
|
-import com.sheep.gamegroup.model.util.SheepSubscriber;
|
|
|
import com.sheep.gamegroup.util.CommonUtil;
|
|
|
-import com.sheep.gamegroup.util.DataUtil;
|
|
|
+import com.sheep.gamegroup.util.Constant;
|
|
|
import com.sheep.gamegroup.util.Jump2View;
|
|
|
-import com.sheep.gamegroup.util.ListUtil;
|
|
|
-import com.sheep.gamegroup.util.ViewUtil;
|
|
|
-import com.sheep.jiuyan.samllsheep.BuildConfig;
|
|
|
import com.sheep.jiuyan.samllsheep.Config;
|
|
|
-import com.sheep.jiuyan.samllsheep.R;
|
|
|
-import com.sheep.jiuyan.samllsheep.SheepApp;
|
|
|
-import com.sheep.jiuyan.samllsheep.utils.G;
|
|
|
-import com.sheep.jiuyan.samllsheep.utils.SpUtils;
|
|
|
-
|
|
|
-import org.afinal.simplecache.ApiKey;
|
|
|
-
|
|
|
-import java.util.List;
|
|
|
-import java.util.Locale;
|
|
|
-
|
|
|
-import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
|
-import io.reactivex.schedulers.Schedulers;
|
|
|
|
|
|
/**
|
|
|
* Created by realicing on 2018/10/18.
|
|
|
@@ -42,9 +16,6 @@ import io.reactivex.schedulers.Schedulers;
|
|
|
*/
|
|
|
public class ActPay extends BaseActivity {
|
|
|
|
|
|
- public final static int ACTION_FOR_H5_PAY = 1003;
|
|
|
- public final static int ACTION_FOR_RECHARGE = 1004;
|
|
|
-
|
|
|
@Override
|
|
|
protected boolean needButterKnife() {
|
|
|
return false;
|
|
|
@@ -52,275 +23,49 @@ public class ActPay extends BaseActivity {
|
|
|
|
|
|
@Override
|
|
|
protected int getLayoutId() {
|
|
|
- return R.layout.act_pay;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
- private TextView pay_commit;
|
|
|
- private TextView pay_msg_tv;
|
|
|
- private TextView pay_info;
|
|
|
- private TextView pay_amount;
|
|
|
- private TextView pay_amount2;
|
|
|
- private View directionalPayBtn;
|
|
|
- private View rechargeLayout;
|
|
|
-
|
|
|
- private View pay_amount_layout;
|
|
|
- private TextView sheep_coin_amount;
|
|
|
- private TextView game_golden_amount;
|
|
|
- private TextView order_amount;
|
|
|
- private TextView golden_sub_amount;
|
|
|
- private TextView yiyouhui_amount;
|
|
|
-
|
|
|
- private List<View> payOrderViewList = ListUtil.emptyList();
|
|
|
- private List<View> successViewList = ListUtil.emptyList();
|
|
|
- private List<View> failedViewList = ListUtil.emptyList();
|
|
|
-
|
|
|
- private boolean orderOk = false;
|
|
|
- private boolean assetsOk = false;
|
|
|
- private UserAssets assets;
|
|
|
- private PayOrder payOrder;
|
|
|
private String token;
|
|
|
+ private String order_no;
|
|
|
|
|
|
@Override
|
|
|
public void initView() {
|
|
|
- ImageView title_img_back = findViewById(R.id.title_img_back);
|
|
|
- pay_amount_layout = findViewById(R.id.pay_amount_layout);
|
|
|
- sheep_coin_amount = findViewById(R.id.sheep_coin_amount);
|
|
|
- game_golden_amount = findViewById(R.id.game_golden_amount);
|
|
|
- order_amount = findViewById(R.id.order_amount);
|
|
|
- golden_sub_amount = findViewById(R.id.golden_sub_amount);
|
|
|
- yiyouhui_amount = findViewById(R.id.yiyouhui_amount);
|
|
|
-
|
|
|
- rechargeLayout = findViewById(R.id.recharge_layout);
|
|
|
- directionalPayBtn = findViewById(R.id.directional_pay_btn);
|
|
|
- pay_commit = findViewById(R.id.pay_commit);
|
|
|
- TextView title_cancel = findViewById(R.id.title_cancel);
|
|
|
- pay_msg_tv = findViewById(R.id.pay_msg_tv);
|
|
|
- View pay_line = findViewById(R.id.pay_line);
|
|
|
- ImageView pay_sheep_iv = findViewById(R.id.pay_sheep_iv);
|
|
|
- pay_info = findViewById(R.id.pay_info);
|
|
|
- pay_amount = findViewById(R.id.pay_amount);
|
|
|
- pay_amount2 = findViewById(R.id.pay_amount2);
|
|
|
- TextView pay_success = findViewById(R.id.pay_success);
|
|
|
- TextView pay_failed = findViewById(R.id.pay_failed);
|
|
|
- TextView pay_failed_reason = findViewById(R.id.pay_failed_reason);
|
|
|
- payOrderViewList.add(title_img_back);
|
|
|
- payOrderViewList.add(title_cancel);
|
|
|
- payOrderViewList.add(pay_msg_tv);
|
|
|
- payOrderViewList.add(pay_amount_layout);
|
|
|
- payOrderViewList.add(rechargeLayout);
|
|
|
- payOrderViewList.add(pay_line);
|
|
|
-
|
|
|
- successViewList.add(pay_sheep_iv);
|
|
|
- successViewList.add(pay_info);
|
|
|
- successViewList.add(pay_amount2);
|
|
|
- successViewList.add(pay_success);
|
|
|
-
|
|
|
- failedViewList.add(pay_sheep_iv);
|
|
|
- failedViewList.add(pay_info);
|
|
|
- failedViewList.add(pay_amount2);
|
|
|
- failedViewList.add(pay_failed);
|
|
|
- failedViewList.add(pay_failed_reason);
|
|
|
- setViewListVisible(successViewList, View.INVISIBLE);
|
|
|
- setViewListVisible(failedViewList, View.INVISIBLE);
|
|
|
- resetView();
|
|
|
- }
|
|
|
-
|
|
|
- //设置viewList中的view是否可见
|
|
|
- private void setViewListVisible(List<View> viewList, int visible) {
|
|
|
- for (View view : viewList) {
|
|
|
- view.setVisibility(visible);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void resetView() {
|
|
|
- ViewUtil.setDefaultText(pay_msg_tv);
|
|
|
- ViewUtil.setDefaultText(pay_amount);
|
|
|
- }
|
|
|
|
|
|
- @Override
|
|
|
- public void initListener() {
|
|
|
- pay_commit.setEnabled(false);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void initData() {
|
|
|
Intent intent = getIntent();
|
|
|
Bundle bundle = intent.getExtras();
|
|
|
- String order_no = null;
|
|
|
if (bundle != null) {
|
|
|
order_no = bundle.getString("order_no");
|
|
|
token = bundle.getString("token");
|
|
|
- }
|
|
|
- if (TextUtils.isEmpty(order_no)) {//传过来的数据有问题
|
|
|
- status = STATUS_INIT_ERROR_ORDER_NO;
|
|
|
- G.showToast(R.string.coming_soon);
|
|
|
- return;
|
|
|
- }
|
|
|
- if (TextUtils.isEmpty(order_no)) {//传过来的数据有问题
|
|
|
- status = STATUS_INIT_ERROR_TOKEN;
|
|
|
- G.showToast(R.string.coming_soon);
|
|
|
- return;
|
|
|
- }
|
|
|
- if (BuildConfig.DEBUG)
|
|
|
- G.showToast(String.format(Locale.CHINA, "%s\t%s", order_no, token));
|
|
|
- //初始化PayOrder
|
|
|
- SheepApp.getInstance().getNetComponent().getApiService().sdkFindOrder(token, order_no)
|
|
|
- .subscribeOn(Schedulers.io())
|
|
|
- .observeOn(AndroidSchedulers.mainThread())
|
|
|
- .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
|
|
|
- @Override
|
|
|
- public void onNext(BaseMessage baseMessage) {
|
|
|
- payOrder = baseMessage.getData(PayOrder.class);
|
|
|
- if (payOrder != null) {
|
|
|
- status = STATUS_GET_ORDER_SUCCESS;
|
|
|
- pay_commit.setEnabled(true);
|
|
|
- orderOk = true;
|
|
|
- loadAssets();
|
|
|
- } else {
|
|
|
- status = STATUS_GET_ORDER_SUCCESS_ERROR;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onError(BaseMessage baseMessage) {
|
|
|
- status = STATUS_GET_ORDER_ERROR;
|
|
|
- G.showToast(baseMessage);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- //加载PayOrder
|
|
|
- private synchronized void loadPayOrder() {
|
|
|
- if (orderOk && assetsOk) {
|
|
|
- String amountText = getString(R.string.x_yuan, NumberFormatUtils.retainMost2(payOrder.getPayMoney()));
|
|
|
- if (payOrder.getMerchantId() == 1001) {
|
|
|
- directionalPayBtn.setVisibility(View.VISIBLE);
|
|
|
- sheep_coin_amount.setText("拥有绵羊币: " + assets.getSheep_bi_total());
|
|
|
- game_golden_amount.setText("拥有金丹: " + assets.getGame_golden_dan());
|
|
|
- order_amount.setText(payOrder.getPayMoney() + "");
|
|
|
- float subAmount = payOrder.getPayMoney() < assets.getGame_golden_dan() ? payOrder.getPayMoney() : assets.getGame_golden_dan();
|
|
|
- golden_sub_amount.setText("-" + subAmount);
|
|
|
- yiyouhui_amount.setText("已优惠: " + subAmount);
|
|
|
- float mustPay = payOrder.getPayMoney() < assets.getGame_golden_dan() ? 0 : (payOrder.getPayMoney() - assets.getGame_golden_dan());
|
|
|
- pay_amount.setText("应付金额: " + mustPay + "元");
|
|
|
- } else {
|
|
|
- game_golden_amount.setVisibility(View.GONE);
|
|
|
- yiyouhui_amount.setVisibility(View.GONE);
|
|
|
- ((View) golden_sub_amount.getParent()).setVisibility(View.GONE);
|
|
|
- directionalPayBtn.setVisibility(View.GONE);
|
|
|
- pay_amount.setText("应付金额: " + payOrder.getPayMoney() + "元");
|
|
|
- }
|
|
|
-
|
|
|
- ViewUtil.setText(pay_msg_tv, payOrder.getName());
|
|
|
- ViewUtil.setColorMapText(pay_amount2, amountText, "元", "#FFFFFF");
|
|
|
- ViewUtil.setText(pay_info, getString(R.string.sheep_order_no, payOrder.getName(), payOrder.getOrderNo()));
|
|
|
+ CommonUtil.getInstance().initUrlConfigByNet(Config.KEY_DIRECTIONAL_PAY_URL, url -> {
|
|
|
+ url = url + "?authorization=" + token + "&order=" + order_no + "&ssnocache=1";
|
|
|
+ WebParams webParams = new WebParams(url, "支付").setShowTitle(false).setForResult(true).setAction(Constant.INTENT_PAY);
|
|
|
+ Jump2View.getInstance().goWeb(this, webParams);
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void loadAssets() {
|
|
|
- SheepApp.getInstance().getNetComponent().getApiService().getMyAssets()
|
|
|
- .subscribeOn(Schedulers.io())
|
|
|
- .observeOn(AndroidSchedulers.mainThread())
|
|
|
- .subscribe(new SheepSubscriber<BaseMessage>(this) {
|
|
|
- @Override
|
|
|
- public void onNext(BaseMessage baseMessage) {
|
|
|
- assets = baseMessage.getData(UserAssets.class);
|
|
|
- assetsOk = true;
|
|
|
- loadPayOrder();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onError(BaseMessage baseMessage) {
|
|
|
- G.showToast(baseMessage);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- public void onRechargeBtnClick(View v) {
|
|
|
- Intent intent = new Intent(this, RechargeAct.class);
|
|
|
- intent.putExtra("forResult", true);
|
|
|
- startActivityForResult(intent, ACTION_FOR_RECHARGE);
|
|
|
- rechargeLayout.setVisibility(View.GONE);
|
|
|
- }
|
|
|
-
|
|
|
- //点击底部按钮
|
|
|
- public void onClickBottomBtn(View view) {
|
|
|
- switch (status) {
|
|
|
- case STATUS_GET_ORDER_SUCCESS://立即支付
|
|
|
- float mustPay = payOrder.getPayMoney() < assets.getGame_golden_dan() ? 0 : (payOrder.getPayMoney() - assets.getGame_golden_dan());
|
|
|
- if (Float.parseFloat(assets.getSheep_bi_total()) < mustPay) {
|
|
|
- rechargeLayout.setVisibility(View.VISIBLE);
|
|
|
- return;
|
|
|
- }
|
|
|
- SheepApp.getInstance().getNetComponent().getApiService().sdkPayOrder(token, payOrder.getOrderNo())
|
|
|
- .subscribeOn(Schedulers.io())
|
|
|
- .observeOn(AndroidSchedulers.mainThread())
|
|
|
- .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
|
|
|
- @Override
|
|
|
- public void onNext(BaseMessage baseMessage) {
|
|
|
- status = STATUS_PAY_ORDER_SUCCESS;
|
|
|
- G.showToast(baseMessage);
|
|
|
- showPaySuccess();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onError(BaseMessage baseMessage) {
|
|
|
- status = STATUS_PAY_ORDER_ERROR;
|
|
|
- G.showToast(baseMessage);
|
|
|
- showPayFailed();
|
|
|
- failedReason = baseMessage.getMsg();
|
|
|
- }
|
|
|
- });
|
|
|
- break;
|
|
|
- case STATUS_PAY_ORDER_SUCCESS:
|
|
|
- case STATUS_PAY_ORDER_ERROR://返回商家
|
|
|
- setStatusResult();
|
|
|
- finish();
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public void onDirectionalPayClicked(View v) {
|
|
|
- CommonUtil.getInstance().initUrlConfigByNet(Config.KEY_DIRECTIONAL_PAY_URL, url -> {
|
|
|
- url = url + "?authorization=" + token + "&order=" + payOrder.getOrderNo() + "&ssnocache=1";
|
|
|
- WebParams webParams = new WebParams(url, "定向优惠").setShowTitle(false).setForResult(true).setAction(ACTION_FOR_H5_PAY);
|
|
|
- Jump2View.getInstance().goWeb(this, webParams);
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
public void onActivityResult(int requestCode, int resultCode, Intent in) {
|
|
|
if (resultCode == RESULT_OK) {
|
|
|
- if (requestCode == ACTION_FOR_H5_PAY) {
|
|
|
+ if (requestCode == Constant.INTENT_PAY) {
|
|
|
if (in.getBooleanExtra("ret", false)) {
|
|
|
status = STATUS_PAY_ORDER_SUCCESS;
|
|
|
- showPaySuccess();
|
|
|
} else {
|
|
|
status = STATUS_PAY_ORDER_ERROR;
|
|
|
- showPayFailed();
|
|
|
}
|
|
|
- G.showToast(in.getStringExtra("msg"));
|
|
|
Intent intent = new Intent();
|
|
|
intent.putExtra(EXTRA_NAME_ORDERNO, in.getStringExtra("order_no"));
|
|
|
intent.putExtra(EXTRA_NAME_STATUS, status);
|
|
|
setResult(RESULT_CODE, intent);
|
|
|
+ finish();
|
|
|
}
|
|
|
- } else if (resultCode == 777 && requestCode == ACTION_FOR_RECHARGE) {
|
|
|
- loadAssets();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private String failedReason;
|
|
|
-
|
|
|
- //点击查看失败原因
|
|
|
- public void onClickFailedReason(View view) {
|
|
|
- G.showToast(failedReason);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onBackPressed() {
|
|
|
- onClickCancel(null);
|
|
|
- }
|
|
|
-
|
|
|
private int status = STATUS_INIT;//状态 正常状态大于0 错误状态小于0
|
|
|
public static final int STATUS_INIT = 0;//初始状态
|
|
|
public static final int STATUS_GET_ORDER_SUCCESS = 1;//获取order成功
|
|
|
@@ -331,51 +76,9 @@ public class ActPay extends BaseActivity {
|
|
|
public static final int STATUS_INIT_ERROR_TOKEN = -4;//初始化时获取到的token为空
|
|
|
public static final int STATUS_GET_ORDER_SUCCESS_ERROR = -5;//获取order接口成功,但是无数据
|
|
|
|
|
|
- //点击返回
|
|
|
- public void onClickBackImg(View view) {
|
|
|
- onClickCancel(null);
|
|
|
- }
|
|
|
-
|
|
|
- //取消订单
|
|
|
- public void onClickCancel(View view) {
|
|
|
- if (status == STATUS_PAY_ORDER_SUCCESS || status < STATUS_INIT) {//支付成功或者各种失败的情况下直接退出界面
|
|
|
- setStatusResult();
|
|
|
- finish();
|
|
|
- return;
|
|
|
- }
|
|
|
- ViewUtil.showMsgDialog(this, new DialogConfig().setTitle("提示").setMsg("您要取消订单吗?")
|
|
|
- .setBtnRightText("取消").setBtnLeftText("确认").setBtnLeftOnClickListener(new View.OnClickListener() {
|
|
|
- @Override
|
|
|
- public void onClick(View view) {
|
|
|
- setStatusResult();
|
|
|
- finish();
|
|
|
- }
|
|
|
- }));
|
|
|
- }
|
|
|
|
|
|
public static final int RESULT_CODE = 666;
|
|
|
public static final String EXTRA_NAME_STATUS = "status";
|
|
|
public static final String EXTRA_NAME_ORDERNO = "orderno";
|
|
|
|
|
|
- //返回结果给sdk
|
|
|
- private void setStatusResult() {
|
|
|
- Intent intent = new Intent();
|
|
|
- intent.putExtra(EXTRA_NAME_ORDERNO, payOrder.getOrderNo());
|
|
|
- intent.putExtra(EXTRA_NAME_STATUS, status);
|
|
|
- setResult(RESULT_CODE, intent);
|
|
|
- }
|
|
|
-
|
|
|
- //展示支付失败界面
|
|
|
- private void showPayFailed() {
|
|
|
- setViewListVisible(payOrderViewList, View.INVISIBLE);
|
|
|
- setViewListVisible(failedViewList, View.VISIBLE);
|
|
|
- pay_commit.setText("返回商家");
|
|
|
- }
|
|
|
-
|
|
|
- //展示支付成功界面
|
|
|
- private void showPaySuccess() {
|
|
|
- setViewListVisible(payOrderViewList, View.INVISIBLE);
|
|
|
- setViewListVisible(successViewList, View.VISIBLE);
|
|
|
- pay_commit.setText("返回商家");
|
|
|
- }
|
|
|
}
|