Commit b08655a8 by 宁斌

1、不同pos支付fragment分包

parent b01803d9
......@@ -148,7 +148,6 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
protected String roundingStr = "賬單小數";
private final String noFoodDeliveryTip = "賬單沒有食品,是否開台?";
public abstract void createOrder(boolean isPrint, Class<?> afterToActivity);
public abstract void addOrderFood(boolean isPrint, Class<?> afterToActivity);
......
......@@ -34,6 +34,10 @@ public class RequestParms implements Parcelable {
private final long orderId;
private final double payMoney;
/**
* 自定義ID,與POS方綁定交易ID綁定,可用此ID查詢對應的交易記錄
*/
private String txnId;
/**
* 退款相关
*/
private final String refundReason;
......
......@@ -13,4 +13,8 @@ public interface YedpayCommand extends Callback {
void callSaleUri(String uri);
void refundResult(boolean result);
void querySaleStatus(String uri);
void queryRefundStatus(String uri);
}
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay;
import android.content.Intent;
import android.net.Uri;
import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
/**
* @作者: bin
* @創建時間: 2021-04-23 9:55
* @更新時間: 2021-04-23 9:55
* @描述:
*/
public class YedpayCommandImp implements YedpayCommand {
private Fragment mContext;
private PayFlowPresenter mPayFlowPresenter;
private RequestParms mRequestParms;
public YedpayCommandImp(Fragment context, PayFlowPresenter payFlowPresenter, RequestParms requestParms) {
this.mContext = context;
this.mPayFlowPresenter = payFlowPresenter;
this.mRequestParms = requestParms;
}
@Override
public void callSaleUri(String uri) {
Fragment fragment = mContext;
if (fragment != null) {
Uri uri2 = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW, uri2);
fragment.startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
}
}
@Override
public void refundResult(boolean result) {
PayFlowPresenter payFlowPresenter = mPayFlowPresenter;
if (payFlowPresenter != null && mRequestParms != null) {
payFlowPresenter.yedPayRefundOrder(mRequestParms.getRefundReason(), mRequestParms.getOrderId(), mRequestParms.getPayType(), mRequestParms.getResturantId());
}
}
}
......@@ -52,7 +52,9 @@ public class YedpayDevice implements PosPayAction<RequestParms> {
@Override
public void retrieval(RequestParms params) {
String uriString = "yedpayapp://transaction_detail?c=" +params.getTxnId();
YedpayCommand callback = (YedpayCommand) params.getCallback();
callback.querySaleStatus(uriString);
}
@Override
......@@ -67,7 +69,8 @@ public class YedpayDevice implements PosPayAction<RequestParms> {
@Override
public void pay(RequestParms params) {
String uriString = "yedpayapp://transaction?g=" + getPayType(params.getPayType()) + "&a=" + params.getPayMoney() + "";
//String uriString = "yedpayapp://transaction?g={{ 支付方式 }}&a={{ 銀碼 }}(&c={{ 自定義編號 }})";
String uriString = "yedpayapp://transaction?g=" + getPayType(params.getPayType()) + "&a=" + params.getPayMoney() + "&c=" +params.getTxnId();
YedpayCommand callback = (YedpayCommand) params.getCallback();
callback.callSaleUri(uriString);
}
......
......@@ -14,8 +14,10 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.common.logan.LoganManager;
import com.gingersoft.gsa.cloud.order.R;
import com.gingersoft.gsa.cloud.order.R2;
import com.gingersoft.gsa.cloud.pay.PayStep;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment;
import com.gingersoft.gsa.cloud.pay.view.customstatus.CustomStatusView;
......@@ -50,15 +52,6 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements
@BindView(R2.id.tv_status)
TextView tv_status;
// public static PayFlowFragment newInstance(RequestParms parms) {
// PayFlowFragment fragment = new PayFlowFragment();
// Bundle bundle = new Bundle();
// bundle.putParcelable("requestParms", parms);
// fragment.setArguments(bundle);
// return fragment;
// }
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerYedpayComponent //如找不到该类,请编译一下项目
......@@ -70,79 +63,36 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
getDialog().setCancelable(false);
return inflater.inflate(R.layout.dialog_pay_loading, container, false);
}
@Override
public void onStart() {
super.onStart();
mWindow.setBackgroundDrawable(new ColorDrawable(ArmsUtils.getColor(mContext, R.color.trans)));
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
// mPresenter.excutePayFlow(requestParms);
}
@Override
public void setData(@Nullable Object data) {
mPresenter.excutePayFlow(requestParms);
}
@Override
public void showLoading(String message) {
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
LoganManager.w_code(TAG, "onActivityResult->" + "resultCode=" + resultCode + " requestCode=" + requestCode);
if (resultCode == android.app.Activity.RESULT_OK) {
switch (requestCode) {
case YedpayConstant.CallRequestCode.SALE_REQUEST_CODE: {
if (intent.getExtras() != null) {
String status = (String) intent.getExtras().get("status");
String transaction_id = (String) intent.getExtras().get("transaction_id");
LoganManager.w_code(TAG, "onActivityResult-》" + "status=" + status + " transaction_id=" + transaction_id);
mPresenter.findSaleStatus(transaction_id, requestParms.getOrderId(), requestParms.getPayType(), requestParms.getResturantId());
}
break;
}
default:
showStatusLoadingDialog(PayStep.FAILURE);
break;
}
} else {
showStatusLoadingDialog(PayStep.FAILURE);
}
}
@Override
public void hideLoading() {
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.makeText(mContext, message);
}
@Override
public void launchActivity(@NonNull Intent intent) {
checkNotNull(intent);
ArmsUtils.startActivity(intent);
}
@Override
public void killMyself() {
super.killMyself();
}
// @Override
// public void onActivityResult(int requestCode, int resultCode, @Nullable Intent intent) {
// super.onActivityResult(requestCode, resultCode, intent);
// LoganManager.w_code(TAG, "onActivityResult->" + "resultCode=" + resultCode + " requestCode=" + requestCode);
// if (resultCode == android.app.Activity.RESULT_OK) {
// switch (requestCode) {
// case YedpayConstant.CallRequestCode.SALE_REQUEST_CODE: {
// if (intent.getExtras() != null) {
// String status = (String) intent.getExtras().get("status");
// String transaction_id = (String) intent.getExtras().get("transaction_id");
// LoganManager.w_code(TAG, "onActivityResult-》" + "status=" + status + " transaction_id=" + transaction_id);
// mPresenter.yedPayUpdateStatus(transaction_id, requestParms.getOrderId(), requestParms.getPayType(), requestParms.getResturantId());
// }
// break;
// }
// default:
// showStatusLoadingDialog(PayStep.FAILURE);
// break;
// }
// } else {
// showStatusLoadingDialog(PayStep.FAILURE);
// }
// }
@Override
public void startActivityForResult(Intent intent) {
startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
}
......
......@@ -3,8 +3,8 @@ package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.rxjava.MyRxSchedulerUtils;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.service.YedpayService;
import com.gingersoft.gsa.cloud.pay.lifecycle.model.service.PayFlowService;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
......@@ -53,12 +53,14 @@ public class YedpayModel extends BaseModel implements YedpayContract.Model {
@Override
public Single<BaseResult> findSaleStatus(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(YedpayService.class)
.findSaleStatus(body);
.findSaleStatus(body)
.compose(MyRxSchedulerUtils._io_main_f());
}
@Override
public Single<BaseResult> refundOrder(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(YedpayService.class)
.refundOrder(body);
.refundOrder(body)
.compose(MyRxSchedulerUtils._io_main_f());
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.bean;
/**
* @作者: bin
* @創建時間: 2021-04-15 18:06
* @更新時間: 2021-04-15 18:06
* @描述:
*/
public class YedPayRefundBean {
}
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.bean;
import lombok.Data;
/**
* @作者: bin
* @創建時間: 2021-04-15 18:46
* @更新時間: 2021-04-15 18:46
* @描述:
*/
@Data
public class YedpayFindSaleStatusBean {
/**
* 訂單id
*/
private long orderId = -1L;
/**
* 支付状态:0 未支付 1 支付失败 2 支持成功 3 已支付未到账 4.支付中 5.已退款 6.廢棄(第二次結賬)
*/
private Integer status;
/**
* 交易id
*/
private String transactionId;
/**
* 退款id
*/
private String refundId;
}
......@@ -3,7 +3,6 @@ package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.presenter;
import android.app.Application;
import android.content.Intent;
import android.net.Uri;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
......@@ -13,20 +12,17 @@ import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.ResultCallback;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.YedpayCommand;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.lifecycle.model.bean.YedpayFindSaleStatusBean;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.bean.YedpayFindSaleStatusBean;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import okhttp3.FormBody;
import okhttp3.RequestBody;
import javax.inject.Inject;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.jess.arms.utils.RxLifecycleUtils;
......@@ -71,7 +67,6 @@ public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayC
this.mApplication = null;
}
public void findSaleStatus(String transactionId, long orderId, int payType, int restaurantId) {
RequestBody requestBody = new FormBody.Builder()
.add("transactionId", transactionId)
......@@ -79,11 +74,7 @@ public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayC
.add("payType", payType + "")
.add("restaurantId", restaurantId + "")
.build();
mModel.findSaleStatus(requestBody)
.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<BaseResult>(mErrorHandler) {
......@@ -137,9 +128,6 @@ public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayC
.add("restaurantId", String.valueOf(restaurantId))
.build();
mModel.refundOrder(requestBody)
.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<BaseResult>(mErrorHandler) {
......@@ -191,13 +179,27 @@ public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayC
public void callSaleUri(String uri) {
Uri uri2 = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW, uri2);
mRootView.getFragment().startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
mRootView.startActivityForResult(intent);
}
@Override
public void refundResult(boolean result) {
refundOrder(mRequestParms.getRefundReason(), mRequestParms.getOrderId(), mRequestParms.getPayType(), mRequestParms.getResturantId());
}
@Override
public void querySaleStatus(String uri) {
Uri uri2 = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW, uri2);
mRootView.startActivityForResult(intent);
}
@Override
public void queryRefundStatus(String uri) {
Uri uri2 = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW, uri2);
mRootView.startActivityForResult(intent);
}
};
}
......@@ -55,8 +55,9 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment
@BindView(R2.id.tv_status)
TextView tv_status;
private RequestParms requestParms;
private PayAction action;
protected P mPresenter;
protected RequestParms requestParms;
protected PayAction action;
private final long mCancelDelayMillis = 2000;
private String mLoadingText = "支付中...";
......@@ -94,6 +95,7 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment
@Override
public void initData(@Nullable Bundle savedInstanceState) {
mPresenter = (P) mPresenter;
Bundle arguments = getArguments();
requestParms = arguments.getParcelable("requestParms");
action = requestParms.getAction();
......@@ -181,9 +183,16 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment
}, mCancelDelayMillis);
}
@Override
public Fragment getFragment() {
return this;
}
public RequestParms getRequestParms() {
return requestParms;
}
public PayAction getAction() {
return action;
}
}
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