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  }