Commit eafa1f54 authored by zhang_z's avatar zhang_z

添加微信支付;

parent 63cad057
...@@ -16,8 +16,8 @@ class ErrorFilter<T> implements Function<Throwable, HttpMessage<T>> { ...@@ -16,8 +16,8 @@ class ErrorFilter<T> implements Function<Throwable, HttpMessage<T>> {
@Override @Override
public HttpMessage<T> apply(@NonNull Throwable throwable) throws Exception { public HttpMessage<T> apply(@NonNull Throwable throwable) throws Exception {
LogUtils.e(throwable.getMessage()); if (throwable != null) LogUtils.e(throwable.getMessage());
//可根据Throwable具体区分,现在先统一变成服务器异常 //可根据Throwable具体区分,现在先统一变成服务器异常
return new HttpMessage<>(C.RETURN_CODE.SERVER_ERR,C.RETURN_INFO.SERVER_ERR_INFO); return new HttpMessage<>(C.RETURN_CODE.SERVER_ERR, C.RETURN_INFO.SERVER_ERR_INFO);
} }
} }
\ No newline at end of file
...@@ -63,8 +63,8 @@ public class Jni { ...@@ -63,8 +63,8 @@ public class Jni {
//Client //Client
OkHttpClient okHttpClient = new OkHttpClient.Builder() OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(C.API_BUILDER.READ_TIMEOUT, TimeUnit.MILLISECONDS) .readTimeout(C.API_BUILDER.READ_TIMEOUT * 20, TimeUnit.MILLISECONDS)
.connectTimeout(C.API_BUILDER.CONNECT_TIMEOUT, TimeUnit.MILLISECONDS) .connectTimeout(C.API_BUILDER.CONNECT_TIMEOUT * 20, TimeUnit.MILLISECONDS)
.addInterceptor(headInterceptor) .addInterceptor(headInterceptor)
.addInterceptor(logInterceptor) .addInterceptor(logInterceptor)
.cookieJar(cookieJar) .cookieJar(cookieJar)
......
package com.xingdata.zzdpos.api; package com.xingdata.zzdpos.api;
import com.alibaba.fastjson.JSON;
import com.xingdata.zzdpos.util.ConvertUtil;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
public class JniFactory { public class JniFactory {
public static class Settle { public static class Settle {
public static Observable<Pay.Response> pay(String str) { private static Pay.Request q;
return Jni.getInstance().service.pay(str)
public static Observable<String> pay(int payChannel, String payCode, Long orderAmt, String orderNo) {
q = new Pay.Request();
q.setPayChannelType(payChannel + "");
q.setOrderType("01");
q.setOrderAmt(ConvertUtil.longToString(orderAmt));
q.setChannelAuthCode(payCode);
q.setOrderNo(orderNo);
q.setOldOrderNo(orderNo);
return Jni.getInstance().service.pay(JSON.toJSONString(q))
.onErrorReturn(new ErrorFilter<>())
.map(new ResultFilter<>())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public static Observable<String> query() {
q.setOrderType("02");
return Jni.getInstance().service.pay(JSON.toJSONString(q))
.onErrorReturn(new ErrorFilter<>()) .onErrorReturn(new ErrorFilter<>())
.map(new ResultFilter<>()) .map(new ResultFilter<>())
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()); .observeOn(AndroidSchedulers.mainThread());
} }
} }
} }
...@@ -8,5 +8,5 @@ import retrofit2.http.Query; ...@@ -8,5 +8,5 @@ import retrofit2.http.Query;
interface JniService { interface JniService {
@GET(C.URL.TEMP_PAY.pay) @GET(C.URL.TEMP_PAY.pay)
Observable<HttpMessage<Pay.Response>> pay(@Query("para") String str); Observable<HttpMessage<String>> pay(@Query("para") String str);
} }
...@@ -10,13 +10,11 @@ import java.util.Locale; ...@@ -10,13 +10,11 @@ import java.util.Locale;
public class Pay { public class Pay {
public static class Request { public static class Request {
public Request(int payChannelType) { public Request() {
setOrderType("01"); setDeviceType("01");
setPayChannelType(payChannelType + "");
setDeviceType("02");
setMch_id("11"); setMch_id("11");
setTer_id("00000011"); setTer_id("00000011");
setOrderDateTime(TimeUtils.getNowString(new SimpleDateFormat("yyyymmddHHMMSS", Locale.getDefault()))); setOrderDateTime(TimeUtils.getNowString(new SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault())));
setCurrencyType("156"); setCurrencyType("156");
setOrderName("测试"); setOrderName("测试");
setKey("Key"); setKey("Key");
...@@ -201,7 +199,7 @@ public class Pay { ...@@ -201,7 +199,7 @@ public class Pay {
} }
} }
public class Response { public static class Response {
private int OrderType; private int OrderType;
private String ResponseCode; private String ResponseCode;
private String ResponseMsg; private String ResponseMsg;
......
...@@ -80,7 +80,9 @@ public class GroupCateView extends BaseGroupView<ViewGroupCateBinding> { ...@@ -80,7 +80,9 @@ public class GroupCateView extends BaseGroupView<ViewGroupCateBinding> {
@Override @Override
public void initView() { public void initView() {
super.initView(); super.initView();
if (mMs != null) cateId = mMs.getSpuCateId(); if (mMs != null && mMs.getSpuCateId() != null) {
cateId = mMs.getSpuCateId();
}
loadCla(); loadCla();
mViewBinding.nsType1.setOnItemSelectedListener(mOnItemSelectedListener); mViewBinding.nsType1.setOnItemSelectedListener(mOnItemSelectedListener);
......
...@@ -17,8 +17,9 @@ import com.xingdata.zzdpos.model.Vip; ...@@ -17,8 +17,9 @@ import com.xingdata.zzdpos.model.Vip;
import com.xingdata.zzdpos.ui.dialog.LoadingDialog; import com.xingdata.zzdpos.ui.dialog.LoadingDialog;
import com.xingdata.zzdpos.ui.main.MainActivity; import com.xingdata.zzdpos.ui.main.MainActivity;
import com.xingdata.zzdpos.ui.scan.ScanFragment; import com.xingdata.zzdpos.ui.scan.ScanFragment;
import com.xingdata.zzdpos.ui.settle.fragment.CashPayFragment;
import com.xingdata.zzdpos.ui.settle.dialog.PasswordDialog; import com.xingdata.zzdpos.ui.settle.dialog.PasswordDialog;
import com.xingdata.zzdpos.ui.settle.dialog.PayingDialog;
import com.xingdata.zzdpos.ui.settle.fragment.CashPayFragment;
import com.xingdata.zzdpos.ui.settle.fragment.PayResultFragment; import com.xingdata.zzdpos.ui.settle.fragment.PayResultFragment;
import com.xingdata.zzdpos.ui.settle.fragment.SettleFragment; import com.xingdata.zzdpos.ui.settle.fragment.SettleFragment;
import com.xingdata.zzdpos.ui.settle.fragment.TicketFragment; import com.xingdata.zzdpos.ui.settle.fragment.TicketFragment;
...@@ -39,6 +40,9 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -39,6 +40,9 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
private PayResultFragment mPayResultFragment = new PayResultFragment(); private PayResultFragment mPayResultFragment = new PayResultFragment();
private LoadingDialog mLoadingDialog = new LoadingDialog(); private LoadingDialog mLoadingDialog = new LoadingDialog();
private PayingDialog mPayingDialog = new PayingDialog();
private ScanFragment mScanFragment = new ScanFragment();
@Override @Override
public int getLayoutId() { public int getLayoutId() {
...@@ -132,10 +136,15 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -132,10 +136,15 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
case C.PAY_CHANNEL.CARD: case C.PAY_CHANNEL.CARD:
mPasswordDialog.setSaleorder(saleorder).show(this); mPasswordDialog.setSaleorder(saleorder).show(this);
break; break;
case C.PAY_CHANNEL.BANK:
case C.PAY_CHANNEL.ALI: case C.PAY_CHANNEL.ALI:
showMsg("暂时无法使用");
break;
case C.PAY_CHANNEL.WECHAT: case C.PAY_CHANNEL.WECHAT:
ScanFragment mScanFragment = new ScanFragment(); mScanFragment.setOnScanCompletedListener(barcode -> {
mScanFragment.setOnScanCompletedListener(barcode -> mPresenter.payInAli(barcode)); this.pop();
mPresenter.payInWechat(barcode);
});
this.start(mScanFragment); this.start(mScanFragment);
break; break;
} }
...@@ -143,7 +152,6 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -143,7 +152,6 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
@Override @Override
public void changeLockState(boolean isLock) { public void changeLockState(boolean isLock) {
} }
@Override @Override
...@@ -161,6 +169,7 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -161,6 +169,7 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
this.start(mPayResultFragment.setResult(true).setSaleorder(saleorder)); this.start(mPayResultFragment.setResult(true).setSaleorder(saleorder));
this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT); this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT);
mViewBinding.tvTitle.setText(R.string.settle_pay_result_title); mViewBinding.tvTitle.setText(R.string.settle_pay_result_title);
mPayingDialog.dismiss();
} }
@Override @Override
...@@ -168,8 +177,15 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -168,8 +177,15 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
this.start(mPayResultFragment.setResult(false).setSaleorder(saleorder)); this.start(mPayResultFragment.setResult(false).setSaleorder(saleorder));
this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT); this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT);
mViewBinding.tvTitle.setText(R.string.settle_pay_result_title); mViewBinding.tvTitle.setText(R.string.settle_pay_result_title);
mPayingDialog.dismiss();
} }
@Override
public void showPayingDialog(int payType, com.xingdata.zzdpos.api.Pay.Response response) {
mPayingDialog.setType(payType).setResponse(response).show(this);
}
@Override @Override
public void backToSettleFragment() { public void backToSettleFragment() {
this.popTo(mSettleFragment.getClass(), false); this.popTo(mSettleFragment.getClass(), false);
......
...@@ -126,6 +126,11 @@ interface SettleContract { ...@@ -126,6 +126,11 @@ interface SettleContract {
*/ */
void showPayFailFragment(Throwable throwable, Saleorder saleorder); void showPayFailFragment(Throwable throwable, Saleorder saleorder);
/**
* 显示支付中页面
*/
void showPayingDialog(int payType, com.xingdata.zzdpos.api.Pay.Response response);
/** /**
* 返回结算主页面 * 返回结算主页面
*/ */
...@@ -248,7 +253,12 @@ interface SettleContract { ...@@ -248,7 +253,12 @@ interface SettleContract {
/** /**
* 赊账结算页面 - 赊账 * 赊账结算页面 - 赊账
*/ */
public abstract void payInTally(); public abstract void payInTally(String password);
/**
* 支付中页面 - 查看支付状态
*/
public abstract void checkPayState();
/** /**
* 支付结果页面 - 完成订单 * 支付结果页面 - 完成订单
...@@ -260,7 +270,6 @@ interface SettleContract { ...@@ -260,7 +270,6 @@ interface SettleContract {
*/ */
public abstract void clickRetry(); public abstract void clickRetry();
/** /**
* 退出会员查询页面 * 退出会员查询页面
*/ */
......
...@@ -7,7 +7,6 @@ import com.xingdata.api.print.ZX_PrintPOS; ...@@ -7,7 +7,6 @@ import com.xingdata.api.print.ZX_PrintPOS;
import com.xingdata.zzdpos.C; import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.api.ApiFactory; import com.xingdata.zzdpos.api.ApiFactory;
import com.xingdata.zzdpos.api.JniFactory; import com.xingdata.zzdpos.api.JniFactory;
import com.xingdata.zzdpos.api.Pay;
import com.xingdata.zzdpos.db.DBFactory; import com.xingdata.zzdpos.db.DBFactory;
import com.xingdata.zzdpos.model.HandoverInfo; import com.xingdata.zzdpos.model.HandoverInfo;
import com.xingdata.zzdpos.model.Ms; import com.xingdata.zzdpos.model.Ms;
...@@ -17,7 +16,6 @@ import com.xingdata.zzdpos.model.Ticket; ...@@ -17,7 +16,6 @@ import com.xingdata.zzdpos.model.Ticket;
import com.xingdata.zzdpos.model.Vip; import com.xingdata.zzdpos.model.Vip;
import com.xingdata.zzdpos.ui.main.MainActivity; import com.xingdata.zzdpos.ui.main.MainActivity;
import com.xingdata.zzdpos.ui.main.MainPresenter; import com.xingdata.zzdpos.ui.main.MainPresenter;
import com.xingdata.zzdpos.util.ConvertUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -221,35 +219,63 @@ public class SettlePresenter extends SettleContract.Presenter { ...@@ -221,35 +219,63 @@ public class SettlePresenter extends SettleContract.Presenter {
@Override @Override
public void payInCash(Long inputAmt, Long changeAmt) { public void payInCash(Long inputAmt, Long changeAmt) {
subscribePay(commitOrder().flatMap(orderNo -> ApiFactory.Saleorder.addOrderPayMis(mSaleorder.pay(orderNo, C.PAY_CHANNEL.CASH)))); mView.showLoadingDialog();
subscribePay(commitOrder().flatMap(orderNo -> ApiFactory.Saleorder.addOrderPayMis(mSaleorder.pay(orderNo, C.PAY_CHANNEL.CASH)).doFinally(() -> mView.dismissLoadingDialog())));
} }
@Override @Override
public void payInAli(String payCode) { public void payInAli(String payCode) {
Pay.Request q = new Pay.Request(C.PAY_CHANNEL.ALI); mView.showLoadingDialog();
q.setOrderAmt(ConvertUtil.longToString(mSaleorder.getOrderPayAmt())); commitOrder()
q.setChannelAuthCode(payCode); .flatMap(orderNo -> {
subscribePay(commitOrder() return JniFactory.Settle.pay(C.PAY_CHANNEL.ALI, payCode, mSaleorder.getOrderPayAmt(), orderNo);
.flatMap(s -> { })
q.setOrderNo(s); .doFinally(() -> mView.dismissLoadingDialog())
q.setOldOrderNo(s); .subscribe(response -> {
return JniFactory.Settle.pay(JSON.toJSONString(q)); com.xingdata.zzdpos.api.Pay.Response r1 = JSON.parseObject(response.replace("\\", ""), com.xingdata.zzdpos.api.Pay.Response.class);
}).flatMap(response -> ApiFactory.Saleorder.addOrderPayMis(mSaleorder.pay(q.getOrderNo(), C.PAY_CHANNEL.ALI)))); switch (r1.getResponseCode()) {
case "0000":
subscribePay(commitOrder().flatMap(orderNo -> ApiFactory.Saleorder.addOrderPayMis(mSaleorder.pay(orderNo, C.PAY_CHANNEL.ALI)).doFinally(() -> mView.dismissLoadingDialog())));
break;
case "0098":
mView.showPayingDialog(C.PAY_CHANNEL.ALI, r1);
break;
default:
mView.showPayFailFragment(null, mSaleorder);
break;
}
}, throwable -> {
mView.showPayFailFragment(throwable, mSaleorder);
});
// .flatMap(response -> {
// return ApiFactory.Saleorder.addOrderPayMis(mSaleorder.pay(response.getOrderNo(), C.PAY_CHANNEL.ALI));
// });
} }
@Override @Override
public void payInWechat(String payCode) { public void payInWechat(String payCode) {
Pay.Request q = new Pay.Request(C.PAY_CHANNEL.WECHAT); mView.showLoadingDialog();
q.setOrderAmt(ConvertUtil.longToString(mSaleorder.getOrderPayAmt())); commitOrder()
q.setChannelAuthCode(payCode); .flatMap(orderNo -> {
subscribePay(commitOrder() return JniFactory.Settle.pay(C.PAY_CHANNEL.WECHAT, payCode, mSaleorder.getOrderPayAmt(), orderNo);
.flatMap(s -> {
q.setOrderNo(s);
q.setOldOrderNo(s);
return JniFactory.Settle.pay(JSON.toJSONString(q));
}) })
.flatMap(response -> ApiFactory.Saleorder.addOrderPayMis(mSaleorder.pay(q.getOrderNo(), C.PAY_CHANNEL.WECHAT)))); .doFinally(() -> mView.dismissLoadingDialog())
.subscribe(response -> {
com.xingdata.zzdpos.api.Pay.Response r1 = JSON.parseObject(response.replace("\\", ""), com.xingdata.zzdpos.api.Pay.Response.class);
switch (r1.getResponseCode()) {
case "0000":
subscribePay(commitOrder().flatMap(orderNo -> ApiFactory.Saleorder.addOrderPayMis(mSaleorder.pay(orderNo, C.PAY_CHANNEL.WECHAT)).doFinally(() -> mView.dismissLoadingDialog())));
break;
case "0098":
mView.showPayingDialog(C.PAY_CHANNEL.WECHAT, r1);
break;
default:
mView.showPayFailFragment(null, mSaleorder);
break;
}
}, throwable -> {
mView.showPayFailFragment(throwable, mSaleorder);
});
} }
@Override @Override
...@@ -261,14 +287,47 @@ public class SettlePresenter extends SettleContract.Presenter { ...@@ -261,14 +287,47 @@ public class SettlePresenter extends SettleContract.Presenter {
ApiFactory.Recard.checkPwd(mVip.getVipId(), String.valueOf(cardNo), password).subscribe( ApiFactory.Recard.checkPwd(mVip.getVipId(), String.valueOf(cardNo), password).subscribe(
b -> { b -> {
mView.dismissPasswordDialog(); mView.dismissPasswordDialog();
subscribePay(commitOrder().flatMap(orderNo -> ApiFactory.Saleorder.addOrderPayMis(mSaleorder.pay(orderNo, C.PAY_CHANNEL.CARD, String.valueOf(cardNo))))); mView.showLoadingDialog();
subscribePay(commitOrder().flatMap(orderNo -> ApiFactory.Saleorder.addOrderPayMis(mSaleorder.pay(orderNo, C.PAY_CHANNEL.CARD, String.valueOf(cardNo))).doFinally(() -> mView.dismissLoadingDialog())));
},
throwable -> mView.showMsg("密码错误")
);
}
@Override
public void payInTally(String password) {
ApiFactory.Recard.checkPwd(mVip.getVipId(), String.valueOf(0L), password).subscribe(
b -> {
mView.dismissPasswordDialog();
mView.showLoadingDialog();
subscribePay(commitOrder().flatMap(orderNo -> ApiFactory.Saleorder.addOrderPayMis(mSaleorder.pay(orderNo, C.PAY_CHANNEL.TALLY)).doFinally(() -> mView.dismissLoadingDialog())));
}, },
throwable -> mView.showMsg("密码错误") throwable -> mView.showMsg("密码错误")
); );
} }
@Override @Override
public void payInTally() { public void checkPayState() {
mView.showLoadingDialog();
JniFactory.Settle.query()
.doFinally(() -> mView.dismissLoadingDialog())
.subscribe(s -> {
com.xingdata.zzdpos.api.Pay.Response r1 = JSON.parseObject(s.replace("\\", ""), com.xingdata.zzdpos.api.Pay.Response.class);
switch (r1.getResponseCode()) {
case "0000":
subscribePay(commitOrder().flatMap(orderNo -> ApiFactory.Saleorder.addOrderPayMis(mSaleorder.pay(orderNo, C.PAY_CHANNEL.ALI)).doFinally(() -> mView.dismissLoadingDialog())));
break;
case "0098":
mView.showMsg("交易处理中");
break;
default:
mView.showPayFailFragment(null, mSaleorder);
break;
}
},
throwable -> {
mView.showPayFailFragment(throwable, mSaleorder);
});
} }
@Override @Override
......
...@@ -129,7 +129,15 @@ public class PasswordDialog extends BaseSheetDialog<SettlePresenter, DialogPassw ...@@ -129,7 +129,15 @@ public class PasswordDialog extends BaseSheetDialog<SettlePresenter, DialogPassw
} }
if (strPassword.length() < 6) return; if (strPassword.length() < 6) return;
mPresenter.payInCard(0L, strPassword.toString());
switch (mPayType) {
case C.PAY_CHANNEL.CARD:
mPresenter.payInCard(0L, strPassword.toString());
break;
case C.PAY_CHANNEL.TALLY:
mPresenter.payInTally(strPassword.toString());
break;
}
} }
/** /**
......
package com.xingdata.zzdpos.ui.settle.dialog;
import android.content.DialogInterface;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.api.Pay;
import com.xingdata.zzdpos.base.BaseDialog;
import com.xingdata.zzdpos.databinding.DialogSettlePayingBinding;
import com.xingdata.zzdpos.ui.settle.SettlePresenter;
public class PayingDialog extends BaseDialog<SettlePresenter, DialogSettlePayingBinding> {
private int mType;
private Pay.Response mResponse;
@Override
protected boolean isEasy() {
return true;
}
@Override
public int getLayoutId() {
return R.layout.dialog_settle_paying;
}
@Override
public void initView() {
mViewBinding.tvCheck.setOnClickListener(view -> mPresenter.checkPayState());
switch (mType) {
case C.PAY_CHANNEL.ALI:
mViewBinding.ivLogo.setImageResource(R.mipmap.pay_alipay);
break;
case C.PAY_CHANNEL.WECHAT:
mViewBinding.ivLogo.setImageResource(R.mipmap.pay_wechat);
break;
}
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
}
public PayingDialog setType(int type) {
this.mType = type;
return this;
}
public PayingDialog setResponse(Pay.Response response) {
this.mResponse = response;
return this;
}
}
...@@ -94,6 +94,7 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle ...@@ -94,6 +94,7 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
case C.SETTLE_MODE.PAYMENT: case C.SETTLE_MODE.PAYMENT:
mViewBinding.llStore.setVisibility(View.GONE); mViewBinding.llStore.setVisibility(View.GONE);
mPresenter.initPaymentInfo(); mPresenter.initPaymentInfo();
BottomSheetBehavior.from(mViewBinding.llSheet).setState(BottomSheetBehavior.STATE_EXPANDED);
break; break;
case C.SETTLE_MODE.STORE: case C.SETTLE_MODE.STORE:
mViewBinding.llStore.setVisibility(View.VISIBLE); mViewBinding.llStore.setVisibility(View.VISIBLE);
......
...@@ -28,8 +28,8 @@ public final class SystemUtil { ...@@ -28,8 +28,8 @@ public final class SystemUtil {
* @return 设备型号 * @return 设备型号
*/ */
public static String getDeviceModel() { public static String getDeviceModel() {
return DeviceUtils.getModel(); // return DeviceUtils.getModel();
// return "AECRC10"; return "AECRC10";
} }
...@@ -57,8 +57,8 @@ public final class SystemUtil { ...@@ -57,8 +57,8 @@ public final class SystemUtil {
e.printStackTrace(); e.printStackTrace();
} }
} }
return deviceSN; // return deviceSN;
// return "548496"; return "548496";
} }
/** /**
......
...@@ -6,17 +6,19 @@ ...@@ -6,17 +6,19 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/lyt_main_bg" android:background="@color/gray_zhouyu"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
android:id="@+id/tv_title" android:id="@+id/tv_title"
style="@style/dialog_title" style="@style/dialog_title"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content" />
android:layout_marginBottom="@dimen/all_padding" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width"
android:background="@color/gray_kongming" />
<ViewStub <ViewStub
android:id="@+id/vs_center" android:id="@+id/vs_center"
......
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/white_caocao"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingBottom="@dimen/all_margin_big"
android:paddingTop="@dimen/all_margin_big">
<ImageView
android:id="@+id/iv_logo"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginStart="@dimen/all_margin"
android:src="@mipmap/pay_alipay" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/all_margin_big_big"
android:layout_marginStart="@dimen/all_margin"
android:text="支付中…"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_sub_title_size"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_check"
android:layout_width="@dimen/button2_width"
android:layout_height="@dimen/button2_height"
android:layout_marginEnd="@dimen/all_margin"
android:background="@drawable/shape_red_round_rectangle_more_round"
android:foreground="?android:attr/actionBarItemBackground"
android:gravity="center"
android:text="支付状态"
android:textColor="@color/white_caocao"
android:textSize="@dimen/all_text_size" />
</LinearLayout>
</layout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment