github.com/Ingenico-ePayments/connect-sdk-go@v0.0.0-20240318153750-1f8cd329b9c9/examples/merchant/payouts/CreatePayoutExample.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/payout" 12 sdkErrors "github.com/Ingenico-ePayments/connect-sdk-go/errors" 13 ) 14 15 func createPayoutExample() { 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 bankAccountIban definitions.BankAccountIban 28 bankAccountIban.AccountHolderName = newString("Wile E. Coyote") 29 bankAccountIban.Iban = newString("IT60X0542811101000000123456") 30 31 var bankTransferPayoutMethodSpecificInput payout.BankTransferPayoutMethodSpecificInput 32 bankTransferPayoutMethodSpecificInput.BankAccountIban = &bankAccountIban 33 bankTransferPayoutMethodSpecificInput.PayoutDate = newString("20150102") 34 bankTransferPayoutMethodSpecificInput.PayoutText = newString("Payout Acme") 35 bankTransferPayoutMethodSpecificInput.SwiftCode = newString("swift") 36 37 var amountOfMoney definitions.AmountOfMoney 38 amountOfMoney.Amount = newInt64(2345) 39 amountOfMoney.CurrencyCode = newString("EUR") 40 41 var address definitions.Address 42 address.City = newString("Burbank") 43 address.CountryCode = newString("US") 44 address.HouseNumber = newString("411") 45 address.State = newString("California") 46 address.Street = newString("N Hollywood Way") 47 address.Zip = newString("91505") 48 49 var companyInformation definitions.CompanyInformation 50 companyInformation.Name = newString("Acme Labs") 51 52 var contactDetails definitions.ContactDetailsBase 53 contactDetails.EmailAddress = newString("wile.e.coyote@acmelabs.com") 54 55 var name payment.PersonalName 56 name.FirstName = newString("Wile") 57 name.Surname = newString("Coyote") 58 name.SurnamePrefix = newString("E.") 59 name.Title = newString("Mr.") 60 61 var customer payout.Customer 62 customer.Address = &address 63 customer.CompanyInformation = &companyInformation 64 customer.ContactDetails = &contactDetails 65 customer.Name = &name 66 67 var references payout.References 68 references.MerchantReference = newString("AcmeOrder001") 69 70 var payoutDetails payout.Details 71 payoutDetails.AmountOfMoney = &amountOfMoney 72 payoutDetails.Customer = &customer 73 payoutDetails.References = &references 74 75 var body payout.CreateRequest 76 body.BankTransferPayoutMethodSpecificInput = &bankTransferPayoutMethodSpecificInput 77 body.PayoutDetails = &payoutDetails 78 79 response, err := client.Merchant("merchantId").Payouts().Create(body, nil) 80 switch realError := err.(type) { 81 case *sdkErrors.DeclinedPayoutError: 82 { 83 handleDeclinedPayout(realError.PayoutResult()) 84 85 break 86 } 87 case sdkErrors.APIError: 88 { 89 handleAPIErrors(realError.Errors()) 90 91 break 92 } 93 } 94 95 fmt.Println(response, err) 96 }