Skip to content

Commit

Permalink
add validation to omit empty string from cardholder information (#84)
Browse files Browse the repository at this point in the history
* remove card holder information initiation in cardDataJson

* add cardData on authentication
  • Loading branch information
adhiartaputra authored Sep 12, 2024
1 parent 2ceeead commit edfada8
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 41 deletions.
33 changes: 1 addition & 32 deletions Sources/Xendit/Models/DTOs/XenditAuthenticationRequest.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import Foundation

@objcMembers
@objc(XenditAuthenticationRequest) open class XenditAuthenticationRequest: NSObject, JsonSerializable {
@objc(XenditAuthenticationRequest) open class XenditAuthenticationRequest: NSObject {

public var amount: NSNumber
public var tokenId: String
Expand All @@ -25,35 +25,4 @@ import Foundation
self.currency = currency
self.cardData = cardData
}

func toJsonObject() -> [String : Any] {

var json: [String: Any] = [
"amount": amount,
"credit_card_token_id": tokenId,
"currency": currency
]

if (midLabel != nil) {
json["mid_label"] = midLabel
}

if (billingDetails != nil) {
json["billing_details"] = billingDetails!.toJsonObject()
}

if (cardCvn != nil) {
json["card_cvn"] = cardCvn
}

if (customer != nil) {
json["customer"] = customer!.toJsonObject()
}

if (cardData != nil) {
json["card_data"] = cardData!.toJsonObject()
}

return json
}
}
6 changes: 5 additions & 1 deletion Sources/Xendit/Models/DTOs/XenditCardHolderInformation.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,16 @@ import Foundation
self.cardHolderPhoneNumber = cardHolderPhoneNumber
}

func isEmpty() -> Bool {
return self.cardHolderEmail != nil && self.cardHolderFirstName != nil && self.cardHolderLastName != nil && self.cardHolderPhoneNumber != nil
}

func toJsonObject() -> [String : Any] {
var json: [String: Any] = [:]
if cardHolderFirstName != nil { json["card_holder_first_name"] = cardHolderFirstName }
if cardHolderLastName != nil { json["card_holder_last_name"] = cardHolderLastName }
if cardHolderEmail != nil { json["card_holder_email"] = cardHolderEmail }
if cardHolderPhoneNumber != nil { json["card_holder_mobile_number"] = cardHolderPhoneNumber }
if cardHolderPhoneNumber != nil { json["card_holder_phone_number"] = cardHolderPhoneNumber }
return json
}

Expand Down
22 changes: 17 additions & 5 deletions Sources/Xendit/Models/DTOs/XenditTokenizationRequest.swift
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,25 @@ import Foundation
var cardDataJson: [String: String] = [
"account_number": cardData.cardNumber,
"exp_month": cardData.cardExpMonth,
"exp_year": cardData.cardExpYear,
"card_holder_first_name": cardData.cardHolderFirstName ?? "",
"card_holder_last_name": cardData.cardHolderLastName ?? "",
"card_holder_email": cardData.cardHolderEmail ?? "",
"card_holder_phone_number": cardData.cardHolderPhoneNumber ?? ""
"exp_year": cardData.cardExpYear
]

if let firstName = cardData.cardHolderFirstName, !firstName.isEmpty {
cardDataJson["card_holder_first_name"] = firstName
}

if let lastName = cardData.cardHolderLastName, !lastName.isEmpty {
cardDataJson["card_holder_last_name"] = lastName
}

if let email = cardData.cardHolderEmail, !email.isEmpty {
cardDataJson["card_holder_email"] = email
}

if let phoneNumber = cardData.cardHolderPhoneNumber, !phoneNumber.isEmpty {
cardDataJson["card_holder_mobile_number"] = phoneNumber
}

if cardData.cardCvn != nil && cardData.cardCvn != "" {
cardDataJson["cvn"] = cardData.cardCvn
}
Expand Down
4 changes: 2 additions & 2 deletions Sources/Xendit/XDTCards.swift
Original file line number Diff line number Diff line change
Expand Up @@ -213,8 +213,8 @@ public class XDTCards: CanTokenize, CanAuthenticate {
requestBody["card_cvn"] = cardCvn
}

if let cardData {
requestBody["card_data"] = cardData
if let cardData, !cardData.isEmpty() {
requestBody["card_data"] = cardData.toJsonObject()
}

var extraHeaders: [String: String] = [:]
Expand Down
3 changes: 2 additions & 1 deletion Sources/Xendit/Xendit.swift
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ import XenditObjC
let amount = authenticationRequest.amount
let customer = authenticationRequest.customer
let currency = authenticationRequest.currency
XDTCards.createAuthentication(fromViewController: fromViewController, tokenId: tokenId, amount: amount, currency: currency, onBehalfOf: onBehalfOf, customer: customer, cardCvn: authenticationRequest.cardCvn, completion: completion)
let cardData = authenticationRequest.cardData
XDTCards.createAuthentication(fromViewController: fromViewController, tokenId: tokenId, amount: amount, currency: currency, onBehalfOf: onBehalfOf, customer: customer, cardCvn: authenticationRequest.cardCvn, cardData: cardData, completion: completion)
}

@available(*, deprecated, message: "Use createToken(UIViewController, XenditTokenizationRequest, String, Callback) instead")
Expand Down

0 comments on commit edfada8

Please sign in to comment.