datatrans payment library integrated for twint and postfinance
This commit is contained in:
BIN
.idea/caches/build_file_checksums.ser
generated
BIN
.idea/caches/build_file_checksums.ser
generated
Binary file not shown.
BIN
.idea/caches/gradle_models.ser
generated
BIN
.idea/caches/gradle_models.ser
generated
Binary file not shown.
@@ -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'
|
||||
}
|
||||
|
||||
BIN
app/libs/datatrans_payment_v3.5.1.aar
Normal file
BIN
app/libs/datatrans_payment_v3.5.1.aar
Normal file
Binary file not shown.
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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=";
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -160,13 +160,6 @@ public class PaymentMethodFragment extends CreateOrderBaseFragment {
|
||||
}
|
||||
}
|
||||
|
||||
for(PaymentMethodModel paymentMethodModel : paymentMethodModels){
|
||||
if(paymentMethodModel.getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TWINT){
|
||||
paymentMethodModels.remove(paymentMethodModel);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
// dummy //
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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:
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -21,6 +21,9 @@ allprojects {
|
||||
maven { url 'https://jitpack.io' }
|
||||
maven { url "https://maven.google.com" }
|
||||
google()
|
||||
flatDir {
|
||||
dirs 'libs'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BIN
datatrans_android_library.zip
Normal file
BIN
datatrans_android_library.zip
Normal file
Binary file not shown.
Reference in New Issue
Block a user