github.com/Ingenico-ePayments/connect-sdk-go@v0.0.0-20240318153750-1f8cd329b9c9/examples/merchant/payments/CreatePaymentExample.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 sdkErrors "github.com/Ingenico-ePayments/connect-sdk-go/errors" 12 ) 13 14 func createPaymentExample() { 15 client, clientErr := getClient() 16 if clientErr != nil { 17 panic(clientErr) 18 } 19 defer client.Close() 20 21 // Assigning literals to pointer variables directly is not supported. 22 // The below code uses helper functions newBool, newInt32, newInt64 and newString to overcome this issue. 23 // http://stackoverflow.com/a/30716481 lists a few more alternatives. 24 // The code for these helper functions can be found in file Helper.go 25 26 var card definitions.Card 27 card.CardNumber = newString("4567350000427977") 28 card.CardholderName = newString("Wile E. Coyote") 29 card.Cvv = newString("123") 30 card.ExpiryDate = newString("1299") 31 32 var authenticationAmount definitions.AmountOfMoney 33 authenticationAmount.Amount = newInt64(2980) 34 authenticationAmount.CurrencyCode = newString("EUR") 35 36 var redirectionData payment.RedirectionData 37 redirectionData.ReturnURL = newString("https://hostname.myownwebsite.url") 38 39 var threeDSecure payment.ThreeDSecure 40 threeDSecure.AuthenticationAmount = &authenticationAmount 41 threeDSecure.AuthenticationFlow = newString("browser") 42 threeDSecure.ChallengeCanvasSize = newString("600x400") 43 threeDSecure.ChallengeIndicator = newString("challenge-requested") 44 threeDSecure.ExemptionRequest = newString("none") 45 threeDSecure.RedirectionData = &redirectionData 46 threeDSecure.SkipAuthentication = newBool(false) 47 48 var cardPaymentMethodSpecificInput payment.CardPaymentMethodSpecificInput 49 cardPaymentMethodSpecificInput.Card = &card 50 cardPaymentMethodSpecificInput.IsRecurring = newBool(false) 51 cardPaymentMethodSpecificInput.MerchantInitiatedReasonIndicator = newString("delayedCharges") 52 cardPaymentMethodSpecificInput.PaymentProductID = newInt32(1) 53 cardPaymentMethodSpecificInput.ThreeDSecure = &threeDSecure 54 cardPaymentMethodSpecificInput.TransactionChannel = newString("ECOMMERCE") 55 56 var amountOfMoney definitions.AmountOfMoney 57 amountOfMoney.Amount = newInt64(2980) 58 amountOfMoney.CurrencyCode = newString("EUR") 59 60 var billingAddress definitions.Address 61 billingAddress.AdditionalInfo = newString("b") 62 billingAddress.City = newString("Monument Valley") 63 billingAddress.CountryCode = newString("US") 64 billingAddress.HouseNumber = newString("13") 65 billingAddress.State = newString("Utah") 66 billingAddress.Street = newString("Desertroad") 67 billingAddress.Zip = newString("84536") 68 69 var companyInformation definitions.CompanyInformation 70 companyInformation.Name = newString("Acme Labs") 71 companyInformation.VatNumber = newString("1234AB5678CD") 72 73 var contactDetails payment.ContactDetails 74 contactDetails.EmailAddress = newString("wile.e.coyote@acmelabs.com") 75 contactDetails.FaxNumber = newString("+1234567891") 76 contactDetails.PhoneNumber = newString("+1234567890") 77 78 var browserData payment.BrowserData 79 browserData.ColorDepth = newInt32(24) 80 browserData.JavaEnabled = newBool(false) 81 browserData.ScreenHeight = newString("1200") 82 browserData.ScreenWidth = newString("1920") 83 84 var device payment.CustomerDevice 85 device.AcceptHeader = newString("texthtml,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") 86 device.BrowserData = &browserData 87 device.IPAddress = newString("123.123.123.123") 88 device.Locale = newString("en-US") 89 device.TimezoneOffsetUtcMinutes = newString("420") 90 device.UserAgent = newString("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1 Safari/605.1.15") 91 92 var name payment.PersonalName 93 name.FirstName = newString("Wile") 94 name.Surname = newString("Coyote") 95 name.SurnamePrefix = newString("E.") 96 name.Title = newString("Mr.") 97 98 var personalInformation payment.PersonalInformation 99 personalInformation.DateOfBirth = newString("19490917") 100 personalInformation.Gender = newString("male") 101 personalInformation.Name = &name 102 103 var customer payment.Customer 104 customer.AccountType = newString("none") 105 customer.BillingAddress = &billingAddress 106 customer.CompanyInformation = &companyInformation 107 customer.ContactDetails = &contactDetails 108 customer.Device = &device 109 customer.Locale = newString("en_US") 110 customer.MerchantCustomerID = newString("1234") 111 customer.PersonalInformation = &personalInformation 112 113 var invoiceData payment.OrderInvoiceData 114 invoiceData.InvoiceDate = newString("20140306191500") 115 invoiceData.InvoiceNumber = newString("000000123") 116 117 var references payment.OrderReferences 118 references.Descriptor = newString("Fast and Furry-ous") 119 references.InvoiceData = &invoiceData 120 references.MerchantOrderID = newInt64(123456) 121 references.MerchantReference = newString("AcmeOrder0001") 122 123 var shippingName payment.PersonalName 124 shippingName.FirstName = newString("Road") 125 shippingName.Surname = newString("Runner") 126 shippingName.Title = newString("Miss") 127 128 var address payment.AddressPersonal 129 address.AdditionalInfo = newString("Suite II") 130 address.City = newString("Monument Valley") 131 address.CountryCode = newString("US") 132 address.HouseNumber = newString("1") 133 address.Name = &shippingName 134 address.State = newString("Utah") 135 address.Street = newString("Desertroad") 136 address.Zip = newString("84536") 137 138 var shipping payment.Shipping 139 shipping.Address = &address 140 141 var items []payment.LineItem 142 143 var item1AmountOfMoney definitions.AmountOfMoney 144 item1AmountOfMoney.Amount = newInt64(2500) 145 item1AmountOfMoney.CurrencyCode = newString("EUR") 146 147 var item1InvoiceData payment.LineItemInvoiceData 148 item1InvoiceData.Description = newString("ACME Super Outfit") 149 item1InvoiceData.NrOfItems = newString("1") 150 item1InvoiceData.PricePerItem = newInt64(2500) 151 152 var item1 payment.LineItem 153 item1.AmountOfMoney = &item1AmountOfMoney 154 item1.InvoiceData = &item1InvoiceData 155 156 items = append(items, item1) 157 158 var item2AmountOfMoney definitions.AmountOfMoney 159 item2AmountOfMoney.Amount = newInt64(480) 160 item2AmountOfMoney.CurrencyCode = newString("EUR") 161 162 var item2InvoiceData payment.LineItemInvoiceData 163 item2InvoiceData.Description = newString("Aspirin") 164 item2InvoiceData.NrOfItems = newString("12") 165 item2InvoiceData.PricePerItem = newInt64(40) 166 167 var item2 payment.LineItem 168 item2.AmountOfMoney = &item2AmountOfMoney 169 item2.InvoiceData = &item2InvoiceData 170 171 items = append(items, item2) 172 173 var shoppingCart payment.ShoppingCart 174 shoppingCart.Items = &items 175 176 var order payment.Order 177 order.AmountOfMoney = &amountOfMoney 178 order.Customer = &customer 179 order.References = &references 180 order.Shipping = &shipping 181 order.ShoppingCart = &shoppingCart 182 183 var body payment.CreateRequest 184 body.CardPaymentMethodSpecificInput = &cardPaymentMethodSpecificInput 185 body.Order = &order 186 187 response, err := client.Merchant("merchantId").Payments().Create(body, nil) 188 switch realError := err.(type) { 189 case *sdkErrors.DeclinedPaymentError: 190 { 191 handleDeclinedPayment(realError.PaymentResult()) 192 193 break 194 } 195 case sdkErrors.APIError: 196 { 197 handleAPIErrors(realError.Errors()) 198 199 break 200 } 201 } 202 203 fmt.Println(response, err) 204 }