Skip to main content

Finishing a payment

The charge and refund function have a completion handler that has a PaymentResult object as a parameter. You can get info about the result of the transaction from this object. The completion handler will always be called when the payment flow is closing.

The PaymentResult object has a property called result which is one of the following ResultCode

public enum ResultCode: CaseIterable {
case success
case inProgress
case failure(String)
case unknownResult(String)
case cancelled
case permissionDenied
case noConnectivity
case invalidToken
case bluetoothDisabled
case cardMachineError
case printFailed
}

This result is useful to know if the payment was successful or not and why it may have been unsuccessful.

Yoco.charge(1000) { paymentResult in
switch paymentResult.result {
case .success:
break
default: // all failure cases
break
}
}

Handling Tips

The charge function also accepts a parameter askForTip. When this feature is used you will need to account for any tip amount entered after a payment started.

You will get back 3 amounts in the paymentResult:

paymentResult.amountInCents // This is the initial value you passed into the charge call
paymentResult.tipAmountInCents // The tip amount that the cardholder entered on the card machine
paymentResult.finalAmountInCents // The final amount obtained from: tipAmountInCents + amountInCents