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 }