Commit b08655a8 by 宁斌

1、不同pos支付fragment分包

parent b01803d9
...@@ -148,7 +148,6 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex ...@@ -148,7 +148,6 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
protected String roundingStr = "賬單小數"; protected String roundingStr = "賬單小數";
private final String noFoodDeliveryTip = "賬單沒有食品,是否開台?"; private final String noFoodDeliveryTip = "賬單沒有食品,是否開台?";
public abstract void createOrder(boolean isPrint, Class<?> afterToActivity); public abstract void createOrder(boolean isPrint, Class<?> afterToActivity);
public abstract void addOrderFood(boolean isPrint, Class<?> afterToActivity); public abstract void addOrderFood(boolean isPrint, Class<?> afterToActivity);
......
...@@ -34,6 +34,10 @@ public class RequestParms implements Parcelable { ...@@ -34,6 +34,10 @@ public class RequestParms implements Parcelable {
private final long orderId; private final long orderId;
private final double payMoney; private final double payMoney;
/** /**
* 自定義ID,與POS方綁定交易ID綁定,可用此ID查詢對應的交易記錄
*/
private String txnId;
/**
* 退款相关 * 退款相关
*/ */
private final String refundReason; private final String refundReason;
......
...@@ -13,4 +13,8 @@ public interface YedpayCommand extends Callback { ...@@ -13,4 +13,8 @@ public interface YedpayCommand extends Callback {
void callSaleUri(String uri); void callSaleUri(String uri);
void refundResult(boolean result); 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> { ...@@ -52,7 +52,9 @@ public class YedpayDevice implements PosPayAction<RequestParms> {
@Override @Override
public void retrieval(RequestParms params) { public void retrieval(RequestParms params) {
String uriString = "yedpayapp://transaction_detail?c=" +params.getTxnId();
YedpayCommand callback = (YedpayCommand) params.getCallback();
callback.querySaleStatus(uriString);
} }
@Override @Override
...@@ -67,7 +69,8 @@ public class YedpayDevice implements PosPayAction<RequestParms> { ...@@ -67,7 +69,8 @@ public class YedpayDevice implements PosPayAction<RequestParms> {
@Override @Override
public void pay(RequestParms params) { 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(); YedpayCommand callback = (YedpayCommand) params.getCallback();
callback.callSaleUri(uriString); callback.callSaleUri(uriString);
} }
......
...@@ -14,8 +14,10 @@ import androidx.annotation.NonNull; ...@@ -14,8 +14,10 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; 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.R;
import com.gingersoft.gsa.cloud.order.R2; 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.device.pos.yedpay.constant.YedpayConstant;
import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment; import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment;
import com.gingersoft.gsa.cloud.pay.view.customstatus.CustomStatusView; import com.gingersoft.gsa.cloud.pay.view.customstatus.CustomStatusView;
...@@ -50,15 +52,6 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements ...@@ -50,15 +52,6 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements
@BindView(R2.id.tv_status) @BindView(R2.id.tv_status)
TextView 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 @Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) { public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerYedpayComponent //如找不到该类,请编译一下项目 DaggerYedpayComponent //如找不到该类,请编译一下项目
...@@ -70,78 +63,35 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements ...@@ -70,78 +63,35 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements
} }
@Override @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) { public void initData(@Nullable Bundle savedInstanceState) {
// mPresenter.excutePayFlow(requestParms); mPresenter.excutePayFlow(requestParms);
} }
@Override @Override
public void setData(@Nullable Object data) { 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;
@Override
public void showLoading(String message) {
} }
default:
@Override showStatusLoadingDialog(PayStep.FAILURE);
public void hideLoading() { break;
}
@Override
public void showMessage(@NonNull String message) {
checkNotNull(message);
ArmsUtils.makeText(mContext, message);
} }
} else {
@Override showStatusLoadingDialog(PayStep.FAILURE);
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 @Override
public void startActivityForResult(Intent intent) { public void startActivityForResult(Intent intent) {
startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE); startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE);
......
...@@ -3,8 +3,8 @@ package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model; ...@@ -3,8 +3,8 @@ package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model;
import android.app.Application; import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; 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.device.pos.yedpay.lifecycle.model.service.YedpayService;
import com.gingersoft.gsa.cloud.pay.lifecycle.model.service.PayFlowService;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager; import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel; import com.jess.arms.mvp.BaseModel;
...@@ -53,12 +53,14 @@ public class YedpayModel extends BaseModel implements YedpayContract.Model { ...@@ -53,12 +53,14 @@ public class YedpayModel extends BaseModel implements YedpayContract.Model {
@Override @Override
public Single<BaseResult> findSaleStatus(RequestBody body) { public Single<BaseResult> findSaleStatus(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(YedpayService.class) return mRepositoryManager.obtainRetrofitService(YedpayService.class)
.findSaleStatus(body); .findSaleStatus(body)
.compose(MyRxSchedulerUtils._io_main_f());
} }
@Override @Override
public Single<BaseResult> refundOrder(RequestBody body) { public Single<BaseResult> refundOrder(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(YedpayService.class) 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; ...@@ -3,7 +3,6 @@ package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.presenter;
import android.app.Application; import android.app.Application;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber; import com.gingersoft.gsa.cloud.common.rxjava.ErrorHandleSingleSubscriber;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
...@@ -13,20 +12,17 @@ import com.gingersoft.gsa.cloud.pay.RequestParms; ...@@ -13,20 +12,17 @@ import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.ResultCallback; 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.YedpayCommand;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant; 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.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader; import com.jess.arms.http.imageloader.ImageLoader;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler; import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import okhttp3.FormBody; import okhttp3.FormBody;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import javax.inject.Inject; import javax.inject.Inject;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract; import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.jess.arms.utils.RxLifecycleUtils; import com.jess.arms.utils.RxLifecycleUtils;
...@@ -71,7 +67,6 @@ public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayC ...@@ -71,7 +67,6 @@ public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayC
this.mApplication = null; this.mApplication = null;
} }
public void findSaleStatus(String transactionId, long orderId, int payType, int restaurantId) { public void findSaleStatus(String transactionId, long orderId, int payType, int restaurantId) {
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
.add("transactionId", transactionId) .add("transactionId", transactionId)
...@@ -79,11 +74,7 @@ public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayC ...@@ -79,11 +74,7 @@ public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayC
.add("payType", payType + "") .add("payType", payType + "")
.add("restaurantId", restaurantId + "") .add("restaurantId", restaurantId + "")
.build(); .build();
mModel.findSaleStatus(requestBody) mModel.findSaleStatus(requestBody)
.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView)) .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<BaseResult>(mErrorHandler) { .subscribe(new ErrorHandleSingleSubscriber<BaseResult>(mErrorHandler) {
...@@ -137,9 +128,6 @@ public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayC ...@@ -137,9 +128,6 @@ public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayC
.add("restaurantId", String.valueOf(restaurantId)) .add("restaurantId", String.valueOf(restaurantId))
.build(); .build();
mModel.refundOrder(requestBody) mModel.refundOrder(requestBody)
.subscribeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView)) .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<BaseResult>(mErrorHandler) { .subscribe(new ErrorHandleSingleSubscriber<BaseResult>(mErrorHandler) {
...@@ -191,13 +179,27 @@ public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayC ...@@ -191,13 +179,27 @@ public class YedpayPresenter extends BasePresenter<YedpayContract.Model, YedpayC
public void callSaleUri(String uri) { public void callSaleUri(String uri) {
Uri uri2 = Uri.parse(uri); Uri uri2 = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW, uri2); Intent intent = new Intent(Intent.ACTION_VIEW, uri2);
mRootView.getFragment().startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE); mRootView.startActivityForResult(intent);
} }
@Override @Override
public void refundResult(boolean result) { public void refundResult(boolean result) {
refundOrder(mRequestParms.getRefundReason(), mRequestParms.getOrderId(), mRequestParms.getPayType(), mRequestParms.getResturantId()); 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 ...@@ -55,8 +55,9 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment
@BindView(R2.id.tv_status) @BindView(R2.id.tv_status)
TextView tv_status; TextView tv_status;
private RequestParms requestParms; protected P mPresenter;
private PayAction action; protected RequestParms requestParms;
protected PayAction action;
private final long mCancelDelayMillis = 2000; private final long mCancelDelayMillis = 2000;
private String mLoadingText = "支付中..."; private String mLoadingText = "支付中...";
...@@ -94,6 +95,7 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment ...@@ -94,6 +95,7 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
mPresenter = (P) mPresenter;
Bundle arguments = getArguments(); Bundle arguments = getArguments();
requestParms = arguments.getParcelable("requestParms"); requestParms = arguments.getParcelable("requestParms");
action = requestParms.getAction(); action = requestParms.getAction();
...@@ -181,9 +183,16 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment ...@@ -181,9 +183,16 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment
}, mCancelDelayMillis); }, mCancelDelayMillis);
} }
@Override @Override
public Fragment getFragment() { public Fragment getFragment() {
return this; 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