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'
|
exclude group: 'com.braintreepayments.api', module: 'braintree'
|
||||||
}
|
}
|
||||||
implementation('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
|
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'
|
api 'com.google.guava:guava:26.0-android'
|
||||||
testImplementation 'junit:junit:4.12'
|
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.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.FragmentManager;
|
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.badoualy.stepperindicator.StepperIndicator;
|
||||||
import com.braintreepayments.api.dropin.utils.PaymentMethodType;
|
import com.braintreepayments.api.dropin.utils.PaymentMethodType;
|
||||||
@@ -27,6 +30,8 @@ import ch.pizzaleu.android.model.cart.CartInfoModel;
|
|||||||
|
|
||||||
public class CreateOrderActivity extends BaseActivity {
|
public class CreateOrderActivity extends BaseActivity {
|
||||||
|
|
||||||
|
@BindView(R.id.createOrderCardView) CardView createOrderCardView;
|
||||||
|
@BindView(R.id.paymentContainerLayout) FrameLayout paymentContainerLayout;
|
||||||
@BindView(R.id.stepperIndicator) StepperIndicator stepperIndicator;
|
@BindView(R.id.stepperIndicator) StepperIndicator stepperIndicator;
|
||||||
|
|
||||||
private FragmentManager fragmentManager;
|
private FragmentManager fragmentManager;
|
||||||
@@ -235,6 +240,22 @@ public class CreateOrderActivity extends BaseActivity {
|
|||||||
return orderNote;
|
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){
|
public void setOrderNote(String orderNote){
|
||||||
this.orderNote = orderNote;
|
this.orderNote = orderNote;
|
||||||
}
|
}
|
||||||
@@ -266,4 +287,8 @@ public class CreateOrderActivity extends BaseActivity {
|
|||||||
public void setPaymentMethodList(ArrayList<PaymentMethodModel> paymentMethodList) {
|
public void setPaymentMethodList(ArrayList<PaymentMethodModel> paymentMethodList) {
|
||||||
this.paymentMethodList = 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_TRANSFER = "bank_transfer"; // Kreditkarten-Kartenzahlung
|
||||||
public static final String PAYMENT_METHOD_CODE_TWINT = "twintcw_twint"; // TWINT
|
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_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_ANDROID_PAY = "android_pay";
|
||||||
public static final String PAYMENT_METHOD_CODE_APPLE_PAY = "apple_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 SHIPPING_METHOD_CODE_PICK_UP_FROM_STORE = "pickup.pickup";
|
||||||
|
|
||||||
public static final String CART_SUBTOTAL = "zwischensumme";
|
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_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_GET_ORDER_PRODUCT_LIST = PREFIX + "getOrderProducts" + SUFFIX + "&token=";
|
||||||
public static final String API_CHECK_COUPON = PREFIX + "checkCoupon" + 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_REPEAT_ORDER = PREFIX + "reOrder" + SUFFIX + "&token=";
|
||||||
public static final String API_CHECK_ORDER_PRICE = PREFIX + "checkOrderPrice" + 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.CampaignModel;
|
||||||
import ch.pizzaleu.android.model.CheckCouponModel;
|
import ch.pizzaleu.android.model.CheckCouponModel;
|
||||||
import ch.pizzaleu.android.model.CountryModel;
|
import ch.pizzaleu.android.model.CountryModel;
|
||||||
|
import ch.pizzaleu.android.model.DatatransInitInfoModel;
|
||||||
import ch.pizzaleu.android.model.DeleteAddressResponseModel;
|
import ch.pizzaleu.android.model.DeleteAddressResponseModel;
|
||||||
import ch.pizzaleu.android.model.PaymentMethodsResponseModel;
|
import ch.pizzaleu.android.model.PaymentMethodsResponseModel;
|
||||||
import ch.pizzaleu.android.model.PaymentTokenModel;
|
import ch.pizzaleu.android.model.PaymentTokenModel;
|
||||||
@@ -212,8 +213,13 @@ public interface ApiInterface {
|
|||||||
|
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST
|
@POST
|
||||||
Call<ResponseObject> createPayment(@Url String url,
|
Call<ResponseObject> createBraintreePayment(@Url String url,
|
||||||
@FieldMap HashMap<String, Object> body);
|
@FieldMap HashMap<String, Object> body);
|
||||||
|
|
||||||
|
@FormUrlEncoded
|
||||||
|
@POST
|
||||||
|
Call<ResponseObject> createDatatransPayment(@Url String url,
|
||||||
|
@FieldMap HashMap<String, Object> body);
|
||||||
|
|
||||||
@FormUrlEncoded
|
@FormUrlEncoded
|
||||||
@POST
|
@POST
|
||||||
@@ -232,7 +238,10 @@ public interface ApiInterface {
|
|||||||
@FieldMap HashMap<String, Object> body);
|
@FieldMap HashMap<String, Object> body);
|
||||||
|
|
||||||
@GET
|
@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)
|
@GET(ApiEndPoints.API_GET_CAMPAIGN_BANNERS)
|
||||||
Call<ResponseArray<CampaignBannerModel>> getCampaignBanners();
|
Call<ResponseArray<CampaignBannerModel>> getCampaignBanners();
|
||||||
|
|||||||
@@ -27,11 +27,21 @@ import java.util.ArrayList;
|
|||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
import butterknife.BindString;
|
import butterknife.BindString;
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import butterknife.OnClick;
|
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.R;
|
||||||
import ch.pizzaleu.android.activity.BaseActivity;
|
import ch.pizzaleu.android.activity.BaseActivity;
|
||||||
import ch.pizzaleu.android.activity.CreateOrderActivity;
|
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.PriceHelper;
|
||||||
import ch.pizzaleu.android.helper.SessionHelper;
|
import ch.pizzaleu.android.helper.SessionHelper;
|
||||||
import ch.pizzaleu.android.helper.SharedPrefsHelper;
|
import ch.pizzaleu.android.helper.SharedPrefsHelper;
|
||||||
|
import ch.pizzaleu.android.model.DatatransInitInfoModel;
|
||||||
import ch.pizzaleu.android.model.PaymentMethodModel;
|
import ch.pizzaleu.android.model.PaymentMethodModel;
|
||||||
import ch.pizzaleu.android.model.PaymentTokenModel;
|
import ch.pizzaleu.android.model.PaymentTokenModel;
|
||||||
import ch.pizzaleu.android.model.StoreShiftModel;
|
import ch.pizzaleu.android.model.StoreShiftModel;
|
||||||
@@ -61,7 +72,7 @@ import retrofit2.Response;
|
|||||||
* Created by cimenmus on 17/10/2017.
|
* 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.orderPersonFullnamePizzalinkInfoLayout) AppInfoView orderPersonFullnamePizzalinkInfoLayout;
|
||||||
@BindView(R.id.orderShippingMethodPizzalinkInfoLayout) AppInfoView orderShippingMethodPizzalinkInfoLayout;
|
@BindView(R.id.orderShippingMethodPizzalinkInfoLayout) AppInfoView orderShippingMethodPizzalinkInfoLayout;
|
||||||
@@ -98,6 +109,7 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
|
|||||||
private ProductOnOrderSummaryRecyclerAdapter productOnOrderSummaryRecyclerAdapter;
|
private ProductOnOrderSummaryRecyclerAdapter productOnOrderSummaryRecyclerAdapter;
|
||||||
private StoreShiftModel storeShiftModel;
|
private StoreShiftModel storeShiftModel;
|
||||||
private PaymentTokenModel braintreePaymentTokenModel;
|
private PaymentTokenModel braintreePaymentTokenModel;
|
||||||
|
private DatatransInitInfoModel datatransInitInfoModel;
|
||||||
|
|
||||||
public CreateOrderSummaryFragment() {}
|
public CreateOrderSummaryFragment() {}
|
||||||
|
|
||||||
@@ -359,7 +371,7 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
|
|||||||
}
|
}
|
||||||
else if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TWINT) {
|
else if(createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TWINT) {
|
||||||
DialogHelper.hideLoadingDialog();
|
DialogHelper.hideLoadingDialog();
|
||||||
startTwintPayment();
|
startDatatransPayment();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
DialogHelper.hideLoadingDialog();
|
DialogHelper.hideLoadingDialog();
|
||||||
@@ -535,22 +547,21 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
|
|||||||
createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TRANSFER){
|
createOrderActivity.getSelectedPaymentMethod().getPaymentMethodType() == PaymentMethodModel.PaymentMethodType.TRANSFER){
|
||||||
createOrder(null);
|
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();
|
DialogHelper.hideLoadingDialog();
|
||||||
startTwintPayment();
|
startDatatransPayment();
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
else {
|
else {
|
||||||
DialogHelper.hideLoadingDialog();
|
DialogHelper.hideLoadingDialog();
|
||||||
startBraintreePayment();
|
startBraintreePayment();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createOrder(String paymentMethodNonce){
|
private void createOrder(HashMap<String, Object> params){
|
||||||
DialogHelper.showLoadingDialog();
|
DialogHelper.showLoadingDialog();
|
||||||
Call<ResponseObject<Integer>> call = ApiService.apiInterface.createOrder(
|
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>>() {
|
call.enqueue(new Callback<ResponseObject<Integer>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(Call<ResponseObject<Integer>> call, Response<ResponseObject<Integer>> response) {
|
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){
|
private HashMap<String, Object> getCreateOrderParams(String paymentMethodNonce){
|
||||||
HashMap<String, Object> params = new HashMap<>();
|
HashMap<String, Object> params = new HashMap<>();
|
||||||
params.put("customer_id", SessionHelper.getUser().getId());
|
params.put("customer_id", SessionHelper.getUser().getId());
|
||||||
@@ -596,6 +608,34 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
|
|||||||
return params;
|
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(){
|
private String createOrderNote(){
|
||||||
|
|
||||||
CreateOrderActivity createOrderActivity = (CreateOrderActivity) BaseActivity.currentActivity;
|
CreateOrderActivity createOrderActivity = (CreateOrderActivity) BaseActivity.currentActivity;
|
||||||
@@ -729,7 +769,8 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
|
|||||||
cartTotalList.clear();
|
cartTotalList.clear();
|
||||||
cartTotalList.addAll(cartInfoModel.getTotalsList());
|
cartTotalList.addAll(cartInfoModel.getTotalsList());
|
||||||
orderPriceRecyclerAdapter.notifyDataSetChanged();
|
orderPriceRecyclerAdapter.notifyDataSetChanged();
|
||||||
createPaymentToken();
|
createBraintreePaymentToken();
|
||||||
|
getDatatransInitInfoModel();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
DialogHelper.hideLoadingDialog();
|
DialogHelper.hideLoadingDialog();
|
||||||
@@ -745,10 +786,10 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createPaymentToken(){
|
private void createBraintreePaymentToken(){
|
||||||
|
|
||||||
Call<ResponseObject<PaymentTokenModel>> call = ApiService.apiInterface.createPaymentToken(
|
Call<ResponseObject<PaymentTokenModel>> call = ApiService.apiInterface.createBraintreePaymentToken(
|
||||||
"/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_CREATE_PAYMENT_TOKEN + SessionHelper.getCustomerToken().getToken());
|
"/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_CREATE_BRAINTREE_PAYMENT_TOKEN + SessionHelper.getCustomerToken().getToken());
|
||||||
|
|
||||||
call.enqueue(new Callback<ResponseObject<PaymentTokenModel>>() {
|
call.enqueue(new Callback<ResponseObject<PaymentTokenModel>>() {
|
||||||
@Override
|
@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(){
|
private void startBraintreePayment(){
|
||||||
|
|
||||||
// CVV kodu default olarak gozukmuyor.
|
// CVV kodu default olarak gozukmuyor.
|
||||||
@@ -820,14 +889,130 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
|
|||||||
startActivityForResult(paymentRequest.getIntent(BaseActivity.currentActivity), REQUEST_CODE_BRAINTREE_PAYMENT);
|
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){
|
private void createBraintreePayment(final DropInResult dropInResult){
|
||||||
DialogHelper.showLoadingDialog();
|
DialogHelper.showLoadingDialog();
|
||||||
Call<ResponseObject> call = ApiService.apiInterface.createPayment(
|
Call<ResponseObject> call = ApiService.apiInterface.createBraintreePayment(
|
||||||
"/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_CREATE_PAYMENT + SessionHelper.getCustomerToken().getToken(),
|
"/" + SessionHelper.getSelectedStore().getStoreName() + ApiEndPoints.API_CREATE_BRAINTREE_PAYMENT + SessionHelper.getCustomerToken().getToken(),
|
||||||
getBraintreePaymentParams(dropInResult));
|
getBraintreePaymentParams(dropInResult));
|
||||||
call.enqueue(new Callback<ResponseObject>() {
|
call.enqueue(new Callback<ResponseObject>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -836,14 +1021,44 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
|
|||||||
if(response.isSuccessful() &&
|
if(response.isSuccessful() &&
|
||||||
response.body().getData() != null &&
|
response.body().getData() != null &&
|
||||||
response.body().isSuccess()){
|
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 {
|
else {
|
||||||
ApiErrorUtils.parseError(response);
|
ApiErrorUtils.parseError(response);
|
||||||
/*
|
|
||||||
// dummy //
|
|
||||||
createOrder(dropInResult.getPaymentMethodNonce().getNonce());
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1129,5 +1344,4 @@ public class CreateOrderSummaryFragment extends CreateOrderBaseFragment {
|
|||||||
return endTime;
|
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 //
|
// 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,
|
TRANSFER,
|
||||||
PAYPAL,
|
PAYPAL,
|
||||||
TWINT,
|
TWINT,
|
||||||
|
POST_FINANCE_CARD,
|
||||||
ANDROID_PAY,
|
ANDROID_PAY,
|
||||||
APPLE_PAY,
|
APPLE_PAY,
|
||||||
UNKNOWN
|
UNKNOWN
|
||||||
@@ -77,6 +78,8 @@ public class PaymentMethodModel {
|
|||||||
return PaymentMethodType.PAYPAL;
|
return PaymentMethodType.PAYPAL;
|
||||||
case ApiConstants.PAYMENT_METHOD_CODE_TWINT:
|
case ApiConstants.PAYMENT_METHOD_CODE_TWINT:
|
||||||
return PaymentMethodType.TWINT;
|
return PaymentMethodType.TWINT;
|
||||||
|
case ApiConstants.PAYMENT_METHOD_CODE_POST_FINANCE_CARD:
|
||||||
|
return PaymentMethodType.POST_FINANCE_CARD;
|
||||||
case ApiConstants.PAYMENT_METHOD_CODE_ANDROID_PAY:
|
case ApiConstants.PAYMENT_METHOD_CODE_ANDROID_PAY:
|
||||||
return PaymentMethodType.ANDROID_PAY;
|
return PaymentMethodType.ANDROID_PAY;
|
||||||
case ApiConstants.PAYMENT_METHOD_CODE_APPLE_PAY:
|
case ApiConstants.PAYMENT_METHOD_CODE_APPLE_PAY:
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
android:src="@drawable/background_wood" />
|
android:src="@drawable/background_wood" />
|
||||||
|
|
||||||
<android.support.v7.widget.CardView
|
<android.support.v7.widget.CardView
|
||||||
|
android:id="@+id/createOrderCardView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/white"
|
android:background="@color/white"
|
||||||
@@ -78,6 +79,13 @@
|
|||||||
|
|
||||||
</android.support.v7.widget.CardView>
|
</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>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ allprojects {
|
|||||||
maven { url 'https://jitpack.io' }
|
maven { url 'https://jitpack.io' }
|
||||||
maven { url "https://maven.google.com" }
|
maven { url "https://maven.google.com" }
|
||||||
google()
|
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