datatrans payment library integrated for twint and postfinance

This commit is contained in:
2019-12-08 18:36:14 +03:00
parent 9669c92c34
commit 551c095c34
15 changed files with 329 additions and 34 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -96,9 +96,10 @@ dependencies {
exclude group: 'com.braintreepayments.api', module: 'braintree'
}
implementation('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
transitive = true;
transitive = true
}
implementation(name:'datatrans_payment_v3.5.1', ext:'aar')
api 'com.google.guava:guava:26.0-android'
testImplementation 'junit:junit:4.12'
}

Binary file not shown.

View File

@@ -3,6 +3,9 @@ package ch.pizzaleu.android.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v7.widget.CardView;
import android.view.View;
import android.widget.FrameLayout;
import com.badoualy.stepperindicator.StepperIndicator;
import com.braintreepayments.api.dropin.utils.PaymentMethodType;
@@ -27,6 +30,8 @@ import ch.pizzaleu.android.model.cart.CartInfoModel;
public class CreateOrderActivity extends BaseActivity {
@BindView(R.id.createOrderCardView) CardView createOrderCardView;
@BindView(R.id.paymentContainerLayout) FrameLayout paymentContainerLayout;
@BindView(R.id.stepperIndicator) StepperIndicator stepperIndicator;
private FragmentManager fragmentManager;
@@ -235,6 +240,22 @@ public class CreateOrderActivity extends BaseActivity {
return orderNote;
}
public void setPaymentLayoutVisibility(final boolean show){
runOnUiThread(new Runnable() {
@Override
public void run() {
if(show){
createOrderCardView.setVisibility(View.GONE);
paymentContainerLayout.setVisibility(View.VISIBLE);
}
else {
createOrderCardView.setVisibility(View.VISIBLE);
paymentContainerLayout.setVisibility(View.GONE);
}
}
});
}
public void setOrderNote(String orderNote){
this.orderNote = orderNote;
}
@@ -266,4 +287,8 @@ public class CreateOrderActivity extends BaseActivity {
public void setPaymentMethodList(ArrayList<PaymentMethodModel> paymentMethodList) {
this.paymentMethodList = paymentMethodList;
}
public FrameLayout getPaymentContainerLayout() {
return paymentContainerLayout;
}
}

View File

@@ -21,9 +21,15 @@ public class ApiConstants {
public static final String PAYMENT_METHOD_CODE_TRANSFER = "bank_transfer"; // Kreditkarten-Kartenzahlung
public static final String PAYMENT_METHOD_CODE_TWINT = "twintcw_twint"; // TWINT
public static final String PAYMENT_METHOD_CODE_PAYPAL = "pp_standard";
public static final String PAYMENT_METHOD_CODE_POST_FINANCE_CARD = "postfinancecw_postfinancecard";
public static final String PAYMENT_METHOD_CODE_ANDROID_PAY = "android_pay";
public static final String PAYMENT_METHOD_CODE_APPLE_PAY = "apple_pay";
public static final String DATATRANS_MERCHANT_ID_TEST = "1100004450"; // Taken from Datatrans sample app
//public static final String DATATRANS_MERCHANT_ID_TEST = "1100020808"; // taken from Datatrans sandbox Demo Pusula Media GmbH
public static final String DATATRANS_REFERENCE_NUMBER_TEST = "968927"; // Taken from Datatrans sample app
public static final String DATATRANS_SIGNATURE_TEST = "30916165706580013"; // Taken from Datatrans sample app
public static final String SHIPPING_METHOD_CODE_PICK_UP_FROM_STORE = "pickup.pickup";
public static final String CART_SUBTOTAL = "zwischensumme";

View File

@@ -45,9 +45,11 @@ public class ApiEndPoints {
public static final String API_REMOVE_RPODUCT_FORM_CART = PREFIX + "removeProductFromBasket" + SUFFIX + "&token=";
public static final String API_GET_ORDER_PRODUCT_LIST = PREFIX + "getOrderProducts" + SUFFIX + "&token=";
public static final String API_CHECK_COUPON = PREFIX + "checkCoupon" + SUFFIX + "&token=";
public static final String API_CREATE_PAYMENT = PREFIX + "checkBrainTreePayment" + SUFFIX + "&token=";
public static final String API_CREATE_BRAINTREE_PAYMENT = PREFIX + "checkBrainTreePayment" + SUFFIX + "&token=";
public static final String API_REPEAT_ORDER = PREFIX + "reOrder" + SUFFIX + "&token=";
public static final String API_CHECK_ORDER_PRICE = PREFIX + "checkOrderPrice" + SUFFIX + "&token=";
public static final String API_CREATE_PAYMENT_TOKEN = PREFIX + "createPaymentToken" + SUFFIX + "&token=";
public static final String API_CREATE_BRAINTREE_PAYMENT_TOKEN = PREFIX + "createBraintreePaymentToken" + SUFFIX + "&token=";
public static final String API_GET_DATATRANS_INFO = PREFIX + "getDatatransInfo" + SUFFIX + "&token=";
public static final String API_CREATE_DATATRANS_PAYMENT = PREFIX + "checkDatatransPayment" + SUFFIX + "&token=";
}

View File

@@ -10,6 +10,7 @@ import ch.pizzaleu.android.model.CampaignBannerModel;
import ch.pizzaleu.android.model.CampaignModel;
import ch.pizzaleu.android.model.CheckCouponModel;
import ch.pizzaleu.android.model.CountryModel;
import ch.pizzaleu.android.model.DatatransInitInfoModel;
import ch.pizzaleu.android.model.DeleteAddressResponseModel;
import ch.pizzaleu.android.model.PaymentMethodsResponseModel;
import ch.pizzaleu.android.model.PaymentTokenModel;
@@ -212,8 +213,13 @@ public interface ApiInterface {
@FormUrlEncoded
@POST
Call<ResponseObject> createPayment(@Url String url,
@FieldMap HashMap<String, Object> body);
Call<ResponseObject> createBraintreePayment(@Url String url,
@FieldMap HashMap<String, Object> body);
@FormUrlEncoded
@POST
Call<ResponseObject> createDatatransPayment(@Url String url,
@FieldMap HashMap<String, Object> body);
@FormUrlEncoded
@POST
@@ -232,7 +238,10 @@ public interface ApiInterface {
@FieldMap HashMap<String, Object> body);
@GET
Call<ResponseObject<PaymentTokenModel>> createPaymentToken(@Url String url);
Call<ResponseObject<PaymentTokenModel>> createBraintreePaymentToken(@Url String url);
@GET
Call<ResponseObject<DatatransInitInfoModel>> getDatatransInitInfoModel(@Url String url);
@GET(ApiEndPoints.API_GET_CAMPAIGN_BANNERS)
Call<ResponseArray<CampaignBannerModel>> getCampaignBanners();

View File

@@ -27,11 +27,21 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Random;
import butterknife.BindString;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import ch.datatrans.payment.AliasPaymentMethod;
import ch.datatrans.payment.BusinessException;
import ch.datatrans.payment.Payment;
import ch.datatrans.payment.PaymentMethod;
import ch.datatrans.payment.PaymentMethodType;
import ch.datatrans.payment.android.DisplayContext;
import ch.datatrans.payment.android.IPaymentProcessStateListener;
import ch.datatrans.payment.android.PaymentProcessAndroid;
import ch.datatrans.payment.android.ResourceProvider;
import ch.pizzaleu.android.R;
import ch.pizzaleu.android.activity.BaseActivity;
import ch.pizzaleu.android.activity.CreateOrderActivity;
@@ -46,6 +56,7 @@ import ch.pizzaleu.android.helper.DialogHelper;
import ch.pizzaleu.android.helper.PriceHelper;
import ch.pizzaleu.android.helper.SessionHelper;
import ch.pizzaleu.android.helper.SharedPrefsHelper;
import ch.pizzaleu.android.model.DatatransInitInfoModel;
import ch.pizzaleu.android.model.PaymentMethodModel;
import ch.pizzaleu.android.model.PaymentTokenModel;
import ch.pizzaleu.android.model.StoreShiftModel;
@@ -61,7 +72,7 @@ import retrofit2.Response;
* Created by cimenmus on 17/10/2017.
*/
public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
public class CreateOrderSummaryFragment extends CreateOrderBaseFragment implements IPaymentProcessStateListener {
@BindView(R.id.orderPersonFullnamePizzalinkInfoLayout) AppInfoView orderPersonFullnamePizzalinkInfoLayout;
@BindView(R.id.orderShippingMethodPizzalinkInfoLayout) AppInfoView orderShippingMethodPizzalinkInfoLayout;
@@ -98,6 +109,7 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
private ProductOnOrderSummaryRecyclerAdapter productOnOrderSummaryRecyclerAdapter;
private StoreShiftModel storeShiftModel;
private PaymentTokenModel braintreePaymentTokenModel;
private DatatransInitInfoModel datatransInitInfoModel;
public CreateOrderSummaryFragment() {}
@@ -359,7 +371,7 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
}
else if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TWINT) {
DialogHelper.hideLoadingDialog();
startTwintPayment();
startDatatransPayment();
}
else {
DialogHelper.hideLoadingDialog();
@@ -535,22 +547,21 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TRANSFER){
createOrder(null);
}
/*
else if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TWINT) {
else if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TWINT ||
createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.POST_FINANCE_CARD) {
DialogHelper.hideLoadingDialog();
startTwintPayment();
startDatatransPayment();
}
*/
else {
DialogHelper.hideLoadingDialog();
startBraintreePayment();
}
}
private void createOrder(String paymentMethodNonce){
private void createOrder(HashMap<String, Object> params){
DialogHelper.showLoadingDialog();
Call<ResponseObject<Integer>> call = ApiService.apiInterface.createOrder(
"/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_CREATE_ORDER + SessionHelper.getCustomerToken().getToken(), getCreateOrderParams(paymentMethodNonce));
"/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_CREATE_ORDER + SessionHelper.getCustomerToken().getToken(), params);
call.enqueue(new Callback<ResponseObject<Integer>>() {
@Override
public void onResponse(Call<ResponseObject<Integer>> call, Response<ResponseObject<Integer>> response) {
@@ -571,6 +582,7 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
});
}
// for braintree payment
private HashMap<String, Object> getCreateOrderParams(String paymentMethodNonce){
HashMap<String, Object> params = new HashMap<>();
params.put("customer_id", SessionHelper.getUser().getId());
@@ -596,6 +608,34 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
return params;
}
// for datatrans payment
private HashMap<String, Object> getCreateOrderParams(String datatransTransactionId, String datatransPaymentMethodName){
HashMap<String, Object> params = new HashMap<>();
params.put("customer_id", SessionHelper.getUser().getId());
params.put("shipping_method_title", createOrderActivity.getSelectedShippingMethod().getTitle());
params.put("shipping_method_code", createOrderActivity.getSelectedShippingMethod().getCode());
params.put("address_id", createOrderActivity.getSelectedShippingAddress().getId());
params.put("payment_method_title", createOrderActivity.getSelectedPaymentMethod().getTitle());
params.put("payment_method_code", createOrderActivity.getSelectedPaymentMethod().getCode());
params.put("comment", createOrderNote());
params.put("is_pizza_pass_campaign", createOrderActivity.getCartInfo().isPizzapassCampaignUsed());
params.put("is_kebap_pass_campaign", createOrderActivity.getCartInfo().isKebappassCampaignUsed());
params.put("application_id", ApiConstants.APP_TYPE_ID_ANDROID);
params.put("datatrans_merchant_id", datatransInitInfoModel.getMerchantId());
params.put("datatrans_ref_no", datatransInitInfoModel.getReferenceNumber());
params.put("datatrans_transaction_id", datatransTransactionId);
params.put("datatrans_payment_method_name", datatransPaymentMethodName);
if(SessionHelper.getSelectedCoupon() != null){
params.put("coupon", SessionHelper.getSelectedCoupon().getCode());
}
if(dateOfOrderString != null && !dateOfOrderString.isEmpty() &&
timeOfOrder != null && !timeOfOrder.isEmpty()){
params.put("delivery_date", dateOfOrderString + " " + timeOfOrder);
}
return params;
}
private String createOrderNote(){
CreateOrderActivity createOrderActivity = (CreateOrderActivity) BaseActivity.currentActivity;
@@ -729,7 +769,8 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
cartTotalList.clear();
cartTotalList.addAll(cartInfoModel.getTotalsList());
orderPriceRecyclerAdapter.notifyDataSetChanged();
createPaymentToken();
createBraintreePaymentToken();
getDatatransInitInfoModel();
}
else {
DialogHelper.hideLoadingDialog();
@@ -745,10 +786,10 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
});
}
private void createPaymentToken(){
private void createBraintreePaymentToken(){
Call<ResponseObject<PaymentTokenModel>> call = ApiService.apiInterface.createPaymentToken(
"/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_CREATE_PAYMENT_TOKEN + SessionHelper.getCustomerToken().getToken());
Call<ResponseObject<PaymentTokenModel>> call = ApiService.apiInterface.createBraintreePaymentToken(
"/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_CREATE_BRAINTREE_PAYMENT_TOKEN + SessionHelper.getCustomerToken().getToken());
call.enqueue(new Callback<ResponseObject<PaymentTokenModel>>() {
@Override
@@ -773,6 +814,34 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
});
}
private void getDatatransInitInfoModel(){
Call<ResponseObject<DatatransInitInfoModel>> call = ApiService.apiInterface.getDatatransInitInfoModel(
"/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_GET_DATATRANS_INFO + SessionHelper.getCustomerToken().getToken());
call.enqueue(new Callback<ResponseObject<DatatransInitInfoModel>>() {
@Override
public void onResponse(Call<ResponseObject<DatatransInitInfoModel>> call, Response<ResponseObject<DatatransInitInfoModel>> response) {
DialogHelper.hideLoadingDialog();
if(response.isSuccessful() &&
response.body().getData() != null &&
response.body().isSuccess()){
datatransInitInfoModel = response.body().getData();
Log.i("fuhrfuhruhfr", "fhurhfurfhurfh");
}
else {
ApiErrorUtils.parseError(response);
}
}
@Override
public void onFailure(Call<ResponseObject<DatatransInitInfoModel>> call, Throwable t) {
DialogHelper.hideLoadingDialog();
DialogHelper.showFailedDialog();
}
});
}
private void startBraintreePayment(){
// CVV kodu default olarak gozukmuyor.
@@ -820,14 +889,130 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
startActivityForResult(paymentRequest.getIntent(BaseActivity.currentActivity), REQUEST_CODE_BRAINTREE_PAYMENT);
}
private void startTwintPayment(){
private void startDatatransPayment(){
if(datatransInitInfoModel == null ||
datatransInitInfoModel.getMerchantId().isEmpty() ||
datatransInitInfoModel.getReferenceNumber().isEmpty()){
/*
datatransInitInfoModel = new DatatransInitInfoModel(
ApiConstants.DATATRANS_MERCHANT_ID_TEST,
String.valueOf(Integer.valueOf(ApiConstants.DATATRANS_REFERENCE_NUMBER_TEST) + new Random().nextInt(1000)));
*/
DialogHelper.showAlertDialog(BaseActivity.currentActivity, getString(R.string.something_went_wrong));
return;
}
String currencyCode = "CHF";
String amountString = PriceHelper.removeCurrencyFromPrice(cartTotalList.get(cartTotalList.size() - 1).getText());
double amountDouble;
int amountInt;
try {
amountDouble = Double.valueOf(amountString);
amountDouble *= 100; // we have to multiply amount with 100 -> e.g. if amout is CHF 10, you have to send 10*100 = 1000
amountInt = (int) amountDouble;
}catch (Exception e){
e.printStackTrace();
return;
}
String signature = null;
//DisplayContext displayContext = new DisplayContext(new ResourceProvider(), createOrderActivity);
DisplayContext displayContext = new DisplayContext(new ResourceProvider(), createOrderActivity.getPaymentContainerLayout());
// Payment method selection/input by library (standard mode)
Payment payment = new Payment(datatransInitInfoModel.getMerchantId(), datatransInitInfoModel.getReferenceNumber(), currencyCode, amountInt, signature);
ArrayList<PaymentMethod> datatransPaymentMethods = new ArrayList<>();
/*
datatransPaymentMethods.add(new PaymentMethod(PaymentMethodType.VISA));
datatransPaymentMethods.add(new PaymentMethod(PaymentMethodType.MASTERCARD));
datatransPaymentMethods.add(new PaymentMethod(PaymentMethodType.AMEX));
datatransPaymentMethods.add(new PaymentMethod(PaymentMethodType.DINERS));
datatransPaymentMethods.add(new PaymentMethod(PaymentMethodType.JCB));
datatransPaymentMethods.add(new PaymentMethod(PaymentMethodType.PAYPAL));
*/
if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TWINT){
datatransPaymentMethods.add(new PaymentMethod(PaymentMethodType.TWINT));
}
else if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.POST_FINANCE_CARD){
datatransPaymentMethods.add(new PaymentMethod(PaymentMethodType.PFCARD));
}
else {
return;
}
PaymentProcessAndroid datatransPaymentProcess = new PaymentProcessAndroid(displayContext, payment, datatransPaymentMethods);
/*
//Payment method preselected by app, input by library
PaymentMethodType selectedPaymentMethodType;
if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TWINT){
selectedPaymentMethodType = PaymentMethodType.TWINT;
}
else if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.POST_FINANCE_CARD){
selectedPaymentMethodType = PaymentMethodType.PFCARD;
}
else {
return;
}
AliasRequest aliasRequest = new AliasRequest(merchantId, currencyCode, new PaymentMethod(selectedPaymentMethodType));
PaymentProcessAndroid datatransPaymentProcess = new PaymentProcessAndroid(displayContext, aliasRequest);
*/
// common part
datatransPaymentProcess.setTestingEnabled(true);
datatransPaymentProcess.addStateListener(this);
datatransPaymentProcess.start();
}
@Override
public void paymentProcessStateChanged(PaymentProcessAndroid datatransPaymentProcess) {
switch (datatransPaymentProcess.getState()) {
case STARTED:
createOrderActivity.setPaymentLayoutVisibility(true);
break;
case NOT_STARTED:
createOrderActivity.setPaymentLayoutVisibility(false);
break;
case COMPLETED:
createOrderActivity.setPaymentLayoutVisibility(false);
String transcationId = datatransPaymentProcess.getTransactionId();
String paymentMethodName = datatransPaymentProcess.getPaymentMethodType().getName();
AliasPaymentMethod aliasPaymentMethod = datatransPaymentProcess.getAliasPaymentMethod();
if (aliasPaymentMethod != null) {
String json = aliasPaymentMethod.toJson();
Log.i("dgyef", "vryf");
// serialize and securely store aliasPaymentMethod for reuse
}
createDatatransPayment(transcationId, paymentMethodName);
break;
case CANCELED:
createOrderActivity.setPaymentLayoutVisibility(false);
DialogHelper.showAlertDialog(BaseActivity.currentActivity, paymentCanceledText);
break;
case ERROR:
createOrderActivity.setPaymentLayoutVisibility(false);
Exception e = datatransPaymentProcess.getException();
if (e instanceof BusinessException) {
BusinessException be = (BusinessException)e;
int errorCode = be.getErrorCode();// Datatrans error code if needed
// display some error message
} else {
// unexpected technical exception, either fatal TechnicalException or // javax.net.ssl.SSLException (certificate error)
}
DialogHelper.showAlertDialog(BaseActivity.currentActivity, e.getMessage());
break;
}
}
private void createBraintreePayment(final DropInResult dropInResult){
DialogHelper.showLoadingDialog();
Call<ResponseObject> call = ApiService.apiInterface.createPayment(
"/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_CREATE_PAYMENT + SessionHelper.getCustomerToken().getToken(),
Call<ResponseObject> call = ApiService.apiInterface.createBraintreePayment(
"/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_CREATE_BRAINTREE_PAYMENT + SessionHelper.getCustomerToken().getToken(),
getBraintreePaymentParams(dropInResult));
call.enqueue(new Callback<ResponseObject>() {
@Override
@@ -836,14 +1021,44 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
if(response.isSuccessful() &&
response.body().getData() != null &&
response.body().isSuccess()){
createOrder(dropInResult.getPaymentMethodNonce().getNonce());
createOrder(getCreateOrderParams(dropInResult.getPaymentMethodNonce().getNonce()));
}
else {
ApiErrorUtils.parseError(response);
}
}
@Override
public void onFailure(Call<ResponseObject> call, Throwable t) {
DialogHelper.hideLoadingDialog();
DialogHelper.showFailedDialog();
}
});
}
private void createDatatransPayment(final String transactionId, final String datatransPaymentMethodName){
DialogHelper.showLoadingDialog();
HashMap<String, Object> params = new HashMap<>();
params.put("merchant_id", datatransInitInfoModel.getMerchantId());
params.put("ref_no", datatransInitInfoModel.getReferenceNumber());
params.put("transaction_id", transactionId);
params.put("datatrans_payment_method_name", datatransPaymentMethodName);
params.put("amount", PriceHelper.removeCurrencyFromPrice(createOrderActivity.getCartInfo().getCartTotalModel().getText()));
Call<ResponseObject> call = ApiService.apiInterface.createDatatransPayment(
"/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_CREATE_DATATRANS_PAYMENT + SessionHelper.getCustomerToken().getToken(), params);
call.enqueue(new Callback<ResponseObject>() {
@Override
public void onResponse(Call<ResponseObject> call, final Response<ResponseObject> response) {
DialogHelper.hideLoadingDialog();
if(response.isSuccessful() &&
response.body().getData() != null &&
response.body().isSuccess()){
createOrder(getCreateOrderParams(transactionId, datatransPaymentMethodName));
}
else {
ApiErrorUtils.parseError(response);
/*
// dummy //
createOrder(dropInResult.getPaymentMethodNonce().getNonce());
*/
}
}
@@ -1129,5 +1344,4 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
return endTime;
}
}
}

View File

@@ -160,13 +160,6 @@ public class PaymentMethodFragment extends CreateOrderBaseFragment {
}
}
for(PaymentMethodModel paymentMethodModel : paymentMethodModels){
if(paymentMethodModel.getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TWINT){
paymentMethodModels.remove(paymentMethodModel);
break;
}
}
/*
// dummy //

View File

@@ -0,0 +1,31 @@
package ch.pizzaleu.android.model;
import com.google.gson.annotations.SerializedName;
public class DatatransInitInfoModel {
@SerializedName("merchant_id")
private String merchantId;
@SerializedName("ref_no")
private String referenceNumber;
public DatatransInitInfoModel(String merchantId, String referenceNumber) {
this.merchantId = merchantId;
this.referenceNumber = referenceNumber;
}
public String getMerchantId() {
if(merchantId == null){
merchantId = "";
}
return merchantId;
}
public String getReferenceNumber() {
if(referenceNumber == null){
referenceNumber = "";
}
return referenceNumber;
}
}

View File

@@ -29,6 +29,7 @@ public class PaymentMethodModel {
TRANSFER,
PAYPAL,
TWINT,
POST_FINANCE_CARD,
ANDROID_PAY,
APPLE_PAY,
UNKNOWN
@@ -77,6 +78,8 @@ public class PaymentMethodModel {
return PaymentMethodType.PAYPAL;
case ApiConstants.PAYMENT_METHOD_CODE_TWINT:
return PaymentMethodType.TWINT;
case ApiConstants.PAYMENT_METHOD_CODE_POST_FINANCE_CARD:
return PaymentMethodType.POST_FINANCE_CARD;
case ApiConstants.PAYMENT_METHOD_CODE_ANDROID_PAY:
return PaymentMethodType.ANDROID_PAY;
case ApiConstants.PAYMENT_METHOD_CODE_APPLE_PAY:

View File

@@ -31,6 +31,7 @@
android:src="@drawable/background_wood" />
<android.support.v7.widget.CardView
android:id="@+id/createOrderCardView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
@@ -78,6 +79,13 @@
</android.support.v7.widget.CardView>
<FrameLayout
android:id="@+id/paymentContainerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:visibility="gone"/>
</RelativeLayout>
</RelativeLayout>

View File

@@ -21,6 +21,9 @@ allprojects {
maven { url 'https://jitpack.io' }
maven { url "https://maven.google.com" }
google()
flatDir {
dirs 'libs'
}
}
}

Binary file not shown.