customer/internal/utils/payment.go
2023-06-22 09:36:43 +00:00

63 lines
2.0 KiB
Go

package utils
import (
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/errors"
"penahub.gitlab.yandexcloud.net/pena-services/customer/internal/models"
"penahub.gitlab.yandexcloud.net/pena-services/customer/pkg/validate"
)
func ValidateGetPaymentLinkBody(request *models.GetPaymentLinkBody) errors.Error {
if request == nil {
return errors.NewWithMessage("request body is empty", errors.ErrInvalidArgs)
}
switch request.Type {
case models.PaymentTypeInstallments, models.PaymentTypeSBP, models.PaymentTypeTinkoff, models.PaymentTypeYoomoney:
return nil
case models.PaymentTypeQiwi, models.PaymentTypeSberPay, models.PaymentTypeMobile, models.PaymentTypeCash:
return validateMobilePayment(request)
case models.PaymentTypeAlfabank:
return validateLoginPayment(request)
case models.PaymentTypeBankCard:
return validateBankcardPayment(request)
default:
return errors.NewWithMessage("unknown payment type", errors.ErrInvalidArgs)
}
}
func validateMobilePayment(request *models.GetPaymentLinkBody) errors.Error {
if validate.IsStringEmpty(request.PhoneNumber) {
return errors.NewWithMessage("phone number is empty", errors.ErrInvalidArgs)
}
return nil
}
func validateLoginPayment(request *models.GetPaymentLinkBody) errors.Error {
if validate.IsStringEmpty(request.Login) {
return errors.NewWithMessage("login is empty", errors.ErrInvalidArgs)
}
return nil
}
func validateBankcardPayment(request *models.GetPaymentLinkBody) errors.Error {
if request.BankCard == nil {
return errors.NewWithMessage("bank card is empty", errors.ErrInvalidArgs)
}
if validate.IsStringEmpty(request.BankCard.Number) {
return errors.NewWithMessage("bankcard number is empty", errors.ErrInvalidArgs)
}
if validate.IsStringEmpty(request.BankCard.ExpiryYear) {
return errors.NewWithMessage("bankcard expiry year is empty", errors.ErrInvalidArgs)
}
if validate.IsStringEmpty(request.BankCard.ExpiryMonth) {
return errors.NewWithMessage("bankcard expiry month is empty", errors.ErrInvalidArgs)
}
return nil
}