The PayButton also makes it really easy to implement Refunds.
Your transaction is based on a set of MPTransactionParameters
and provided to [MposUi createTransactionViewControllerWithTransactionParameters:]
.
To perform a full refund, you need to create new
MPTransactionParameters
with the transactionIdentifier
of the previous
charge transaction.
Here's how you can perform refunds:
- (IBAction)refund:(id)sender { MPUMposUi *ui = [MPUMposUi initializeWithProviderMode:/*...*/]; ui.configuration.summaryFeatures = MPUMposUiConfigurationSummaryFeatureSendReceiptViaEmail; MPTransactionParameters *parameters = [MPTransactionParameters refundForTransactionIdentifier:@"<transactionIdentifier>" optionals: ^(id<MPTransactionParametersRefundOptionals> _Nonnull optionals) { optionals.subject = @"Refund for Bouquet of Flowers"; optionals.customIdentifier = @"yourReferenceForTheTransaction"; }]; UIViewController *viewController = [ui createTransactionViewControllerWithTransactionParameters:parameters completed:^(UIViewController *ui, MPUTransactionResult result, MPTransaction* transaction) { [self dismissViewControllerAnimated:YES completion:NULL]; UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Result" message:@"" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK",nil]; if (result == MPUTransactionResultApproved) { alert.title = @"Refund was made!"; } else { alert.title = @"Refund was declined/aborted!"; } [alert show]; }]; UINavigationController *modalNav = [[UINavigationController alloc] initWithRootViewController:viewController]; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { modalNav.modalPresentationStyle = UIModalPresentationFullScreen; } else { // Show as Form on iPad modalNav.modalPresentationStyle = UIModalPresentationFormSheet; } [self presentViewController:modalNav animated:YES completion:NULL]; }
As a result, you will receive one of the following:
- The original transaction that now contains information about the refund in the
transaction.refundDetails
; - An error indicating why refunding the charge failed.
To check if a transaction can be refunded in general, have a look at
transaction.refundDetails.status
.
The PayButton also makes it really easy to implement Refunds.
Your transaction is based on a set of TransactionParameters
and used in conjunction with MposUi.createTransactionIntent()
.
To perform a full refund, you need to create new
TransactionParameters
with the transactionIdentifier
of the previous
charge transaction.
Here's how you can perform refunds:
TransactionParameters parameters = new TransactionParameters.Builder() .refund("<transactionIdentifer>") .build(); Intent intent = ui.createTransactionIntent(transactionParameters); startActivityForResult(intent, MposUi.REQUEST_CODE_PAYMENT);
As a result, you will receive one of the following via the onActivityResult()
:
- The original transaction that now contains information about the refund in the
transaction.refundDetails
; - An error indicating why refunding the charge failed.
To check if a transaction can be refunded in general, have a look at
transaction.refundDetails.status
.