Commit f85dede9 by 宁斌

1、yedpay事項查詢調整

parent b08655a8
...@@ -7,7 +7,7 @@ import com.gingersoft.gsa.cloud.common.patterns.Strategy; ...@@ -7,7 +7,7 @@ import com.gingersoft.gsa.cloud.common.patterns.Strategy;
import com.gingersoft.gsa.cloud.common.utils.AppDevices; import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.pay.PayAction; import com.gingersoft.gsa.cloud.pay.PayAction;
import com.gingersoft.gsa.cloud.pay.PaymentControl; import com.gingersoft.gsa.cloud.pay.PaymentCommand;
import com.gingersoft.gsa.cloud.pay.RequestParms; 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.bean.PayMethod; import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
...@@ -111,7 +111,7 @@ public class CancelOrder implements Strategy<OrderManagerResponse> { ...@@ -111,7 +111,7 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
} }
@Override @Override
public void externalPayment() { public void fakePayment() {
if (cancelListener != null) { if (cancelListener != null) {
cancelListener.cancel(datasBean.getId()); cancelListener.cancel(datasBean.getId());
} }
...@@ -123,7 +123,7 @@ public class CancelOrder implements Strategy<OrderManagerResponse> { ...@@ -123,7 +123,7 @@ public class CancelOrder implements Strategy<OrderManagerResponse> {
} }
}) })
.build(); .build();
PaymentControl.newInstance().showPayFlowFragment(mActivity, build); PaymentCommand.newInstance().action(mActivity.getSupportFragmentManager(), build);
// PosPay.builder() // PosPay.builder()
// .context(GsaCloudApplication.getAppContext()) // .context(GsaCloudApplication.getAppContext())
......
...@@ -1416,6 +1416,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex ...@@ -1416,6 +1416,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
.add("orderId", String.valueOf(mDoshokuOrder.getOrderId())) .add("orderId", String.valueOf(mDoshokuOrder.getOrderId()))
.add("person", String.valueOf(peopleNumber)) .add("person", String.valueOf(peopleNumber))
.add("scanId", String.valueOf(mDoshokuOrder.getOpenTableInfo().getScanId()))
.build(); .build();
mModel.updateOrder(requestBody) mModel.updateOrder(requestBody)
.doOnSubscribe(disposable -> mRootView.showLoading(null)) .doOnSubscribe(disposable -> mRootView.showLoading(null))
......
...@@ -1432,6 +1432,7 @@ public abstract class BaseOrderPresenter2<M extends BaseOrderContract.Model, V e ...@@ -1432,6 +1432,7 @@ public abstract class BaseOrderPresenter2<M extends BaseOrderContract.Model, V e
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
.add("orderId", String.valueOf(mDoshokuOrder.getOrderId())) .add("orderId", String.valueOf(mDoshokuOrder.getOrderId()))
.add("person", String.valueOf(peopleNumber)) .add("person", String.valueOf(peopleNumber))
.add("scanId", String.valueOf(mDoshokuOrder.getOpenTableInfo().getScanId()))
.build(); .build();
mModel.updateOrder(requestBody) mModel.updateOrder(requestBody)
.doOnSubscribe(disposable -> mRootView.showLoading(null)) .doOnSubscribe(disposable -> mRootView.showLoading(null))
......
...@@ -154,14 +154,11 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model ...@@ -154,14 +154,11 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), payRequest); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), payRequest);
mModel.toOrderPay(requestBody) mModel.toOrderPay(requestBody)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> { .doOnSubscribe(disposable -> {
if (show) { if (show) {
mRootView.showLoading(null); mRootView.showLoading(null);
} }
}) })
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading()) .doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView)) .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSingleSubscriber<BaseResult>(mErrorHandler) { .subscribe(new ErrorHandleSingleSubscriber<BaseResult>(mErrorHandler) {
......
...@@ -28,9 +28,11 @@ import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse; ...@@ -28,9 +28,11 @@ import com.gingersoft.gsa.cloud.order.bean.response.OrderResponse;
import com.gingersoft.gsa.cloud.order.commodity.OrderDetail; import com.gingersoft.gsa.cloud.order.commodity.OrderDetail;
import com.gingersoft.gsa.cloud.order.order.BaseOrder; import com.gingersoft.gsa.cloud.order.order.BaseOrder;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam; import com.gingersoft.gsa.cloud.pay.PaymentCommand;
import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.ResultCallback;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
import com.gingersoft.gsa.cloud.pay.PayAction; import com.gingersoft.gsa.cloud.pay.PayAction;
import com.gingersoft.gsa.cloud.pay.device.pos.base.fragment.PosActionStatusExceptionFragment;
import com.gingersoft.gsa.cloud.table.FunctionTable; import com.gingersoft.gsa.cloud.table.FunctionTable;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
import com.gingersoft.gsa.cloud.table.mvp.contract.TableContract; import com.gingersoft.gsa.cloud.table.mvp.contract.TableContract;
...@@ -72,14 +74,12 @@ import javax.inject.Inject; ...@@ -72,14 +74,12 @@ import javax.inject.Inject;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.Observer; import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull; import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer; import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import lombok.Data; import lombok.Data;
import me.jessyan.rxerrorhandler.core.RxErrorHandler; import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import okhttp3.FormBody; import okhttp3.FormBody;
import okhttp3.RequestBody; import okhttp3.RequestBody;
...@@ -485,23 +485,50 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -485,23 +485,50 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
OrderResponse orderBean = respose.getData(); OrderResponse orderBean = respose.getData();
if (orderBean != null && respose.getData().getOrderDetails() != null) { if (orderBean != null && respose.getData().getOrderDetails() != null) {
final String txnId = orderBean.getTxnId();
if (!TextUtils.isEmpty(orderBean.getTxnId())) { if (!TextUtils.isEmpty(txnId)) {
//有支付異常事項需要處理 //有支付異常事項需要處理
PosActionStatusExceptionFragment statusExceptionFragment = IActivity.findFragment(PosActionStatusExceptionFragment.class); RequestParms parms = RequestParms.builder()
if (statusExceptionFragment == null) { .action(PayAction.RETRIEVAL)
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam(); .txnId(txnId)
statusExceptionParam.setTxnId(orderBean.getTxnId()); .resultCallback(new ResultCallback() {
statusExceptionParam.setAmount(orderBean.getTotalAmount());
statusExceptionParam.setOrderId(orderBean.getId()); @Override
statusExceptionParam.setOrderNo(orderBean.getOrderNo()); public void onSuccess() {
statusExceptionParam.setPayMethodName(orderBean.getPayName());
statusExceptionParam.setPosAction(PayAction.RETRIEVAL); }
IActivity.loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
} else { @Override
IActivity.start(statusExceptionFragment); public void onFailure(Throwable t) {
}
return; }
@Override
public void fakePayment() {
}
@Override
public void hybridPayment(List<PayMethod> payMethods) {
}
})
.build();
PaymentCommand.newInstance().matter(IActivity.getSupportFragmentManager(), parms);
// PosActionStatusExceptionFragment statusExceptionFragment = IActivity.findFragment(PosActionStatusExceptionFragment.class);
// if (statusExceptionFragment == null) {
// PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
// statusExceptionParam.setTxnId(orderBean.getTxnId());
// statusExceptionParam.setAmount(orderBean.getTotalAmount());
// statusExceptionParam.setOrderId(orderBean.getId());
// statusExceptionParam.setOrderNo(orderBean.getOrderNo());
// statusExceptionParam.setPayMethodName(orderBean.getPayName());
// statusExceptionParam.setPosAction(PayAction.RETRIEVAL);
// IActivity.loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
// } else {
// IActivity.start(statusExceptionFragment);
// }
// return;
} }
if (respose.getData().getCreateTime() != null && openTableBean != null) { if (respose.getData().getCreateTime() != null && openTableBean != null) {
......
...@@ -1715,6 +1715,7 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model, ...@@ -1715,6 +1715,7 @@ public class SetMealPresenter extends BaseOrderPresenter2<SetMealContract.Model,
return true; return true;
} }
String User_Qty = foodBean.getCurrentMaxNumber(); String User_Qty = foodBean.getCurrentMaxNumber();
if (!TextUtils.isEmpty(User_Qty)) { if (!TextUtils.isEmpty(User_Qty)) {
String msg = "[" + foodBean.getFoodName() + "]" + LanguageUtils.get_language_system(mRootView.getActivity2(), "Comm.pause", "已暫停"); String msg = "[" + foodBean.getFoodName() + "]" + LanguageUtils.get_language_system(mRootView.getActivity2(), "Comm.pause", "已暫停");
......
...@@ -242,8 +242,8 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese ...@@ -242,8 +242,8 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
tvOrderNo.setVisibility(View.GONE); tvOrderNo.setVisibility(View.GONE);
} else { } else {
TableBean.DataBean tableInfo = mDoshokuOrder.getOpenTableInfo(); TableBean.DataBean tableInfo = mDoshokuOrder.getOpenTableInfo();
Date dd = mDoshokuOrder.getOpenTableTime(); // Date dd = mDoshokuOrder.getOpenTableTime();
String openTime = String.format("%tH:%tM", dd, dd); // String openTime = String.format("%tH:%tM", dd, dd);
String tableno; String tableno;
if (tableInfo.getSplitStatus() != 0) { if (tableInfo.getSplitStatus() != 0) {
tableno = tableInfo.getTableName().trim() + "-" + tableInfo.getTableNumber().trim(); tableno = tableInfo.getTableName().trim() + "-" + tableInfo.getTableNumber().trim();
...@@ -253,7 +253,7 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese ...@@ -253,7 +253,7 @@ public class OrderContentActivity extends BaseFragmentActivity<OrderContentPrese
btn_table.setText(tableno); btn_table.setText(tableno);
tvOrderNo.setText(String.format(getString(R.string.meal_order_number), DoshokuOrder.getInstance().getOrderNo())); tvOrderNo.setText(String.format(getString(R.string.meal_order_number), DoshokuOrder.getInstance().getOrderNo()));
btn_people_num.setText(String.format(getString(R.string.meal_numberman_colon), tableInfo.getPerson())); btn_people_num.setText(String.format(getString(R.string.meal_numberman_colon), tableInfo.getPerson()));
tv_time.setText("時間:" + openTime); // tv_time.setText("時間:" + openTime);
tv_server_main.setText(UserContext.newInstance().getMemberName()); tv_server_main.setText(UserContext.newInstance().getMemberName());
} }
} }
......
...@@ -32,7 +32,7 @@ import com.gingersoft.gsa.cloud.order.bean.request.MealOrderPayRequest; ...@@ -32,7 +32,7 @@ import com.gingersoft.gsa.cloud.order.bean.request.MealOrderPayRequest;
import com.gingersoft.gsa.cloud.order.billItem.BillItem; import com.gingersoft.gsa.cloud.order.billItem.BillItem;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.pay.PayAction; import com.gingersoft.gsa.cloud.pay.PayAction;
import com.gingersoft.gsa.cloud.pay.PaymentControl; import com.gingersoft.gsa.cloud.pay.PaymentCommand;
import com.gingersoft.gsa.cloud.pay.RequestParms; 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.bean.PayMethod; import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
...@@ -63,7 +63,6 @@ import com.xuexiang.rxutil2.rxjava.RxJavaUtils; ...@@ -63,7 +63,6 @@ import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import org.simple.eventbus.EventBus; import org.simple.eventbus.EventBus;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -207,8 +206,8 @@ public class OrderPayActivity extends BaseFragmentActivity<OrderPayPresenter> im ...@@ -207,8 +206,8 @@ public class OrderPayActivity extends BaseFragmentActivity<OrderPayPresenter> im
TableBean.DataBean tableInfo = DoshokuOrder.getInstance().getOpenTableInfo(); TableBean.DataBean tableInfo = DoshokuOrder.getInstance().getOpenTableInfo();
Date dd = DoshokuOrder.getInstance().getOpenTableTime(); // Date dd = DoshokuOrder.getInstance().getOpenTableTime();
String openTime = String.format("%tH:%tM", dd, dd); // String openTime = String.format("%tH:%tM", dd, dd);
String tableno = ""; String tableno = "";
if (tableInfo.getSplitStatus() != 0) { if (tableInfo.getSplitStatus() != 0) {
...@@ -217,7 +216,7 @@ public class OrderPayActivity extends BaseFragmentActivity<OrderPayPresenter> im ...@@ -217,7 +216,7 @@ public class OrderPayActivity extends BaseFragmentActivity<OrderPayPresenter> im
tableno = tableInfo.getTableName(); tableno = tableInfo.getTableName();
} }
btn_table.setText(tableno); btn_table.setText(tableno);
tv_time.setText("時間:" + openTime); // tv_time.setText("時間:" + openTime);
btn_people_num.setText(tableInfo.getPerson() + ""); btn_people_num.setText(tableInfo.getPerson() + "");
tv_server_main.setText(UserContext.newInstance().getMemberName()); tv_server_main.setText(UserContext.newInstance().getMemberName());
...@@ -554,11 +553,14 @@ public class OrderPayActivity extends BaseFragmentActivity<OrderPayPresenter> im ...@@ -554,11 +553,14 @@ public class OrderPayActivity extends BaseFragmentActivity<OrderPayPresenter> im
// //
// List<BillItem> billItemList = DoshokuOrder.getInstance().getShoppingCart().getBillItemList(); // List<BillItem> billItemList = DoshokuOrder.getInstance().getShoppingCart().getBillItemList();
TableBean.DataBean tableInfo = DoshokuOrder.getInstance().getOpenTableInfo();
RequestParms parms = RequestParms.builder() RequestParms parms = RequestParms.builder()
.action(PayAction.SALE) .action(PayAction.SALE)
.resturantId(RestaurantInfoManager.newInstance().getRestaurantId())
.orderId(DoshokuOrder.getInstance().getOrderId()) .orderId(DoshokuOrder.getInstance().getOrderId())
.resturantId(RestaurantInfoManager.newInstance().getRestaurantId())
.tableId(tableInfo.getId())
.tableExtId(tableInfo.getTableNumber())
.payMethods(mBillMoneyList) .payMethods(mBillMoneyList)
.payType(payMethod.getPayType()) .payType(payMethod.getPayType())
.payMoney(payMethod.getPayMoney()) .payMoney(payMethod.getPayMoney())
...@@ -575,7 +577,7 @@ public class OrderPayActivity extends BaseFragmentActivity<OrderPayPresenter> im ...@@ -575,7 +577,7 @@ public class OrderPayActivity extends BaseFragmentActivity<OrderPayPresenter> im
} }
@Override @Override
public void externalPayment() { public void fakePayment() {
mPresenter.sendOrderBefore(); mPresenter.sendOrderBefore();
} }
...@@ -585,7 +587,7 @@ public class OrderPayActivity extends BaseFragmentActivity<OrderPayPresenter> im ...@@ -585,7 +587,7 @@ public class OrderPayActivity extends BaseFragmentActivity<OrderPayPresenter> im
} }
}) })
.build(); .build();
PaymentControl.newInstance().showPayFlowFragment(this, parms); PaymentCommand.newInstance().action(getSupportFragmentManager(), parms);
// PosPay.builder() // PosPay.builder()
// .context(GsaCloudApplication.getAppContext()) // .context(GsaCloudApplication.getAppContext())
......
...@@ -129,15 +129,15 @@ public class DiscountFragment extends BaseFragment<BasePresenter> { ...@@ -129,15 +129,15 @@ public class DiscountFragment extends BaseFragment<BasePresenter> {
onDiscountItemClickListener.onBillDiscountClick(item, position); onDiscountItemClickListener.onBillDiscountClick(item, position);
} }
}); });
CouponFragment couponFragment = CouponFragment.newInstance(CouponFragment.FOOD_LIMIT_DISCOUNT);
couponFragment.setOnCouponItemClickListener((item, position) -> {
if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onCouponClick(item, position);
}
});
fragments.add(billDiscountFragment); fragments.add(billDiscountFragment);
MemberInfo memberInfo = DoshokuOrder.getInstance().getMemberInfo(); MemberInfo memberInfo = DoshokuOrder.getInstance().getMemberInfo();
if (memberInfo != null) { if (memberInfo != null) {
CouponFragment couponFragment = CouponFragment.newInstance(CouponFragment.FOOD_LIMIT_DISCOUNT);
couponFragment.setOnCouponItemClickListener((item, position) -> {
if (onDiscountItemClickListener != null) {
onDiscountItemClickListener.onCouponClick(item, position);
}
});
fragments.add(couponFragment); fragments.add(couponFragment);
} }
return fragments; return fragments;
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.button.MaterialButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登錄"
tools:layout_editor_absoluteX="114dp"
tools:layout_editor_absoluteY="59dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ll_discount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.qmuiteam.qmui.widget.tab.QMUITabSegment2
android:id="@+id/tabs_discount"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_45" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager_discount"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
\ No newline at end of file
...@@ -42,27 +42,11 @@ ...@@ -42,27 +42,11 @@
android:orientation="vertical" /> android:orientation="vertical" />
</LinearLayout> </LinearLayout>
<include <include layout="@layout/meal_layout_combo_modifier" />
layout="@layout/meal_layout_combo_modifier"
android:visibility="gone" />
<include <include layout="@layout/meal_layout_meal_fine" />
layout="@layout/meal_layout_meal_fine"
android:visibility="gone" />
<FrameLayout <include layout="@layout/meal_layout_discount" />
android:id="@+id/fl_discount_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/ll_modify"
android:visibility="gone">
<fragment
android:id="@+id/fragment_discount"
android:name="com.gingersoft.gsa.cloud.table.mvp.ui.fragment.discount.DiscountFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout>
<!--鍵盤--> <!--鍵盤-->
<com.gingersoft.gsa.cloud.ui.view.SearchKeyBoardView <com.gingersoft.gsa.cloud.ui.view.SearchKeyBoardView
......
...@@ -8,6 +8,6 @@ import android.os.Parcelable; ...@@ -8,6 +8,6 @@ import android.os.Parcelable;
* @更新時間: 2021-04-14 15:05 * @更新時間: 2021-04-14 15:05
* @描述: * @描述:
*/ */
public interface Callback<T> { public interface CommandCallback<T> {
} }
...@@ -26,17 +26,25 @@ public enum PayAction { ...@@ -26,17 +26,25 @@ public enum PayAction {
switch (status) { switch (status) {
case LOADING: case LOADING:
return actionName + "中..."; return actionName + "中...";
case FAILURE_OBTAIN_ID:
return "調起" + actionName + "失敗";
case SUCCESS: case SUCCESS:
return actionName + "成功"; return actionName + "成功";
case FAILURE: case FAILURE:
return actionName + "失敗"; return actionName + "失敗";
case NOT_ARRIVED:
return "已支付未到賬";
case REFUNDED:
return "已退款";
case REPEAL:
return "廢棄(二次結賬)";
default: default:
return ""; return "";
} }
} }
public String getLoadingStepText(String errMsg) { public String getLoadingStepText(String errMsg) {
return actionName+" "+errMsg; return actionName + " " + errMsg;
} }
public String getCallbackExceptionText() { public String getCallbackExceptionText() {
......
...@@ -11,6 +11,40 @@ import lombok.Getter; ...@@ -11,6 +11,40 @@ import lombok.Getter;
@Getter @Getter
public enum PayStep { public enum PayStep {
LOADING, SUCCESS, FAILURE /**
* 未支付
* 支付中
*/
LOADING,
/**
* 獲取事項ID失敗
*/
FAILURE_OBTAIN_ID,
/**
* 支付成功
*/
SUCCESS,
/**
* 支付失败
*/
FAILURE,
/**
* 已支付未到账
*/
NOT_ARRIVED,
/**
* 已退款
*/
REFUNDED,
/**
* 廢棄(第二次結賬)
*/
REPEAL
} }
package com.gingersoft.gsa.cloud.pay;
import androidx.fragment.app.FragmentManager;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
import com.gingersoft.gsa.cloud.pay.device.pos.PosCommand;
import com.jess.arms.utils.Preconditions;
import java.util.List;
import lombok.Getter;
/**
* @作者: bin
* @創建時間: 2021-04-15 16:38
* @更新時間: 2021-04-15 16:38
* @描述:
*/
@Getter
public class PaymentCommand {
private static PaymentCommand sPaymentControl;
public static PaymentCommand newInstance() {
if (sPaymentControl == null) {
sPaymentControl = new PaymentCommand();
}
return sPaymentControl;
}
private PaymentCommand() {
}
public void action(FragmentManager fragmentManager, RequestParms requestParms) {
final PayMethod currPosPaymethod = requestParms.getCurrPosPaymethod();
if (currPosPaymethod != null) {
final PosCommand command = PaymentFactory.createPosCommand();
command.showActionDialog(fragmentManager, requestParms);
} else {
final ResultCallback resultCallback = requestParms.getResultCallback();
if (resultCallback != null) {
resultCallback.fakePayment();
}
}
}
public void matter(FragmentManager fragmentManager, RequestParms requestParms) {
// final PosCommand command = PaymentFactory.createPosCommand();
// command.showActionDialog(fragmentManager, requestParms);
}
public void pay(RequestParms requestParms) {
final PosCommand command = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(command);
command.pay(requestParms);
}
public void tip(RequestParms requestParms) {
final PosCommand command = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(command);
command.tip(requestParms);
}
public void refund(RequestParms requestParms) {
final PosCommand command = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(command);
command.refund(requestParms);
}
public void voidO(RequestParms requestParms) {
final PosCommand command = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(command);
command.void0(this);
}
public void retrieval(RequestParms requestParms) {
final PosCommand command = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(command);
command.retrieval(this);
}
public void printStub(RequestParms requestParms) {
final PosCommand command = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(command);
command.printStub(this);
}
public void settlement(RequestParms requestParms) {
final PosCommand command = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(command);
command.settlement(this);
}
}
package com.gingersoft.gsa.cloud.pay;
import androidx.fragment.app.FragmentActivity;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment;
import com.gingersoft.gsa.cloud.pay.device.pos.PosPayAction;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.Preconditions;
import lombok.Getter;
/**
* @作者: bin
* @創建時間: 2021-04-15 16:38
* @更新時間: 2021-04-15 16:38
* @描述:
*/
@Getter
public class PaymentControl {
private static PaymentControl sPaymentControl;
public static PaymentControl newInstance() {
if (sPaymentControl == null) {
sPaymentControl = new PaymentControl();
}
return sPaymentControl;
}
private PaymentControl() {
}
public void pay(RequestParms requestParms) {
final PosPayAction payOrigin = PayDeviceFactory.createPayDevice();
Preconditions.checkNotNull(payOrigin);
payOrigin.pay(requestParms);
}
public void tip(RequestParms requestParms) {
final PosPayAction payOrigin = PayDeviceFactory.createPayDevice();
Preconditions.checkNotNull(payOrigin);
payOrigin.tip(requestParms);
}
public void refund(RequestParms requestParms) {
final PosPayAction payOrigin = PayDeviceFactory.createPayDevice();
Preconditions.checkNotNull(payOrigin);
payOrigin.refund(requestParms);
}
public void voidO(RequestParms requestParms) {
final PosPayAction payOrigin = PayDeviceFactory.createPayDevice();
Preconditions.checkNotNull(payOrigin);
payOrigin.void0(this);
}
public void retrieval(RequestParms requestParms) {
final PosPayAction payOrigin = PayDeviceFactory.createPayDevice();
Preconditions.checkNotNull(payOrigin);
payOrigin.retrieval(this);
}
public void printStub(RequestParms requestParms) {
final PosPayAction payOrigin = PayDeviceFactory.createPayDevice();
Preconditions.checkNotNull(payOrigin);
payOrigin.printStub(this);
}
public void settlement(RequestParms requestParms) {
final PosPayAction payOrigin = PayDeviceFactory.createPayDevice();
Preconditions.checkNotNull(payOrigin);
payOrigin.settlement(this);
}
public void showPayFlowFragment(FragmentActivity fragmentActivity,RequestParms requestParms){
PayFlowFragment<BasePresenter<YedpayContract.Model, YedpayContract.View>> payFlowFragment = PayFlowFragment.newInstance(requestParms);
payFlowFragment.show(fragmentActivity.getSupportFragmentManager(), "PayFlowDialogFragment");
}
}
package com.gingersoft.gsa.cloud.pay; package com.gingersoft.gsa.cloud.pay;
import com.gingersoft.gsa.cloud.common.utils.AppDevices; import com.gingersoft.gsa.cloud.common.utils.AppDevices;
import com.gingersoft.gsa.cloud.pay.device.pos.PosPayAction; import com.gingersoft.gsa.cloud.pay.device.pos.PosCommand;
import com.gingersoft.gsa.cloud.pay.device.pos.bbpos.BBPosDevice; import com.gingersoft.gsa.cloud.pay.device.pos.bbpos.BBPosCommandImp;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.HywebDevice; import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.HywebCommandImp;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.YedpayDevice; import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.YedpayCommandImp;
/** /**
* @作者: bin * @作者: bin
...@@ -12,17 +12,17 @@ import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.YedpayDevice; ...@@ -12,17 +12,17 @@ import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.YedpayDevice;
* @更新時間: 2021-04-14 12:28 * @更新時間: 2021-04-14 12:28
* @描述: * @描述:
*/ */
public class PayDeviceFactory { public class PaymentFactory {
public static PosPayAction createPayDevice() { public static PosCommand createPosCommand() {
if (AppDevices.isHywebPos()) { if (AppDevices.isHywebPos()) {
return HywebDevice.newInstance(); return HywebCommandImp.newInstance();
} else if (AppDevices.isBBPos()) { } else if (AppDevices.isBBPos()) {
return BBPosDevice.newInstance(); return BBPosCommandImp.newInstance();
} else if (AppDevices.isYedpay()) { } else if (AppDevices.isYedpay()) {
return YedpayDevice.newInstance(); return YedpayCommandImp.newInstance();
} }
return YedpayDevice.newInstance(); return YedpayCommandImp.newInstance();
} }
} }
...@@ -3,20 +3,12 @@ package com.gingersoft.gsa.cloud.pay; ...@@ -3,20 +3,12 @@ package com.gingersoft.gsa.cloud.pay;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import com.gingersoft.gsa.cloud.pay.Callback;
import com.gingersoft.gsa.cloud.pay.PayAction;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod; import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
import com.google.gson.annotations.SerializedName; import com.gingersoft.gsa.cloud.pay.contract.PayMethodContract;
import java.io.Serializable;
import java.util.List; import java.util.List;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
/** /**
* @作者: bin * @作者: bin
...@@ -28,10 +20,12 @@ import retrofit2.Retrofit; ...@@ -28,10 +20,12 @@ import retrofit2.Retrofit;
public class RequestParms implements Parcelable { public class RequestParms implements Parcelable {
private PayAction action; private PayAction action;
private final long orderId;
private final int resturantId; private final int resturantId;
private int tableId;
private String tableExtId;
private final List<PayMethod> payMethods; private final List<PayMethod> payMethods;
private final int payType; private final int payType;
private final long orderId;
private final double payMoney; private final double payMoney;
/** /**
* 自定義ID,與POS方綁定交易ID綁定,可用此ID查詢對應的交易記錄 * 自定義ID,與POS方綁定交易ID綁定,可用此ID查詢對應的交易記錄
...@@ -44,7 +38,7 @@ public class RequestParms implements Parcelable { ...@@ -44,7 +38,7 @@ public class RequestParms implements Parcelable {
/** /**
* 操作行为回调如支付,退款等 * 操作行为回调如支付,退款等
*/ */
private Callback callback; private CommandCallback commandCallback;
/** /**
* 结果回调 * 结果回调
*/ */
...@@ -53,15 +47,33 @@ public class RequestParms implements Parcelable { ...@@ -53,15 +47,33 @@ public class RequestParms implements Parcelable {
private RequestParms(Builder builder) { private RequestParms(Builder builder) {
this.action = builder.action; this.action = builder.action;
this.resturantId = builder.resturantId; this.resturantId = builder.resturantId;
this.orderId = builder.orderId;
this.tableId = builder.tableId;
this.tableExtId = builder.tableExtId;
this.payMethods = builder.payMethods; this.payMethods = builder.payMethods;
this.payType = builder.payType; this.payType = builder.payType;
this.orderId = builder.orderId;
this.payMoney = builder.payMoney; this.payMoney = builder.payMoney;
this.refundReason = builder.refundReason; this.refundReason = builder.refundReason;
this.callback = builder.callback; this.txnId = builder.txnId;
this.commandCallback = builder.commandCallback;
this.resultCallback = builder.resultCallback; this.resultCallback = builder.resultCallback;
} }
public PayMethod getCurrPosPaymethod() {
if (payMethods != null) {
List<Integer> posPaymethods = PayMethodContract.getPosPaymethods();
for (PayMethod payMethod : payMethods) {
for (Integer posPaymethod : posPaymethods) {
if (payMethod.getPayType() == posPaymethod) {
return payMethod;
}
}
}
}
return null;
}
public static Builder builder() { public static Builder builder() {
return new Builder(); return new Builder();
} }
...@@ -69,13 +81,16 @@ public class RequestParms implements Parcelable { ...@@ -69,13 +81,16 @@ public class RequestParms implements Parcelable {
public static final class Builder { public static final class Builder {
private PayAction action; private PayAction action;
private long orderId;
private int resturantId; private int resturantId;
private int tableId;
private String tableExtId;
private List<PayMethod> payMethods; private List<PayMethod> payMethods;
private int payType; private int payType;
private long orderId;
private double payMoney; private double payMoney;
private String txnId;
private String refundReason; private String refundReason;
private Callback callback; private CommandCallback commandCallback;
private ResultCallback resultCallback; private ResultCallback resultCallback;
public Builder action(PayAction action) { public Builder action(PayAction action) {
...@@ -88,6 +103,16 @@ public class RequestParms implements Parcelable { ...@@ -88,6 +103,16 @@ public class RequestParms implements Parcelable {
return this; return this;
} }
public Builder tableId(int tableId) {
this.tableId = tableId;
return this;
}
public Builder tableExtId(String tableExtId) {
this.tableExtId = tableExtId;
return this;
}
public Builder payMethods(List<PayMethod> payMethods) { public Builder payMethods(List<PayMethod> payMethods) {
this.payMethods = payMethods; this.payMethods = payMethods;
return this; return this;
...@@ -108,13 +133,18 @@ public class RequestParms implements Parcelable { ...@@ -108,13 +133,18 @@ public class RequestParms implements Parcelable {
return this; return this;
} }
public Builder txnId(String txnId) {
this.txnId = txnId;
return this;
}
public Builder refundReason(String refundReason) { public Builder refundReason(String refundReason) {
this.refundReason = refundReason; this.refundReason = refundReason;
return this; return this;
} }
public Builder callback(Callback callback) { public Builder commandCallback(CommandCallback commandCallback) {
this.callback = callback; this.commandCallback = commandCallback;
return this; return this;
} }
......
...@@ -19,10 +19,9 @@ public interface ResultCallback { ...@@ -19,10 +19,9 @@ public interface ResultCallback {
void onFailure(Throwable t); void onFailure(Throwable t);
/** /**
* 外部支付,交给回调方处 * 假支付,交给外部處
*/ */
void externalPayment(); void fakePayment();
/** /**
* 混合支付,选择二种以上支付方式 * 混合支付,选择二种以上支付方式
*/ */
......
package com.gingersoft.gsa.cloud.pay.contract; package com.gingersoft.gsa.cloud.pay.contract;
import java.util.ArrayList;
import java.util.List;
/** /**
* @作者: bin * @作者: bin
* @創建時間: 2020-12-28 10:40 * @創建時間: 2020-12-28 10:40
...@@ -10,7 +13,7 @@ public class PayMethodContract { ...@@ -10,7 +13,7 @@ public class PayMethodContract {
/** /**
* 支付方式 * 支付方式
* * <p>
* 1:寶達通 * 1:寶達通
* 8:支付寶 * 8:支付寶
* 1001:現金 * 1001:現金
...@@ -25,7 +28,7 @@ public class PayMethodContract { ...@@ -25,7 +28,7 @@ public class PayMethodContract {
/** /**
* Hyweb POS支付方式 * Hyweb POS支付方式
* * <p>
* 1030:N5卡片 * 1030:N5卡片
* 1031:N5掃碼 * 1031:N5掃碼
* 1032:N5八達通 * 1032:N5八達通
...@@ -35,8 +38,7 @@ public class PayMethodContract { ...@@ -35,8 +38,7 @@ public class PayMethodContract {
public static final int PAY_METHOD_ID_1031 = 1031; public static final int PAY_METHOD_ID_1031 = 1031;
public static final int PAY_METHOD_ID_1032 = 1032; public static final int PAY_METHOD_ID_1032 = 1032;
public static final int PAY_METHOD_ID_1033 = 1033; public static final int PAY_METHOD_ID_1033 = 1033;
public static final int[] HYWEB_PAY_METHODS = {PAY_METHOD_ID_1030,PAY_METHOD_ID_1031,PAY_METHOD_ID_1032,PAY_METHOD_ID_1033}; public static final int[] HYWEB_PAY_METHODS = {PAY_METHOD_ID_1030, PAY_METHOD_ID_1031, PAY_METHOD_ID_1032, PAY_METHOD_ID_1033};
/** /**
* Yedpay POS支付方式 * Yedpay POS支付方式
...@@ -44,7 +46,24 @@ public class PayMethodContract { ...@@ -44,7 +46,24 @@ public class PayMethodContract {
public static final int PAY_METHOD_ID_1040 = 1106; public static final int PAY_METHOD_ID_1040 = 1106;
public static final int PAY_METHOD_ID_1041 = 1041; public static final int PAY_METHOD_ID_1041 = 1041;
public static final int PAY_METHOD_ID_1042 = 1042; public static final int PAY_METHOD_ID_1042 = 1042;
public static final int[] YEDPAY_PAY_METHODS = {PAY_METHOD_ID_1040,PAY_METHOD_ID_1041,PAY_METHOD_ID_1042}; public static final int[] YEDPAY_PAY_METHODS = {PAY_METHOD_ID_1040, PAY_METHOD_ID_1041, PAY_METHOD_ID_1042};
/**
* 獲取所有POS支付方式
* @return
*/
public static final List<Integer> getPosPaymethods() {
List<Integer> POS_PAY_METHODS = new ArrayList<>();
for (int hywebPayMethod : HYWEB_PAY_METHODS) {
POS_PAY_METHODS.add(hywebPayMethod);
}
for (int yedpayPayMethod : YEDPAY_PAY_METHODS) {
POS_PAY_METHODS.add(yedpayPayMethod);
}
return POS_PAY_METHODS;
}
/** /**
* 积分支付 * 积分支付
......
package com.gingersoft.gsa.cloud.pay.device.phone; package com.gingersoft.gsa.cloud.pay.device.phone;
import com.gingersoft.gsa.cloud.pay.Callback; import com.gingersoft.gsa.cloud.pay.base.BasePayAction;
/** /**
* @作者: bin * @作者: bin
...@@ -8,7 +8,7 @@ import com.gingersoft.gsa.cloud.pay.Callback; ...@@ -8,7 +8,7 @@ import com.gingersoft.gsa.cloud.pay.Callback;
* @更新時間: 2021-04-15 17:18 * @更新時間: 2021-04-15 17:18
* @描述: * @描述:
*/ */
public interface PhoneCommand extends Callback { public interface PhoneCommand<T> extends BasePayAction<T> {
} }
package com.gingersoft.gsa.cloud.pay.device.phone;
import com.gingersoft.gsa.cloud.pay.base.BasePayAction;
/**
* @作者: bin
* @創建時間: 2021-04-14 12:10
* @更新時間: 2021-04-14 12:10
* @描述:
*/
public interface PhonePayAction<T> extends BasePayAction<T> {
void printStub(T params);
}
package com.gingersoft.gsa.cloud.pay.device.phone; package com.gingersoft.gsa.cloud.pay.device.phone;
import com.gingersoft.gsa.cloud.pay.RequestParms;
/** /**
* @作者: bin * @作者: bin
* @創建時間: 2021-04-14 12:10 * @創建時間: 2021-04-14 12:10
* @更新時間: 2021-04-14 12:10 * @更新時間: 2021-04-14 12:10
* @描述: * @描述:
*/ */
public class PhonePayActionImp implements PhonePayAction { public class PhonePayCommandImp implements PhoneCommand<RequestParms> {
@Override private static PhonePayCommandImp sPhonePayCommand;
public void pay(Object params) {
public static PhonePayCommandImp newInstance() {
if (sPhonePayCommand == null) {
sPhonePayCommand = new PhonePayCommandImp();
}
return sPhonePayCommand;
} }
@Override @Override
public void refund(Object params) { public void pay(RequestParms params) {
} }
@Override @Override
public void printStub(Object params) { public void refund(RequestParms params) {
} }
} }
package com.gingersoft.gsa.cloud.pay.device.pos; package com.gingersoft.gsa.cloud.pay.device.pos;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.base.BasePayAction; import com.gingersoft.gsa.cloud.pay.base.BasePayAction;
/** /**
...@@ -8,7 +12,9 @@ import com.gingersoft.gsa.cloud.pay.base.BasePayAction; ...@@ -8,7 +12,9 @@ import com.gingersoft.gsa.cloud.pay.base.BasePayAction;
* @更新時間: 2021-04-14 12:06 * @更新時間: 2021-04-14 12:06
* @描述: * @描述:
*/ */
public interface PosPayAction<T> extends BasePayAction<T> { public interface PosCommand<T> extends BasePayAction<T> {
void showActionDialog(FragmentManager fragmentManager, RequestParms requestParms);
void void0(T params); void void0(T params);
......
...@@ -2,9 +2,9 @@ package com.gingersoft.gsa.cloud.pay.device.pos; ...@@ -2,9 +2,9 @@ package com.gingersoft.gsa.cloud.pay.device.pos;
import android.content.Context; import android.content.Context;
import com.gingersoft.gsa.cloud.pay.Callback; import com.gingersoft.gsa.cloud.pay.CommandCallback;
import com.gingersoft.gsa.cloud.pay.PayAction; import com.gingersoft.gsa.cloud.pay.PayAction;
import com.gingersoft.gsa.cloud.pay.PayDeviceFactory; import com.gingersoft.gsa.cloud.pay.PaymentFactory;
import com.gingersoft.gsa.cloud.pay.device.pos.base.bean.BaseBgRequest; import com.gingersoft.gsa.cloud.pay.device.pos.base.bean.BaseBgRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.base.bean.BasePosRequest; import com.gingersoft.gsa.cloud.pay.device.pos.base.bean.BasePosRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.YedpayCommand; import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.YedpayCommand;
...@@ -30,7 +30,7 @@ public final class PosPay { ...@@ -30,7 +30,7 @@ public final class PosPay {
final BasePosRequest posRequest; final BasePosRequest posRequest;
final BaseBgRequest bgRequest; final BaseBgRequest bgRequest;
final PayAction retrievalAction; final PayAction retrievalAction;
final Callback callback; final CommandCallback callback;
final boolean showLoading; final boolean showLoading;
final long orderId; final long orderId;
final String txnId; final String txnId;
...@@ -40,43 +40,43 @@ public final class PosPay { ...@@ -40,43 +40,43 @@ public final class PosPay {
final YedpayCommand yedpayCallback; final YedpayCommand yedpayCallback;
public void pay() { public void pay() {
final PosPayAction payDevice = PayDeviceFactory.createPayDevice(); final PosCommand payDevice = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(payDevice); Preconditions.checkNotNull(payDevice);
payDevice.pay(this); payDevice.pay(this);
} }
public void tip() { public void tip() {
final PosPayAction payDevice = PayDeviceFactory.createPayDevice(); final PosCommand payDevice = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(payDevice); Preconditions.checkNotNull(payDevice);
payDevice.tip(this); payDevice.tip(this);
} }
public void refund() { public void refund() {
final PosPayAction payDevice = PayDeviceFactory.createPayDevice(); final PosCommand payDevice = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(payDevice); Preconditions.checkNotNull(payDevice);
payDevice.refund(this); payDevice.refund(this);
} }
public void voidO() { public void voidO() {
final PosPayAction payDevice = PayDeviceFactory.createPayDevice(); final PosCommand payDevice = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(payDevice); Preconditions.checkNotNull(payDevice);
payDevice.void0(this); payDevice.void0(this);
} }
public void retrieval() { public void retrieval() {
final PosPayAction payDevice = PayDeviceFactory.createPayDevice(); final PosCommand payDevice = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(payDevice); Preconditions.checkNotNull(payDevice);
payDevice.retrieval(this); payDevice.retrieval(this);
} }
public void printStub() { public void printStub() {
final PosPayAction payDevice = PayDeviceFactory.createPayDevice(); final PosCommand payDevice = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(payDevice); Preconditions.checkNotNull(payDevice);
payDevice.printStub(this); payDevice.printStub(this);
} }
public void settlement() { public void settlement() {
final PosPayAction payDevice = PayDeviceFactory.createPayDevice(); final PosCommand payDevice = PaymentFactory.createPosCommand();
Preconditions.checkNotNull(payDevice); Preconditions.checkNotNull(payDevice);
payDevice.settlement(this); payDevice.settlement(this);
} }
......
...@@ -23,6 +23,7 @@ import com.gingersoft.gsa.cloud.common.loadsir.pos.PosTipsStatusExceptionCallbac ...@@ -23,6 +23,7 @@ import com.gingersoft.gsa.cloud.common.loadsir.pos.PosTipsStatusExceptionCallbac
import com.gingersoft.gsa.cloud.common.loadsir.pos.PosVoidStatusExceptionCallback; import com.gingersoft.gsa.cloud.common.loadsir.pos.PosVoidStatusExceptionCallback;
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.PaymentCommand;
import com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam; import com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.pos.RetrievalRequest; import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.pos.RetrievalRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.constant.HywebActionStatusCode; import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.constant.HywebActionStatusCode;
...@@ -173,8 +174,9 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV ...@@ -173,8 +174,9 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV
} }
private void retrievalStatus() { private void retrievalStatus() {
RetrievalRequest retrievalRequest = new RetrievalRequest(); PaymentCommand.newInstance().retrieval(null);
retrievalRequest.setTXN_ID(mPosStatusExceptionParam.getTxnId()); // RetrievalRequest retrievalRequest = new RetrievalRequest();
// retrievalRequest.setTXN_ID(mPosStatusExceptionParam.getTxnId());
// PosPay.retrieval(mContext, this, mPosStatusExceptionParam.getOrderId(), mPosStatusExceptionParam.getPosAction(),retrievalRequest, new OnPosActionListener() { // PosPay.retrieval(mContext, this, mPosStatusExceptionParam.getOrderId(), mPosStatusExceptionParam.getPosAction(),retrievalRequest, new OnPosActionListener() {
// //
// @Override // @Override
......
package com.gingersoft.gsa.cloud.pay.lifecycle.contract; package com.gingersoft.gsa.cloud.pay.device.pos.base.lifecycle.contract;
import android.app.Activity;
import android.content.Intent;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.pay.PayStep; import com.gingersoft.gsa.cloud.pay.PayStep;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
import io.reactivex.Single;
import okhttp3.RequestBody;
/** /**
* ================================================ * ================================================
...@@ -32,7 +25,6 @@ public interface PayFlowContract { ...@@ -32,7 +25,6 @@ public interface PayFlowContract {
void showStatusLoadingDialog(PayStep status); void showStatusLoadingDialog(PayStep status);
Fragment getFragment();
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
package com.gingersoft.gsa.cloud.pay.lifecycle.fragment; package com.gingersoft.gsa.cloud.pay.device.pos.base.lifecycle.fragment;
import android.content.Intent; import android.content.Intent;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
...@@ -19,15 +19,12 @@ import com.gingersoft.gsa.cloud.order.R; ...@@ -19,15 +19,12 @@ 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.PayAction; import com.gingersoft.gsa.cloud.pay.PayAction;
import com.gingersoft.gsa.cloud.pay.PayStep; import com.gingersoft.gsa.cloud.pay.PayStep;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.gingersoft.gsa.cloud.pay.lifecycle.di.component.DaggerPayFlowComponent;
import com.gingersoft.gsa.cloud.pay.RequestParms; import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.view.customstatus.CustomStatusView; import com.gingersoft.gsa.cloud.pay.view.customstatus.CustomStatusView;
import com.jess.arms.base.BaseDialogFragment; import com.jess.arms.base.BaseDialogFragment;
import com.jess.arms.di.component.AppComponent;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract; import com.gingersoft.gsa.cloud.pay.device.pos.base.lifecycle.contract.PayFlowContract;
import butterknife.BindView; import butterknife.BindView;
...@@ -46,7 +43,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull; ...@@ -46,7 +43,7 @@ import static com.jess.arms.utils.Preconditions.checkNotNull;
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a> * <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================ * ================================================
*/ */
public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment implements PayFlowContract.View { public abstract class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment<P> implements PayFlowContract.View {
@BindView(R2.id.ll_container) @BindView(R2.id.ll_container)
LinearLayout ll_container; LinearLayout ll_container;
...@@ -55,30 +52,12 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment ...@@ -55,30 +52,12 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment
@BindView(R2.id.tv_status) @BindView(R2.id.tv_status)
TextView tv_status; TextView tv_status;
protected P mPresenter;
protected RequestParms requestParms; protected RequestParms requestParms;
protected PayAction action; protected PayAction action;
private final long mCancelDelayMillis = 2000; private final long mCancelDelayMillis = 2000;
private String mLoadingText = "支付中..."; private String mLoadingText = "支付中...";
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) {
DaggerPayFlowComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override @Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
...@@ -95,11 +74,6 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment ...@@ -95,11 +74,6 @@ 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();
requestParms = arguments.getParcelable("requestParms");
action = requestParms.getAction();
tv_status.setText(mLoadingText); tv_status.setText(mLoadingText);
ll_container.setLayoutParams(new FrameLayout.LayoutParams((int) (ArmsUtils.getScreenWidth(mContext) * 0.4), (int) (ArmsUtils.getScreenWidth(mContext) * 0.4))); ll_container.setLayoutParams(new FrameLayout.LayoutParams((int) (ArmsUtils.getScreenWidth(mContext) * 0.4), (int) (ArmsUtils.getScreenWidth(mContext) * 0.4)));
...@@ -117,7 +91,7 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment ...@@ -117,7 +91,7 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment
case SUCCESS: case SUCCESS:
loadSuccess(); loadSuccess();
break; break;
case FAILURE: default:
loadFailure(); loadFailure();
break; break;
} }
...@@ -183,11 +157,6 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment ...@@ -183,11 +157,6 @@ public class PayFlowFragment<P extends BasePresenter> extends BaseDialogFragment
}, mCancelDelayMillis); }, mCancelDelayMillis);
} }
@Override
public Fragment getFragment() {
return this;
}
public RequestParms getRequestParms() { public RequestParms getRequestParms() {
return requestParms; return requestParms;
} }
......
package com.gingersoft.gsa.cloud.pay.device.pos.bbpos; package com.gingersoft.gsa.cloud.pay.device.pos.bbpos;
import com.gingersoft.gsa.cloud.pay.device.pos.PosPayAction; import androidx.fragment.app.FragmentManager;
import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.device.pos.PosCommand;
/** /**
* @作者: bin * @作者: bin
...@@ -8,18 +10,24 @@ import com.gingersoft.gsa.cloud.pay.device.pos.PosPayAction; ...@@ -8,18 +10,24 @@ import com.gingersoft.gsa.cloud.pay.device.pos.PosPayAction;
* @更新時間: 2021-04-14 12:08 * @更新時間: 2021-04-14 12:08
* @描述: * @描述:
*/ */
public class BBPosDevice implements PosPayAction { public class BBPosCommandImp implements PosCommand {
private static BBPosDevice sBBPosDevice; private static BBPosCommandImp sBBPosDevice;
public static BBPosDevice newInstance() { public static BBPosCommandImp newInstance() {
if (sBBPosDevice == null) { if (sBBPosDevice == null) {
sBBPosDevice = new BBPosDevice(); sBBPosDevice = new BBPosCommandImp();
} }
return sBBPosDevice; return sBBPosDevice;
} }
private BBPosDevice() { private BBPosCommandImp() {
}
@Override
public void showActionDialog(FragmentManager fragmentManager, RequestParms requestParms) {
} }
@Override @Override
......
package com.gingersoft.gsa.cloud.pay.device.pos.bbpos; package com.gingersoft.gsa.cloud.pay.device.pos.bbpos;
import com.gingersoft.gsa.cloud.pay.Callback; import com.gingersoft.gsa.cloud.pay.CommandCallback;
/** /**
* @作者: bin * @作者: bin
...@@ -8,7 +8,7 @@ import com.gingersoft.gsa.cloud.pay.Callback; ...@@ -8,7 +8,7 @@ import com.gingersoft.gsa.cloud.pay.Callback;
* @更新時間: 2021-04-15 9:50 * @更新時間: 2021-04-15 9:50
* @描述: * @描述:
*/ */
public interface BBposCommand extends Callback { public interface BBposCommand extends CommandCallback {
......
package com.gingersoft.gsa.cloud.pay.device.pos.bbpos;
/**
* @作者: bin
* @創建時間: 2021-04-23 10:08
* @更新時間: 2021-04-23 10:08
* @描述:
*/
public class BBposCommandImp implements BBposCommand {
}
package com.gingersoft.gsa.cloud.pay.device.pos.hyweb; package com.gingersoft.gsa.cloud.pay.device.pos.hyweb;
import com.gingersoft.gsa.cloud.pay.Callback; import com.gingersoft.gsa.cloud.pay.CommandCallback;
/** /**
* @作者: bin * @作者: bin
...@@ -8,7 +8,7 @@ import com.gingersoft.gsa.cloud.pay.Callback; ...@@ -8,7 +8,7 @@ import com.gingersoft.gsa.cloud.pay.Callback;
* @更新時間: 2021-04-15 9:50 * @更新時間: 2021-04-15 9:50
* @描述: * @描述:
*/ */
public interface HywebCommand extends Callback { public interface HywebCommand extends CommandCallback {
......
package com.gingersoft.gsa.cloud.pay.device.pos.hyweb; package com.gingersoft.gsa.cloud.pay.device.pos.hyweb;
import androidx.fragment.app.FragmentManager;
import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.device.pos.PosPay;
import com.gingersoft.gsa.cloud.pay.PayAction;
import com.gingersoft.gsa.cloud.pay.device.pos.PosCommand;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.bg.GetTxnIdRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.pos.AdjustTipRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.pos.RefundRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.pos.RetrievalRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.pos.SaleRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.pos.VoidRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.PrintPaymentStubImpl;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.RefundActionImpl;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.RetrievalActionImpl;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.SaleActionImpl;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.SettlementActionImpl;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.TipsActionImpl;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.VoidActionImpl;
/** /**
* @作者: bin * @作者: bin
* @創建時間: 2021-04-23 10:09 * @創建時間: 2021-04-14 12:08
* @更新時間: 2021-04-23 10:09 * @更新時間: 2021-04-14 12:08
* @描述: * @描述:
*/ */
public class HywebCommandImp implements HywebCommand { public class HywebCommandImp implements PosCommand<PosPay> {
private static HywebCommandImp sHywebDevice;
public static HywebCommandImp newInstance() {
if (sHywebDevice == null) {
sHywebDevice = new HywebCommandImp();
}
return sHywebDevice;
}
private HywebCommandImp() {
}
@Override
public void showActionDialog(FragmentManager fragmentManager, RequestParms requestParms) {
}
@Override
public void void0(PosPay posPay) {
new VoidActionImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.VOID,
(VoidRequest) posPay.getPosRequest(),
(GetTxnIdRequest) posPay.getBgRequest(), (PosCallbackListener) (PosCallbackListener) posPay.getCallback(), true)
.onPosActionBefore();
}
@Override
public void tip(PosPay posPay) {
new TipsActionImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.TIP, (GetTxnIdRequest) posPay.getBgRequest(),
(AdjustTipRequest) posPay.getPosRequest(), (PosCallbackListener) posPay.getCallback(), true)
.onPosActionBefore();
}
@Override
public void retrieval(PosPay posPay) {
new RetrievalActionImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.RETRIEVAL, posPay.getRetrievalAction(), posPay.getOrderId(),
(RetrievalRequest) posPay.getPosRequest(), (PosCallbackListener) posPay.getCallback(), false);
}
@Override
public void printStub(PosPay posPay) {
new PrintPaymentStubImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.PRINT, posPay.getTxnId(),
(PosCallbackListener) posPay.getCallback(), true)
.onPosActionBefore();
}
@Override
public void settlement(PosPay posPay) {
new SettlementActionImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.SETTLEMENT, (PosCallbackListener) posPay.getCallback(), true)
.onPosActionBefore();
}
@Override
public void pay(PosPay posPay) {
new SaleActionImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.SALE, (SaleRequest) posPay.getPosRequest(),
(GetTxnIdRequest) posPay.getBgRequest(), (PosCallbackListener) posPay.getCallback(), true)
.onPosActionBefore();
}
@Override
public void refund(PosPay posPay) {
new RefundActionImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.REFUND, (RefundRequest) posPay.getPosRequest(),
(GetTxnIdRequest) posPay.getBgRequest(), (PosCallbackListener) posPay.getCallback(), true)
.onPosActionBefore();
}
} }
package com.gingersoft.gsa.cloud.pay.device.pos.hyweb;
import com.gingersoft.gsa.cloud.pay.device.pos.PosPay;
import com.gingersoft.gsa.cloud.pay.PayAction;
import com.gingersoft.gsa.cloud.pay.device.pos.PosPayAction;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.bg.GetTxnIdRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.pos.AdjustTipRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.pos.RefundRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.pos.RetrievalRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.pos.SaleRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.bean.request.pos.VoidRequest;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.PrintPaymentStubImpl;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.RefundActionImpl;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.RetrievalActionImpl;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.SaleActionImpl;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.SettlementActionImpl;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.TipsActionImpl;
import com.gingersoft.gsa.cloud.pay.device.pos.hyweb.imp.VoidActionImpl;
/**
* @作者: bin
* @創建時間: 2021-04-14 12:08
* @更新時間: 2021-04-14 12:08
* @描述:
*/
public class HywebDevice implements PosPayAction<PosPay> {
private static HywebDevice sHywebDevice;
public static HywebDevice newInstance() {
if (sHywebDevice == null) {
sHywebDevice = new HywebDevice();
}
return sHywebDevice;
}
private HywebDevice() {
}
@Override
public void void0(PosPay posPay) {
new VoidActionImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.VOID,
(VoidRequest) posPay.getPosRequest(),
(GetTxnIdRequest) posPay.getBgRequest(), (PosCallbackListener) (PosCallbackListener) posPay.getCallback(), true)
.onPosActionBefore();
}
@Override
public void tip(PosPay posPay) {
new TipsActionImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.TIP, (GetTxnIdRequest) posPay.getBgRequest(),
(AdjustTipRequest) posPay.getPosRequest(), (PosCallbackListener) posPay.getCallback(), true)
.onPosActionBefore();
}
@Override
public void retrieval(PosPay posPay) {
new RetrievalActionImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.RETRIEVAL, posPay.getRetrievalAction(), posPay.getOrderId(),
(RetrievalRequest) posPay.getPosRequest(), (PosCallbackListener) posPay.getCallback(), false);
}
@Override
public void printStub(PosPay posPay) {
new PrintPaymentStubImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.PRINT, posPay.getTxnId(),
(PosCallbackListener) posPay.getCallback(), true)
.onPosActionBefore();
}
@Override
public void settlement(PosPay posPay) {
new SettlementActionImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.SETTLEMENT, (PosCallbackListener) posPay.getCallback(), true)
.onPosActionBefore();
}
@Override
public void pay(PosPay posPay) {
new SaleActionImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.SALE, (SaleRequest) posPay.getPosRequest(),
(GetTxnIdRequest) posPay.getBgRequest(), (PosCallbackListener) posPay.getCallback(), true)
.onPosActionBefore();
}
@Override
public void refund(PosPay posPay) {
new RefundActionImpl(posPay.getContext(), posPay.getLifecycleView(), PayAction.REFUND, (RefundRequest) posPay.getPosRequest(),
(GetTxnIdRequest) posPay.getBgRequest(), (PosCallbackListener) posPay.getCallback(), true)
.onPosActionBefore();
}
}
package com.gingersoft.gsa.cloud.pay.device.pos.hyweb; package com.gingersoft.gsa.cloud.pay.device.pos.hyweb;
import com.gingersoft.gsa.cloud.pay.Callback; import com.gingersoft.gsa.cloud.pay.CommandCallback;
import com.gingersoft.gsa.cloud.pay.device.pos.base.bean.BasePosResponse; import com.gingersoft.gsa.cloud.pay.device.pos.base.bean.BasePosResponse;
/** /**
...@@ -10,7 +10,7 @@ import com.gingersoft.gsa.cloud.pay.device.pos.base.bean.BasePosResponse; ...@@ -10,7 +10,7 @@ import com.gingersoft.gsa.cloud.pay.device.pos.base.bean.BasePosResponse;
* @更新時間: 2020-12-29 20:15 * @更新時間: 2020-12-29 20:15
* @描述:POS事件回調 * @描述:POS事件回調
*/ */
public interface PosCallbackListener<T extends BasePosResponse> extends Callback<BasePosResponse> { public interface PosCallbackListener<T extends BasePosResponse> extends CommandCallback<BasePosResponse> {
/** /**
* 回調成功 * 回調成功
......
...@@ -63,7 +63,7 @@ public class RefundActionImpl extends IHywebAction<RefundRespose> { ...@@ -63,7 +63,7 @@ public class RefundActionImpl extends IHywebAction<RefundRespose> {
@Override @Override
public void onNext(String result) { public void onNext(String result) {
String error = "調起退款異常"; String error = "調起退款異常";
if (!TextUtils.isEmpty(result)) { if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class); BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
if (baseResult != null) { if (baseResult != null) {
......
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay; package com.gingersoft.gsa.cloud.pay.device.pos.yedpay;
import com.gingersoft.gsa.cloud.pay.Callback; import com.gingersoft.gsa.cloud.pay.CommandCallback;
/** /**
* @作者: bin * @作者: bin
...@@ -8,13 +8,12 @@ import com.gingersoft.gsa.cloud.pay.Callback; ...@@ -8,13 +8,12 @@ import com.gingersoft.gsa.cloud.pay.Callback;
* @更新時間: 2021-04-15 9:50 * @更新時間: 2021-04-15 9:50
* @描述: * @描述:
*/ */
public interface YedpayCommand extends Callback { public interface YedpayCommand extends CommandCallback {
void callSaleUri(String uri); void callSaleUri(String uri);
void refundResult(boolean result); void refundResult(boolean result);
void querySaleStatus(String uri); void retrieval(String uri);
void queryRefundStatus(String uri);
} }
...@@ -2,9 +2,12 @@ package com.gingersoft.gsa.cloud.pay.device.pos.yedpay; ...@@ -2,9 +2,12 @@ package com.gingersoft.gsa.cloud.pay.device.pos.yedpay;
import android.util.SparseArray; import android.util.SparseArray;
import androidx.fragment.app.FragmentManager;
import com.gingersoft.gsa.cloud.pay.RequestParms; import com.gingersoft.gsa.cloud.pay.RequestParms;
import com.gingersoft.gsa.cloud.pay.device.pos.PosPayAction; import com.gingersoft.gsa.cloud.pay.device.pos.PosCommand;
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.device.pos.yedpay.lifecycle.fragment.YedpayFragment;
/** /**
* @作者: bin * @作者: bin
...@@ -12,19 +15,19 @@ import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant; ...@@ -12,19 +15,19 @@ import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.constant.YedpayConstant;
* @更新時間: 2021-04-14 12:08 * @更新時間: 2021-04-14 12:08
* @描述: * @描述:
*/ */
public class YedpayDevice implements PosPayAction<RequestParms> { public class YedpayCommandImp implements PosCommand<RequestParms> {
private static YedpayDevice sYedpayDevice; private static YedpayCommandImp sYedpayCommand;
private final SparseArray<String> mYedpayTypeMap = new SparseArray<>(); private final SparseArray<String> mYedpayTypeMap = new SparseArray<>();
public static YedpayDevice newInstance() { public static YedpayCommandImp newInstance() {
if (sYedpayDevice == null) { if (sYedpayCommand == null) {
sYedpayDevice = new YedpayDevice(); sYedpayCommand = new YedpayCommandImp();
} }
return sYedpayDevice; return sYedpayCommand;
} }
private YedpayDevice() { private YedpayCommandImp() {
initPayTypeMap(); initPayTypeMap();
} }
...@@ -41,6 +44,12 @@ public class YedpayDevice implements PosPayAction<RequestParms> { ...@@ -41,6 +44,12 @@ public class YedpayDevice implements PosPayAction<RequestParms> {
} }
@Override @Override
public void showActionDialog(FragmentManager fragmentManager, RequestParms requestParms) {
YedpayFragment yedpayFragment = YedpayFragment.newInstance(requestParms);
yedpayFragment.show(fragmentManager, yedpayFragment.getClass().getSimpleName());
}
@Override
public void void0(RequestParms params) { public void void0(RequestParms params) {
} }
...@@ -52,9 +61,9 @@ public class YedpayDevice implements PosPayAction<RequestParms> { ...@@ -52,9 +61,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(); String uriString = "yedpayapp://transaction_detail?c=" + params.getTxnId();
YedpayCommand callback = (YedpayCommand) params.getCallback(); YedpayCommand callback = (YedpayCommand) params.getCommandCallback();
callback.querySaleStatus(uriString); callback.retrieval(uriString);
} }
@Override @Override
...@@ -70,14 +79,14 @@ public class YedpayDevice implements PosPayAction<RequestParms> { ...@@ -70,14 +79,14 @@ public class YedpayDevice implements PosPayAction<RequestParms> {
@Override @Override
public void pay(RequestParms params) { public void pay(RequestParms params) {
//String uriString = "yedpayapp://transaction?g={{ 支付方式 }}&a={{ 銀碼 }}(&c={{ 自定義編號 }})"; //String uriString = "yedpayapp://transaction?g={{ 支付方式 }}&a={{ 銀碼 }}(&c={{ 自定義編號 }})";
String uriString = "yedpayapp://transaction?g=" + getPayType(params.getPayType()) + "&a=" + params.getPayMoney() + "&c=" +params.getTxnId(); String uriString = "yedpayapp://transaction?g=" + getPayType(params.getPayType()) + "&a=" + params.getPayMoney() + "&c=" + params.getTxnId();
YedpayCommand callback = (YedpayCommand) params.getCallback(); YedpayCommand callback = (YedpayCommand) params.getCommandCallback();
callback.callSaleUri(uriString); callback.callSaleUri(uriString);
} }
@Override @Override
public void refund(RequestParms params) { public void refund(RequestParms params) {
YedpayCommand callback = (YedpayCommand) params.getCallback(); YedpayCommand callback = (YedpayCommand) params.getCommandCallback();
callback.refundResult(true); callback.refundResult(true);
} }
......
...@@ -10,6 +10,7 @@ public interface YedpayConstant { ...@@ -10,6 +10,7 @@ public interface YedpayConstant {
interface CallRequestCode { interface CallRequestCode {
int SALE_REQUEST_CODE = 555; int SALE_REQUEST_CODE = 555;
int RETRIEVAL_REQUEST_CODE = 556;
} }
...@@ -28,7 +29,7 @@ public interface YedpayConstant { ...@@ -28,7 +29,7 @@ public interface YedpayConstant {
*/ */
interface Status { interface Status {
/** /**
* 0 未支付 1 支付失败 2 支成功 3 已支付未到账 4.支付中 5.已退款 6.廢棄(第二次結賬) * 0 未支付 1 支付失败 2 支成功 3 已支付未到账 4.支付中 5.已退款 6.廢棄(第二次結賬)
*/ */
int PAY_STATUS_0 = 0; int PAY_STATUS_0 = 0;
int PAY_STATUS_1 = 1; int PAY_STATUS_1 = 1;
......
...@@ -31,7 +31,7 @@ public interface YedpayContract { ...@@ -31,7 +31,7 @@ public interface YedpayContract {
void showStatusLoadingDialog(PayStep status); void showStatusLoadingDialog(PayStep status);
void startActivityForResult(Intent intent); void startActivityForResult(Intent intent,int requestCode);
Fragment getFragment(); Fragment getFragment();
} }
...@@ -39,6 +39,10 @@ public interface YedpayContract { ...@@ -39,6 +39,10 @@ public interface YedpayContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel { interface Model extends IModel {
Single<BaseResult> getYedPayTxnId(RequestBody body);
Single<BaseResult> getYedPayRefundTxnId(RequestBody body);
Single<BaseResult> findSaleStatus(RequestBody body); Single<BaseResult> findSaleStatus(RequestBody body);
Single<BaseResult> refundOrder(RequestBody body); Single<BaseResult> refundOrder(RequestBody body);
......
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.fragment; package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.fragment;
import android.content.Intent; import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
...@@ -15,14 +10,14 @@ import androidx.annotation.Nullable; ...@@ -15,14 +10,14 @@ 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.common.logan.LoganManager;
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.PayStep;
import com.gingersoft.gsa.cloud.pay.RequestParms;
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.device.pos.yedpay.lifecycle.di.component.DaggerYedpayComponent;
import com.gingersoft.gsa.cloud.pay.device.pos.base.lifecycle.fragment.PayFlowFragment;
import com.gingersoft.gsa.cloud.pay.view.customstatus.CustomStatusView; import com.gingersoft.gsa.cloud.pay.view.customstatus.CustomStatusView;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils;
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.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.presenter.YedpayPresenter; import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.presenter.YedpayPresenter;
...@@ -52,6 +47,14 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements ...@@ -52,6 +47,14 @@ 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 YedpayFragment newInstance(RequestParms parms) {
YedpayFragment fragment = new YedpayFragment();
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 //如找不到该类,请编译一下项目
...@@ -63,9 +66,18 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements ...@@ -63,9 +66,18 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements
} }
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) {
Bundle arguments = getArguments();
requestParms = arguments.getParcelable("requestParms");
action = requestParms.getAction();
super.onCreate(savedInstanceState);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
super.initData(savedInstanceState);
mPresenter.excutePayFlow(requestParms); mPresenter.apply(requestParms);
} }
@Override @Override
...@@ -74,12 +86,13 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements ...@@ -74,12 +86,13 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements
LoganManager.w_code(TAG, "onActivityResult->" + "resultCode=" + resultCode + " requestCode=" + requestCode); LoganManager.w_code(TAG, "onActivityResult->" + "resultCode=" + resultCode + " requestCode=" + requestCode);
if (resultCode == android.app.Activity.RESULT_OK) { if (resultCode == android.app.Activity.RESULT_OK) {
switch (requestCode) { switch (requestCode) {
case YedpayConstant.CallRequestCode.SALE_REQUEST_CODE: { case YedpayConstant.CallRequestCode.SALE_REQUEST_CODE:
case YedpayConstant.CallRequestCode.RETRIEVAL_REQUEST_CODE:{
if (intent.getExtras() != null) { if (intent.getExtras() != null) {
String status = (String) intent.getExtras().get("status"); String status = (String) intent.getExtras().get("status");
String transaction_id = (String) intent.getExtras().get("transaction_id"); String transaction_id = (String) intent.getExtras().get("transaction_id");
LoganManager.w_code(TAG, "onActivityResult-》" + "status=" + status + " transaction_id=" + transaction_id); LoganManager.w_code(TAG, "onActivityResult-》" + "status=" + status + " transaction_id=" + transaction_id);
mPresenter.findSaleStatus(transaction_id, requestParms.getOrderId(), requestParms.getPayType(), requestParms.getResturantId()); mPresenter.findSaleStatus(transaction_id, requestParms.getOrderId(), requestParms.getPayType(), requestParms.getResturantId(), requestParms.getTxnId());
} }
break; break;
} }
...@@ -93,8 +106,8 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements ...@@ -93,8 +106,8 @@ public class YedpayFragment extends PayFlowFragment<YedpayPresenter> implements
} }
@Override @Override
public void startActivityForResult(Intent intent) { public void startActivityForResult(Intent intent,int requestCode) {
startActivityForResult(intent, YedpayConstant.CallRequestCode.SALE_REQUEST_CODE); startActivityForResult(intent,requestCode);
} }
@Override @Override
......
...@@ -51,6 +51,20 @@ public class YedpayModel extends BaseModel implements YedpayContract.Model { ...@@ -51,6 +51,20 @@ public class YedpayModel extends BaseModel implements YedpayContract.Model {
} }
@Override @Override
public Single<BaseResult> getYedPayTxnId(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(YedpayService.class)
.getYedPayTxnId(body)
.compose(MyRxSchedulerUtils._io_main_f());
}
@Override
public Single<BaseResult> getYedPayRefundTxnId(RequestBody body) {
return mRepositoryManager.obtainRetrofitService(YedpayService.class)
.getYedPayRefundTxnId(body)
.compose(MyRxSchedulerUtils._io_main_f());
}
@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)
......
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.bean.request;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
import lombok.Data;
/**
* @作者: bin
* @創建時間: 2021-05-06 15:01
* @更新時間: 2021-05-06 15:01
* @描述:
*/
@Data
public class GetYedPayRefundTxnIdRequest {
private Long orderId;
private Integer tableId;
private String tableExtId;
private Double amount;
}
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.bean.request;
import lombok.Data;
/**
* @作者: bin
* @創建時間: 2021-05-06 15:01
* @更新時間: 2021-05-06 15:01
* @描述:
*/
@Data
public class GetYedPayTxnIdRequest {
private Long orderId;
private Integer tableId;
private String tableExtId;
private Integer payMethodId;
private Double amount;
private Integer payType;
private String payName;
}
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.bean; package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.bean.response;
/** /**
* @作者: bin * @作者: bin
......
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.bean; package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.bean.response;
import lombok.Data; import lombok.Data;
......
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.bean.response.bg;
import lombok.Getter;
import lombok.Setter;
/**
* @作者: bin
* @創建時間: 2020-12-26 16:46
* @更新時間: 2020-12-26 16:46
* @描述:
*/
@Getter
@Setter
public class GetYedPayRefundTxnIdResponse {
private String refundId;
}
package com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.model.bean.response.bg;
import lombok.Getter;
import lombok.Setter;
/**
* @作者: bin
* @創建時間: 2020-12-26 16:46
* @更新時間: 2020-12-26 16:46
* @描述:
*/
@Getter
@Setter
public class GetYedPayTxnIdResponse {
private String txnId;
}
...@@ -17,6 +17,12 @@ import retrofit2.http.POST; ...@@ -17,6 +17,12 @@ import retrofit2.http.POST;
*/ */
public interface YedpayService { public interface YedpayService {
@POST("posPay/getYedPayTxnId" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> getYedPayTxnId(@Body RequestBody requestBody);
@POST("posPay/getYedPayRefundTxnId" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> getYedPayRefundTxnId(@Body RequestBody requestBody);
@Headers({"Domain-Name: ricepon_pay"}) @Headers({"Domain-Name: ricepon_pay"})
@POST("gsaYedPay/updatePayStatus" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @POST("gsaYedPay/updatePayStatus" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Single<BaseResult> findSaleStatus(@Body RequestBody requestBody); Single<BaseResult> findSaleStatus(@Body RequestBody requestBody);
......
package com.gingersoft.gsa.cloud.pay.lifecycle.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.gingersoft.gsa.cloud.pay.device.pos.yedpay.lifecycle.contract.YedpayContract;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.gsa.cloud.pay.lifecycle.di.module.PayFlowModule;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.gsa.cloud.pay.lifecycle.fragment.PayFlowFragment;
import com.jess.arms.mvp.BasePresenter;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/15/2021 14:44
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
@Component(modules = PayFlowModule.class, dependencies = AppComponent.class)
public interface PayFlowComponent {
void inject(PayFlowFragment fragment);
@Component.Builder
interface Builder {
@BindsInstance
PayFlowComponent.Builder view(PayFlowContract.View view);
PayFlowComponent.Builder appComponent(AppComponent appComponent);
PayFlowComponent build();
}
}
\ No newline at end of file
package com.gingersoft.gsa.cloud.pay.lifecycle.di.module;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.gsa.cloud.pay.lifecycle.contract.PayFlowContract;
import com.jess.arms.mvp.BaseModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 04/15/2021 14:44
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class PayFlowModule {
@Binds
abstract PayFlowContract.Model bindPayFlowModel(BaseModel model);
}
\ No newline at end of file
...@@ -215,6 +215,10 @@ public class OrderPayView extends LinearLayout { ...@@ -215,6 +215,10 @@ public class OrderPayView extends LinearLayout {
if (onSelectPayClickLisenter != null) { if (onSelectPayClickLisenter != null) {
onSelectPayClickLisenter.addClick(method); onSelectPayClickLisenter.addClick(method);
} }
}else {
int notifyPosition = mBillMoneyList.size() - 1;
mBillMoneyAdapter.setSelect_position(notifyPosition);
mBillMoneyAdapter.notifyDataSetChanged();
} }
}); });
mBillMoneyAdapter.setOnItemClickListener(new BillMoneyAdapter.OnItemClickListener() { mBillMoneyAdapter.setOnItemClickListener(new BillMoneyAdapter.OnItemClickListener() {
......
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