65 lines
1.7 KiB
Go
65 lines
1.7 KiB
Go
package creditcall
|
|
|
|
import "gitea.futuresens.co.uk/futuresens/hardlink/paymentstatus"
|
|
|
|
// ProgressStatus maps informational SDK events, never financial decisions.
|
|
func ProgressStatus(source, value string) string {
|
|
switch source {
|
|
case "UPDATE":
|
|
switch value {
|
|
case "CardRequested", "ProvideCard", "InsertOrSwipeCard", "InsertOrContactless":
|
|
return paymentstatus.PresentCard
|
|
case "InsertCard":
|
|
return paymentstatus.InsertCard
|
|
case "SwipeCard":
|
|
return paymentstatus.SwipeCard
|
|
case "CardRemovalRequested", "CardRemovalEnforced":
|
|
return paymentstatus.RemoveCard
|
|
case "PinEntryStarted", "PinEntryPrompt", "PinEntryInProgress":
|
|
return paymentstatus.EnterPIN
|
|
case "PinEntryFailed":
|
|
return paymentstatus.EnterPINAgain
|
|
case "PinEntrySuccessful", "TransactionStarted", "OnlineAuthRequested", "OnlineAuthorizeRequest":
|
|
return paymentstatus.Processing
|
|
case "OnlineAuthCompleted":
|
|
return paymentstatus.PleaseWait
|
|
}
|
|
case "CARD_STATUS":
|
|
switch value {
|
|
case "Inserted":
|
|
return paymentstatus.DoNotRemoveCard
|
|
case "Tapped", "Swiped":
|
|
return paymentstatus.Processing
|
|
}
|
|
case "SIGNATURE":
|
|
if value == "Requested" {
|
|
return paymentstatus.SignatureRequired
|
|
}
|
|
case "PAUSE":
|
|
if value == "Paused" {
|
|
return paymentstatus.PleaseWait
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// MaskedCardNumber excludes unmasked or unexpected SDK data from the new wire contract.
|
|
func MaskedCardNumber(value string) string {
|
|
digits, masks := 0, 0
|
|
for _, ch := range value {
|
|
switch {
|
|
case ch >= '0' && ch <= '9':
|
|
digits++
|
|
case ch == '*' || ch == 'x' || ch == 'X':
|
|
masks++
|
|
case ch == ' ' || ch == '-':
|
|
default:
|
|
return ""
|
|
}
|
|
}
|
|
if masks < 4 || digits > 10 {
|
|
return ""
|
|
}
|
|
return value
|
|
}
|