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  }