public override Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state) { var buffer = parameter as byte[]; if (buffer == null) { return(Task.CompletedTask); } using (var from = TLObjectSerializer.CreateReader(buffer.AsBuffer())) { var tuple = new TLTuple <TLMessage, TLPaymentsPaymentForm, TLPaymentRequestedInfo, TLPaymentsValidatedRequestedInfo, TLShippingOption>(from); Message = tuple.Item1; Invoice = tuple.Item1.Media as TLMessageMediaInvoice; PaymentForm = tuple.Item2; // TODO: real hint PasswordHint = Strings.Android.LoginPassword; if (_paymentForm.HasSavedCredentials && _paymentForm.SavedCredentials is TLPaymentSavedCredentialsCard savedCard) { CredentialsTitle = savedCard.Title; } _info = tuple.Item3; _requestedInfo = tuple.Item4; _shipping = tuple.Item5; } return(Task.CompletedTask); }
public void ValidateRequestedInfoAsync(int msgId, TLPaymentRequestedInfo info, bool save, Action <TLPaymentsValidatedRequestedInfo> callback, Action <TLRPCError> faultCallback = null) { var obj = new TLPaymentsValidateRequestedInfo { IsSave = save, MsgId = msgId, Info = info }; const string caption = "payments.validateRequestedInfo"; SendInformativeMessage(caption, obj, callback, faultCallback); }
public override TLObject FromBytes(byte[] bytes, ref int position) { bytes.ThrowExceptionIfIncorrect(ref position, Signature); Flags = GetObject <TLInt>(bytes, ref position); MsgId = GetObject <TLInt>(bytes, ref position); Info = GetObject <TLPaymentRequestedInfo>(bytes, ref position); return(this); }
public override Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state) { var buffer = parameter as byte[]; if (buffer == null) { return(Task.CompletedTask); } using (var from = TLObjectSerializer.CreateReader(buffer.AsBuffer())) { var tuple = new TLTuple <TLMessage, TLPaymentsPaymentForm, TLPaymentRequestedInfo, TLPaymentsValidatedRequestedInfo, TLShippingOption>(from); Message = tuple.Item1; Invoice = tuple.Item1.Media as TLMessageMediaInvoice; PaymentForm = tuple.Item2; _info = tuple.Item3; _requestedInfo = tuple.Item4; _shipping = tuple.Item5; if (_paymentForm.HasNativeProvider && _paymentForm.HasNativeParams && _paymentForm.NativeProvider.Equals("stripe")) { IsNativeUsed = true; SelectedCountry = null; var json = JsonObject.Parse(_paymentForm.NativeParams.Data); NeedCountry = json.GetNamedBoolean("need_country", false); NeedZip = json.GetNamedBoolean("need_zip", false); NeedCardholderName = json.GetNamedBoolean("need_cardholder_name", false); _publishableKey = json.GetNamedString("publishable_key", string.Empty); } else { IsNativeUsed = false; RaisePropertyChanged("Navigate"); } //var info = PaymentForm.HasSavedInfo ? PaymentForm.SavedInfo : new TLPaymentRequestedInfo(); //if (info.ShippingAddress == null) //{ // info.ShippingAddress = new TLPostAddress(); //} //Info = info; //SelectedCountry = null; } return(Task.CompletedTask); }
public override void DeserializeBody(BinaryReader br) { Flags = br.ReadInt32(); HasSavedCredentials = (Flags & 2) != 0; if ((Flags & 1) != 0) { SavedInfo = (TLPaymentRequestedInfo)ObjectUtils.DeserializeObject(br); } else { SavedInfo = null; } }
public override void DeserializeBody(BinaryReader br) { flags = br.ReadInt32(); has_saved_credentials = (flags & 2) != 0; if ((flags & 1) != 0) { saved_info = (TLPaymentRequestedInfo)ObjectUtils.DeserializeObject(br); } else { saved_info = null; } }
public void ValidateRequestedInfoAsync(bool save, TLInt msgId, TLPaymentRequestedInfo info, Action <TLValidatedRequestedInfo> callback, Action <TLRPCError> faultCallback = null) { var obj = new TLValidateRequestedInfo { Flags = new TLInt(0), Save = save, MsgId = msgId, Info = info }; const string caption = "payments.validateRequestedInfo"; SendInformativeMessage <TLValidatedRequestedInfo>(caption, obj, callback.SafeInvoke, faultCallback); }
public override Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state) { var buffer = parameter as byte[]; if (buffer != null) { using (var from = new TLBinaryReader(buffer)) { var tuple = new TLTuple <TLMessage, TLPaymentsPaymentForm, TLPaymentRequestedInfo, TLPaymentsValidatedRequestedInfo>(from); Message = tuple.Item1; Invoice = tuple.Item1.Media as TLMessageMediaInvoice; PaymentForm = tuple.Item2; RequestedInfo = tuple.Item4; _info = tuple.Item3; } } return(Task.CompletedTask); }
public static void NavigateToPaymentFormStep5(this INavigationService service, MessageViewModel message, PaymentForm paymentForm, TLPaymentRequestedInfo info, TLPaymentsValidatedRequestedInfo validatedInfo, TLShippingOption shipping, string title, string credentials, bool save) { service.Navigate(typeof(PaymentFormStep5Page), TLTuple.Create(message, paymentForm, info, validatedInfo, shipping, title ?? string.Empty, credentials ?? string.Empty, save)); }
public static void NavigateToPaymentFormStep4(this INavigationService service, MessageViewModel message, PaymentForm paymentForm, TLPaymentRequestedInfo info, TLPaymentsValidatedRequestedInfo validatedInfo, TLShippingOption shipping) { service.Navigate(typeof(PaymentFormStep4Page), TLTuple.Create(message, paymentForm, info, validatedInfo, shipping)); }
public void Validate() { if (PaymentInfo == null) { return; } if (PaymentInfo.Message == null) { return; } if (PaymentInfo.Form == null) { return; } var info = new TLPaymentRequestedInfo { Flags = new TLInt(0) }; if (PaymentInfo.Form.Invoice.NameRequested) { info.Name = new TLString(Name); } if (PaymentInfo.Form.Invoice.PhoneRequested) { info.Phone = new TLString(PhoneCode + PhoneNumber); } if (PaymentInfo.Form.Invoice.EmailRequested) { info.Email = new TLString(Email); } if (PaymentInfo.Form.Invoice.ShippingAddressRequested) { info.ShippingAddress = new TLPostAddress { StreetLine1 = new TLString(StreetLine1), StreetLine2 = new TLString(StreetLine2), City = new TLString(City), State = new TLString(State), CountryIso2 = new TLString(SelectedCountry != null ? SelectedCountry.Code : string.Empty), PostCode = new TLString(PostCode) }; } IsWorking = true; MTProtoService.ValidateRequestedInfoAsync( SaveShippingInformation, PaymentInfo.Message.Id, info, result => Execute.BeginOnUIThread(() => { IsWorking = false; PaymentInfo.ValidatedInfo = result; PaymentInfo.Form.SavedInfo = info; if (!SaveShippingInformation && PaymentInfo != null && PaymentInfo.Form != null && PaymentInfo.Form.SavedInfo != null) { IsWorking = true; MTProtoService.ClearSavedInfoAsync(false, true, result2 => Execute.BeginOnUIThread(() => { IsWorking = false; NavigateToNextStep(); }), error2 => Execute.BeginOnUIThread(() => { IsWorking = false; Telegram.Api.Helpers.Execute.ShowDebugMessage("payments.clearInfo error " + error2); })); } else { NavigateToNextStep(); } }), error => Execute.BeginOnUIThread(() => { IsWorking = false; Error = error; NotifyOfPropertyChange(() => Error); Telegram.Api.Helpers.Execute.ShowDebugMessage("payments.validateRequestedInfo error " + error); })); }
public void ValidateRequestedInfoAsync(int msgId, TLPaymentRequestedInfo info, bool save, Action <TLPaymentsValidatedRequestedInfo> callback, Action <TLRPCError> faultCallback = null) { Logs.Logger.Critical("Invoking legacy method"); }
private async void SendExecute() { IsLoading = true; var save = _isSave ?? false; var info = new TLPaymentRequestedInfo(); if (_paymentForm.Invoice.IsNameRequested) { info.Name = _info.Name; } if (_paymentForm.Invoice.IsEmailRequested) { info.Email = _info.Email; } if (_paymentForm.Invoice.IsPhoneRequested) { info.Phone = _info.Phone; } if (_paymentForm.Invoice.IsShippingAddressRequested) { info.ShippingAddress = _info.ShippingAddress; info.ShippingAddress.CountryIso2 = _selectedCountry?.Code?.ToUpper(); } var response = await ProtoService.ValidateRequestedInfoAsync(_message.Id, info, save); if (response.IsSucceeded) { IsLoading = false; if (_paymentForm.HasSavedInfo && !save) { ProtoService.ClearSavedInfoAsync(true, false, null, null); } if (_paymentForm.Invoice.IsFlexible) { NavigationService.NavigateToPaymentFormStep2(_message, _paymentForm, info, response.Result); } else if (_paymentForm.HasSavedCredentials) { if (ApplicationSettings.Current.TmpPassword != null) { if (ApplicationSettings.Current.TmpPassword.ValidUntil < TLUtils.Now + 60) { ApplicationSettings.Current.TmpPassword = null; } } if (ApplicationSettings.Current.TmpPassword != null) { NavigationService.NavigateToPaymentFormStep5(_message, _paymentForm, info, response.Result, null, null, null, true); } else { NavigationService.NavigateToPaymentFormStep4(_message, _paymentForm, info, response.Result, null); } } else { NavigationService.NavigateToPaymentFormStep3(_message, _paymentForm, info, response.Result, null); } } else if (response.Error != null) { IsLoading = false; switch (response.Error.ErrorMessage) { case "REQ_INFO_NAME_INVALID": case "REQ_INFO_PHONE_INVALID": case "REQ_INFO_EMAIL_INVALID": case "ADDRESS_COUNTRY_INVALID": case "ADDRESS_CITY_INVALID": case "ADDRESS_POSTCODE_INVALID": case "ADDRESS_STATE_INVALID": case "ADDRESS_STREET_LINE1_INVALID": case "ADDRESS_STREET_LINE2_INVALID": RaisePropertyChanged(response.Error.ErrorMessage); break; default: //AlertsCreator.processError(error, PaymentFormActivity.this, req); break; } } }
public Task <MTProtoResponse <TLPaymentsValidatedRequestedInfo> > ValidateRequestedInfoAsync(int msgId, TLPaymentRequestedInfo info, bool save) { var tsc = new TaskCompletionSource <MTProtoResponse <TLPaymentsValidatedRequestedInfo> >(); ValidateRequestedInfoAsync(msgId, info, save, (callback) => { tsc.TrySetResult(new MTProtoResponse <TLPaymentsValidatedRequestedInfo>(callback)); }, (faultCallback) => { tsc.TrySetResult(new MTProtoResponse <TLPaymentsValidatedRequestedInfo>(faultCallback)); }); return(tsc.Task); }