github.com/Ingenico-ePayments/connect-sdk-go@v0.0.0-20240318153750-1f8cd329b9c9/examples/merchant/payments/RefundPaymentExample.go (about)

     1  // This file was auto-generated from the API references found at
     2  // https://epayments-api.developer-ingenico.com/
     3  
     4  package examples
     5  
     6  import (
     7  	"fmt"
     8  
     9  	"github.com/Ingenico-ePayments/connect-sdk-go/domain/definitions"
    10  	"github.com/Ingenico-ePayments/connect-sdk-go/domain/payment"
    11  	"github.com/Ingenico-ePayments/connect-sdk-go/domain/refund"
    12  	sdkErrors "github.com/Ingenico-ePayments/connect-sdk-go/errors"
    13  )
    14  
    15  func refundPaymentExample() {
    16  	client, clientErr := getClient()
    17  	if clientErr != nil {
    18  		panic(clientErr)
    19  	}
    20  	defer client.Close()
    21  
    22  	// Assigning literals to pointer variables directly is not supported.
    23  	// The below code uses helper functions newInt64 and newString to overcome this issue.
    24  	// http://stackoverflow.com/a/30716481 lists a few more alternatives.
    25  	// The code for these helper functions can be found in file Helper.go
    26  
    27  	var amountOfMoney definitions.AmountOfMoney
    28  	amountOfMoney.Amount = newInt64(1)
    29  	amountOfMoney.CurrencyCode = newString("EUR")
    30  
    31  	var bankAccountIban definitions.BankAccountIban
    32  	bankAccountIban.Iban = newString("NL53INGB0000000036")
    33  
    34  	var bankRefundMethodSpecificInput refund.BankRefundMethodSpecificInput
    35  	bankRefundMethodSpecificInput.BankAccountIban = &bankAccountIban
    36  
    37  	var name payment.PersonalName
    38  	name.Surname = newString("Coyote")
    39  
    40  	var address payment.AddressPersonal
    41  	address.CountryCode = newString("US")
    42  	address.Name = &name
    43  
    44  	var contactDetails definitions.ContactDetailsBase
    45  	contactDetails.EmailAddress = newString("wile.e.coyote@acmelabs.com")
    46  	contactDetails.EmailMessageType = newString("html")
    47  
    48  	var customer refund.Customer
    49  	customer.Address = &address
    50  	customer.ContactDetails = &contactDetails
    51  
    52  	var refundReferences refund.References
    53  	refundReferences.MerchantReference = newString("AcmeOrder0001")
    54  
    55  	var body refund.Request
    56  	body.AmountOfMoney = &amountOfMoney
    57  	body.BankRefundMethodSpecificInput = &bankRefundMethodSpecificInput
    58  	body.Customer = &customer
    59  	body.RefundDate = newString("20140306")
    60  	body.RefundReferences = &refundReferences
    61  
    62  	response, err := client.Merchant("merchantId").Payments().Refund("paymentId", body, nil)
    63  	switch realError := err.(type) {
    64  	case *sdkErrors.DeclinedRefundError:
    65  		{
    66  			handleDeclinedRefund(realError.RefundResult())
    67  
    68  			break
    69  		}
    70  	case sdkErrors.APIError:
    71  		{
    72  			handleAPIErrors(realError.Errors())
    73  
    74  			break
    75  		}
    76  	}
    77  
    78  	fmt.Println(response, err)
    79  }