|
|
|
@ -17,6 +17,7 @@ import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/routes.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/services/appointment_services/GetDoctorsList.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/services/livecare_services/livecare_provider.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/services/payfort_services/payfort_project_details_resp_model.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/services/payfort_services/payfort_view_model.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/theme/colors.dart';
|
|
|
|
|
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
|
|
|
|
@ -33,7 +34,6 @@ import 'package:flutter_svg/flutter_svg.dart';
|
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
|
import 'new_text_Field.dart';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ConfirmPaymentPage extends StatefulWidget {
|
|
|
|
|
final AdvanceModel advanceModel;
|
|
|
|
|
final PatientInfoAndMobileNumber patientInfoAndMobileNumber;
|
|
|
|
@ -218,7 +218,7 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
|
|
|
|
|
padding: EdgeInsets.all(20),
|
|
|
|
|
child: DefaultButton(
|
|
|
|
|
TranslationBase.of(context).confirm.toUpperCase(),
|
|
|
|
|
() async {
|
|
|
|
|
() async {
|
|
|
|
|
if (widget.advanceModel.fileNumber == projectViewModel.user.patientID.toString()) {
|
|
|
|
|
if (widget.selectedPaymentMethod == "ApplePay") {
|
|
|
|
|
transID = Utils.getAdvancePaymentTransID(widget.advanceModel.hospitalsModel.iD, int.parse(widget.advanceModel.fileNumber));
|
|
|
|
@ -228,6 +228,14 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
|
|
|
|
|
LiveCareService service = new LiveCareService();
|
|
|
|
|
ApplePayInsertRequest applePayInsertRequest = new ApplePayInsertRequest();
|
|
|
|
|
|
|
|
|
|
PayfortProjectDetailsRespModel payfortProjectDetailsRespModel;
|
|
|
|
|
await context
|
|
|
|
|
.read<PayfortViewModel>()
|
|
|
|
|
.getProjectDetailsForPayfort(projectId: widget.advanceModel.hospitalsModel.iD, serviceId: ServiceTypeEnum.advancePayment.getIdFromServiceEnum())
|
|
|
|
|
.then((value) {
|
|
|
|
|
payfortProjectDetailsRespModel = value;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
applePayInsertRequest.clientRequestID = transID;
|
|
|
|
|
applePayInsertRequest.clinicID = 0;
|
|
|
|
|
applePayInsertRequest.currency = projectViewModel.authenticatedUserObject.user.outSA == 1 ? "AED" : "SAR";
|
|
|
|
@ -257,29 +265,39 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
|
|
|
|
|
applePayInsertRequest.backClickUrl = "http://hmg.com/Documents/success.html";
|
|
|
|
|
applePayInsertRequest.paymentOption = "ApplePay";
|
|
|
|
|
|
|
|
|
|
applePayInsertRequest.isMobSDK = true;
|
|
|
|
|
applePayInsertRequest.merchantReference = transID;
|
|
|
|
|
applePayInsertRequest.merchantIdentifier = payfortProjectDetailsRespModel.merchantIdentifier;
|
|
|
|
|
applePayInsertRequest.commandType = "PURCHASE";
|
|
|
|
|
applePayInsertRequest.signature = payfortProjectDetailsRespModel.signature;
|
|
|
|
|
applePayInsertRequest.accessCode = payfortProjectDetailsRespModel.accessCode;
|
|
|
|
|
applePayInsertRequest.shaRequestPhrase = payfortProjectDetailsRespModel.shaRequest;
|
|
|
|
|
applePayInsertRequest.shaResponsePhrase = payfortProjectDetailsRespModel.shaResponse;
|
|
|
|
|
applePayInsertRequest.returnURL = "";
|
|
|
|
|
|
|
|
|
|
service.applePayInsertRequest(applePayInsertRequest, context).then((res) async {
|
|
|
|
|
GifLoaderDialogUtils.hideDialog(context);
|
|
|
|
|
await context.read<PayfortViewModel>().initiateApplePayWithPayfort(
|
|
|
|
|
customerName: projectViewModel.authenticatedUserObject.user.firstName + " " + projectViewModel.authenticatedUserObject.user.lastName,
|
|
|
|
|
customerEmail: projectViewModel.authenticatedUserObject.user.emailAddress,
|
|
|
|
|
orderDescription: "Advance Payment",
|
|
|
|
|
orderAmount: double.parse(widget.advanceModel.amount),
|
|
|
|
|
merchantReference: transID,
|
|
|
|
|
onFailed: (failureResult) {
|
|
|
|
|
log("failureResult: ${failureResult.toString()}");
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
onSuccess: (successResult) {
|
|
|
|
|
log("Payfort: ${successResult.responseMessage}");
|
|
|
|
|
checkPaymentStatus(AppoitmentAllHistoryResultList());
|
|
|
|
|
},
|
|
|
|
|
projectId: widget.advanceModel.hospitalsModel.iD,
|
|
|
|
|
// projectId: 95,
|
|
|
|
|
serviceTypeEnum: ServiceTypeEnum.advancePayment,
|
|
|
|
|
);
|
|
|
|
|
// GifLoaderDialogUtils.hideDialog(context);
|
|
|
|
|
await context.read<PayfortViewModel>().initiateApplePayWithPayfort(
|
|
|
|
|
customerName: projectViewModel.authenticatedUserObject.user.firstName + " " + projectViewModel.authenticatedUserObject.user.lastName,
|
|
|
|
|
customerEmail: projectViewModel.authenticatedUserObject.user.emailAddress,
|
|
|
|
|
orderDescription: "Advance Payment",
|
|
|
|
|
orderAmount: double.parse(widget.advanceModel.amount),
|
|
|
|
|
merchantReference: transID,
|
|
|
|
|
payfortProjectDetailsRespModel: payfortProjectDetailsRespModel,
|
|
|
|
|
onFailed: (failureResult) async {
|
|
|
|
|
log("failureResult: ${failureResult.toString()}");
|
|
|
|
|
},
|
|
|
|
|
onSuccess: (successResult) async {
|
|
|
|
|
log("Payfort: ${successResult.responseMessage}");
|
|
|
|
|
await context.read<PayfortViewModel>().addPayfortApplePayResponse(result: successResult);
|
|
|
|
|
checkPaymentStatus(AppoitmentAllHistoryResultList());
|
|
|
|
|
},
|
|
|
|
|
projectId: widget.advanceModel.hospitalsModel.iD,
|
|
|
|
|
serviceTypeEnum: ServiceTypeEnum.advancePayment,
|
|
|
|
|
);
|
|
|
|
|
}).catchError((err) {
|
|
|
|
|
print(err);
|
|
|
|
|
if (context = null) GifLoaderDialogUtils.hideDialog(context);
|
|
|
|
|
GifLoaderDialogUtils.hideDialog(context);
|
|
|
|
|
AppToast.showErrorToast(message: err);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
@ -309,72 +327,7 @@ class _ConfirmPaymentPageState extends State<ConfirmPaymentPage> {
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// startApplePay() {
|
|
|
|
|
// ApplePayResponse applePayResponse;
|
|
|
|
|
// var _paymentItems = [
|
|
|
|
|
// PaymentItem(
|
|
|
|
|
// label: 'Total',
|
|
|
|
|
// amount: widget.advanceModel.amount,
|
|
|
|
|
// status: PaymentItemStatus.final_price,
|
|
|
|
|
// )
|
|
|
|
|
// ];
|
|
|
|
|
//
|
|
|
|
|
// _payClient.userCanPay(PayProvider.apple_pay).then((value) async {
|
|
|
|
|
// print(value);
|
|
|
|
|
// final result = await _payClient.showPaymentSelector(
|
|
|
|
|
// provider: PayProvider.apple_pay,
|
|
|
|
|
// paymentItems: _paymentItems,
|
|
|
|
|
// );
|
|
|
|
|
// print(result);
|
|
|
|
|
// applePayResponse = ApplePayResponse.fromJson(result);
|
|
|
|
|
// callPayfortApplePayAPI(applePayResponse);
|
|
|
|
|
// }).catchError((err) {
|
|
|
|
|
// print(err);
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
callPayfortApplePayAPI(ApplePayResponse applePayResponse) async {
|
|
|
|
|
DoctorsListService service = new DoctorsListService();
|
|
|
|
|
ApplePayRequest applePayRequest = new ApplePayRequest();
|
|
|
|
|
AppleHeader appleHeader = new AppleHeader();
|
|
|
|
|
ApplePaymentMethod applePaymentMethod = new ApplePaymentMethod();
|
|
|
|
|
|
|
|
|
|
applePayRequest.amount = widget.advanceModel.amount;
|
|
|
|
|
applePayRequest.currency = "SAR";
|
|
|
|
|
applePayRequest.language = projectViewModel.isArabic ? "ar" : "en";
|
|
|
|
|
applePayRequest.customername = projectViewModel.user.firstName;
|
|
|
|
|
applePayRequest.customerEmail = projectViewModel.user.emailAddress;
|
|
|
|
|
applePayRequest.orderdescription = "Advance Payment";
|
|
|
|
|
applePayRequest.liveServiceid = "";
|
|
|
|
|
applePayRequest.latitude = await this.sharedPref.getDouble(USER_LAT);
|
|
|
|
|
applePayRequest.longitude = await this.sharedPref.getDouble(USER_LONG);
|
|
|
|
|
applePayRequest.devicetoken = await sharedPref.getString(PUSH_TOKEN);
|
|
|
|
|
applePayRequest.clientrequestid = Utils.getAdvancePaymentTransID(widget.advanceModel.hospitalsModel.iD, int.parse(widget.advanceModel.fileNumber));
|
|
|
|
|
applePayRequest.projectid = widget.advanceModel.hospitalsModel.iD.toString();
|
|
|
|
|
applePayRequest.serviceid = "3";
|
|
|
|
|
applePayRequest.patientid = projectViewModel.user.patientID.toString();
|
|
|
|
|
applePayRequest.appleData = applePayResponse.token.data;
|
|
|
|
|
applePayRequest.appleSignature = applePayResponse.token.signature;
|
|
|
|
|
|
|
|
|
|
appleHeader.appleEphemeralPublicKey = applePayResponse.token.header.ephemeralPublicKey;
|
|
|
|
|
appleHeader.appleTransactionId = applePayResponse.token.header.transactionId;
|
|
|
|
|
appleHeader.applePublicKeyHash = applePayResponse.token.header.publicKeyHash;
|
|
|
|
|
applePaymentMethod.appleType = getApplePayPaymentType(applePayResponse.paymentMethod.type);
|
|
|
|
|
applePaymentMethod.appleNetwork = applePayResponse.paymentMethod.network;
|
|
|
|
|
applePaymentMethod.appleDisplayName = applePayResponse.paymentMethod.displayName;
|
|
|
|
|
|
|
|
|
|
applePayRequest.appleHeader = appleHeader;
|
|
|
|
|
applePayRequest.applePaymentMethod = applePaymentMethod;
|
|
|
|
|
|
|
|
|
|
service.callPayfortApplePayAPI(applePayRequest, context).then((res) {
|
|
|
|
|
print(res);
|
|
|
|
|
GifLoaderDialogUtils.hideDialog(context);
|
|
|
|
|
}).catchError((err) {
|
|
|
|
|
GifLoaderDialogUtils.hideDialog(context);
|
|
|
|
|
print(err);
|
|
|
|
|
// _showMyDialog(err, this.context);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
void addPayFortApplePayResponse() {}
|
|
|
|
|
|
|
|
|
|
String getApplePayPaymentType(dynamic paymentMethod) {
|
|
|
|
|
switch (paymentMethod) {
|
|
|
|
|