version:4.4
fix: update:增加下单,微信支付,优化资讯分类
This commit is contained in:
185
app/src/main/java/com/uiuios/aios/activity/PayActivity.java
Normal file
185
app/src/main/java/com/uiuios/aios/activity/PayActivity.java
Normal file
@@ -0,0 +1,185 @@
|
||||
package com.uiuios.aios.activity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import com.trello.rxlifecycle4.RxLifecycle;
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.uiuios.aios.R;
|
||||
import com.uiuios.aios.base.BaseDataBindingActivity;
|
||||
import com.uiuios.aios.bean.BaseResponse;
|
||||
import com.uiuios.aios.bean.OrderBean;
|
||||
import com.uiuios.aios.bean.WxpayBean;
|
||||
import com.uiuios.aios.databinding.ActivityPayBinding;
|
||||
import com.uiuios.aios.network.NetInterfaceManager;
|
||||
import com.uiuios.aios.utils.BitmapUtils;
|
||||
import com.uiuios.aios.utils.ToastUtil;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.rxjava3.annotations.NonNull;
|
||||
import io.reactivex.rxjava3.core.Observable;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
import io.reactivex.rxjava3.functions.Consumer;
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
|
||||
public class PayActivity extends BaseDataBindingActivity {
|
||||
private static final String TAG = PayActivity.class.getSimpleName();
|
||||
|
||||
private ActivityPayBinding mBinding;
|
||||
|
||||
private OrderBean mOrderBean;
|
||||
|
||||
/**
|
||||
* 初始化视图
|
||||
*/
|
||||
@Override
|
||||
public void initView() {
|
||||
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_pay);
|
||||
mBinding.tvRefresh.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
getWechatPayQrcode(mOrderBean);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化数据
|
||||
*/
|
||||
@Override
|
||||
public void initData() {
|
||||
Intent intent = getIntent();
|
||||
if (intent == null) return;
|
||||
OrderBean orderBean = (OrderBean) intent.getSerializableExtra("OrderBean");
|
||||
if (orderBean == null) return;
|
||||
mOrderBean = orderBean;
|
||||
getWechatPayQrcode(mOrderBean);
|
||||
}
|
||||
|
||||
private Disposable mCountdownSubscribe;
|
||||
|
||||
private void getWechatPayQrcode(OrderBean orderBean) {
|
||||
if (orderBean == null) return;
|
||||
NetInterfaceManager.getInstance()
|
||||
.getOrderPayObservable(orderBean.getOrder_sn(), orderBean.getOrder_id())
|
||||
.compose(RxLifecycle.bindUntilEvent(lifecycleSubject, ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<WxpayBean>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getOrderPayObservable", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<WxpayBean> wxpayBeanBaseResponse) {
|
||||
Log.e("getOrderPayObservable", "onNext: " + wxpayBeanBaseResponse);
|
||||
if (wxpayBeanBaseResponse.code == 200) {
|
||||
WxpayBean wxpayBean = wxpayBeanBaseResponse.data;
|
||||
mBinding.setWxpayBean(wxpayBean);
|
||||
mBinding.tvOrderId.setText("订单编号:" + wxpayBean.getOrder_sn());
|
||||
long expireTime = wxpayBean.getTime_expire();
|
||||
mBinding.ivWxQrcode.setImageBitmap(BitmapUtils.createQRImage(wxpayBean.getCode_url(), 400, 400));
|
||||
initCountdown(expireTime);
|
||||
checkOrder(wxpayBean);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getOrderPayObservable", "onError: " + e.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getOrderPayObservable", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void initCountdown(long second) {
|
||||
if (mCountdownSubscribe != null && !mCountdownSubscribe.isDisposed()) {
|
||||
mCountdownSubscribe.dispose();
|
||||
}
|
||||
mCountdownSubscribe = Observable.interval(1, TimeUnit.SECONDS)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Consumer<Long>() {
|
||||
|
||||
@Override
|
||||
public void accept(Long aLong) throws Exception {
|
||||
long timestamp = System.currentTimeMillis() / 1000;
|
||||
Log.e("initCountdown", "accept: time_expire = " + second);
|
||||
Log.e("initCountdown", "accept: aLong = " + aLong);
|
||||
Log.e("initCountdown", "accept: timestamp = " + timestamp);
|
||||
if (timestamp >= second) {
|
||||
mBinding.ivWxQrcode.setImageDrawable(getDrawable(R.drawable.qrcode_expired));
|
||||
if (mCountdownSubscribe != null && !mCountdownSubscribe.isDisposed()) {
|
||||
mCountdownSubscribe.dispose();
|
||||
}
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private Disposable mCheckOrderSubscribe;
|
||||
|
||||
private void checkOrder(WxpayBean wxpayBean) {
|
||||
if (mCheckOrderSubscribe != null && !mCheckOrderSubscribe.isDisposed()) {
|
||||
mCheckOrderSubscribe.dispose();
|
||||
}
|
||||
mCheckOrderSubscribe = Observable.interval(5, TimeUnit.SECONDS)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new Consumer<Long>() {
|
||||
|
||||
@Override
|
||||
public void accept(Long aLong) throws Exception {
|
||||
NetInterfaceManager.getInstance()
|
||||
.getOrderPayCheckObservable(wxpayBean.getOrder_sn(), wxpayBean.getOrder_id())
|
||||
.compose(RxLifecycle.bindUntilEvent(lifecycleSubject, ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("checkOrder", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse baseResponse) {
|
||||
Log.e("checkOrder", "onNext: " + baseResponse);
|
||||
if (baseResponse.code == 200) {
|
||||
if (mCountdownSubscribe != null && !mCountdownSubscribe.isDisposed()) {
|
||||
mCountdownSubscribe.dispose();
|
||||
}
|
||||
if (mCheckOrderSubscribe != null && !mCheckOrderSubscribe.isDisposed()) {
|
||||
mCheckOrderSubscribe.dispose();
|
||||
}
|
||||
ToastUtil.show("支付成功");
|
||||
finish();
|
||||
} else {
|
||||
Log.e("checkOrder", "onNext: " + "支付失败");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("checkOrder", "onError: " + e.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("checkOrder", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user