nps-sdk-go

module
v0.0.0-...-4cd9310 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 4, 2019 License: MIT

README

Go SDK

Avalilability

Supports GO 1.7 and above

How to Install

  • Download and build locally: go get github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk

Configuration

It's a basic configuration of the SDK

package main

import (
	"fmt"
	"log"
	"github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk"
	CONSTANTS "github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk/constants"
)

func main() {

  err := npsSdk.Configure(map[string]interface{}{
	  "environment": CONSTANTS.SANDBOX_ENV,
	  "secret_key":  "_YOUR_SECRET_KEY_",
	})

  if err != nil {
	log.Fatalf("error configuring sdk: %v", err)
  }
}

Here is an simple example request:

package main

import (
	"fmt"
	"log"
	"github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk"
	CONSTANTS "github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk/constants"
)

func SendPayOnLine_2p(service *npsSdk.PaymentServicePlatformPortType) error {

  Person := npsSdk.NewPersonStruct()
  Person.FirstName = "John"
  Person.LastName = "Doe"
  Person.PhoneNumber1 = "+1 011 11111111"
  
  AmountAdditionalDetails := npsSdk.NewAmountAdditionalDetailsRequestStruct()
  AmountAdditionalDetails.Tip = "10"
  AmountAdditionalDetails.Discount = "5"
  
  Billing := npsSdk.NewBillingDetailsStruct()
  Billing.Invoice = "54877555"
  Billing.InvoiceAmount = "15050"
  Billing.InvoiceCurrency = "032"
  Billing.Person = Person
  
  SellerAddress := npsSdk.NewAddressStruct()
  SellerAddress.City = "Miami"
  SellerAddress.Country = "USA"
  SellerAddress.Street = "SellerStreet"
  SellerAddress.HouseNumber = "1245"

  SellerDetails := npsSdk.NewSellerDetailsStruct()
  SellerDetails.Name = "John Doe"
  SellerDetails.Address = SellerAddress
  
  MerchantAdditionalDetails := npsSdk.NewMerchantAdditionalDetailsStruct()
  MerchantAdditionalDetails.ShoppingCartInfo = "ShoppingCartInfo"
  MerchantAdditionalDetails.SellerDetails = SellerDetails
  CustomerAdditionalDetails := npsSdk.NewCustomerAdditionalDetailsStruct()
  CustomerAdditionalDetails.EmailAddress = "jdoe@email.com"
  
  order1 := npsSdk.NewOrderItemStruct()
  order1.Description = "Blue pencil"
  order1.UnitPrice = "10050"

  OrderDetails := npsSdk.NewOrderDetailsStruct()
  OrderDetails.OrderItems = npsSdk.NewArrayOf_OrderItemStruct()
  OrderDetails.OrderItems.Items = make([]*npsSdk.OrderItemStruct, 0)
  OrderDetails.OrderItems.Items = append(OrderDetails.OrderItems.Items, order1)

  payOnline2p := npsSdk.NewRequerimientoStruct_PayOnLine_2p()

  payOnline2p.Psp_Version = "2.2"
  payOnline2p.Psp_MerchantId = "psp_test"
  payOnline2p.Psp_TxSource = "WEB"
  payOnline2p.Psp_MerchTxRef = "ORDERX1466Xz-3"
  payOnline2p.Psp_MerchOrderId = "ORDERX1466Xz"
  payOnline2p.Psp_Amount = "15050"
  payOnline2p.Psp_NumPayments = "1"
  payOnline2p.Psp_Currency = "032"
  payOnline2p.Psp_Country = "ARG"
  payOnline2p.Psp_Product = "14"
  payOnline2p.Psp_CustomerMail = "jdoe@email.com"
  payOnline2p.Psp_CardNumber = "4507990000000010"
  payOnline2p.Psp_CardExpDate = "1912"
  payOnline2p.Psp_CardSecurityCode = "306"
  payOnline2p.Psp_SoftDescriptor = "Compra Art 15"
  payOnline2p.Psp_PosDateTime = "2016-12-01 12:00:00"

  payOnline2p.Psp_OrderDetails = OrderDetails
  payOnline2p.Psp_CustomerAdditionalDetails = CustomerAdditionalDetails
  payOnline2p.Psp_AmountAdditionalDetails = AmountAdditionalDetails
  payOnline2p.Psp_BillingDetails = Billing
  payOnline2p.Psp_MerchantAdditionalDetails = MerchantAdditionalDetails
  resp, err := service.PayOnLine_2p(payOnline2p)
  if err != nil {
    return err
  }

  fmt.Printf("\n")
  fmt.Printf("Response = [%s] [%s]\n", resp.Psp_ResponseCod, resp.Psp_ResponseMsg)
  fmt.Printf("Extended = [%s]\n", resp.Psp_ResponseExtended)
  return nil
}

func main() {

  err := npsSdk.Configure(map[string]interface{}{
	  "environment": CONSTANTS.SANDBOX_ENV,
	  "secret_key":  "_YOUR_SECRET_KEY_",
	})

  if err != nil {
	log.Fatalf("error configuring sdk: %v", err)
  }

  service := npsSdk.NewPaymentServicePlatformPortType(true)

  err = SendPayOnLine_2p(service)

  if err != nil {
    fmt.Printf("\n")
    fmt.Printf("ERROR [%s]\n", err)
  }

}

Environments

package main

import (
	"fmt"
	"log"
	"github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk"
	CONSTANTS "github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk/constants"
)

func main() {

  err := npsSdk.Configure(map[string]interface{}{
	  "environment": CONSTANTS.SANDBOX_ENV,
	})
  err := npsSdk.Configure(map[string]interface{}{
	  "environment": CONSTANTS.PRODUCTION_ENV,
	})
  err := npsSdk.Configure(map[string]interface{}{
	  "environment": CONSTANTS.STAGING_ENV,
	})
}

Error handling

All exceptions than can occur will be detailed inside of the response provided by NPS .


  err = SendPayOnLine_2p(service)

  if err != nil {
    fmt.Printf("\n")
    fmt.Printf("ERROR [%s]\n", err)
  }

Advanced configurations

Logging

Nps SDK allows you to log what’s happening with you request inside of our SDK, it logs by default to stout. The SDK uses the custom logger that you use for your project.

An example using your project logger.

package main

import (
	"fmt"
	"log"
	"os"
	"github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk"
	CONSTANTS "github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk/constants"

)

func main() {

  var appLog = log.New(os.Stdout, "", log.Ldate|log.Ltime|log.Lshortfile)
  f, err := os.OpenFile("appLog.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
  defer f.Close()
  if err != nil {
    log.Fatalf("error opening file: %v", err)
  }
  appLog.SetOutput(f)
  appLog.Println("MAIN begin")
 
  err = npsSdk.Configure(map[string]interface{}{
	  "environment": CONSTANTS.SANDBOX_ENV,
	  "secret_key":  "_YOUR_SECRET_KEY_",
	  "debug":       true,
	  "log_level":   CONSTANTS.DEBUG,
	  "npsLog":      appLog,      
	})
}
Loglevel

The "INFO" level will write concise information of the request and will mask sensitive data of the request. The "DEBUG" level will write information about the request to let developers debug it in a more detailed way.

package main

import (
	"fmt"
	"log"
	"os"
	"github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk"
	CONSTANTS "github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk/constants"
)

func main() {

  err := npsSdk.Configure(map[string]interface{}{
	  "environment": CONSTANTS.SANDBOX_ENV,
	  "secret_key":  "_YOUR_SECRET_KEY_",
	  "debug":       true,
	  "log_level":   CONSTANTS.INFO,
	})
}
Sanitize

Sanitize allows the SDK to truncate to a fixed size some fields that could make request fail, like extremely long name.

package main

import (
	"fmt"
	"log"
	"github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk"
	CONSTANTS "github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk/constants"
)

func main() {

  err := npsSdk.Configure(map[string]interface{}{
	  "environment": CONSTANTS.SANDBOX_ENV,
	  "secret_key":  "_YOUR_SECRET_KEY_",
	  "sanitize":    true,
	})
}
Timeout

You can change the timeout of the request.

ConnectionTimeout(Default=10 seconds): you can change the connection timeout of the request.

ExecutionTimeout(Default=60 seconds): you can change the execution timeout of the request.

package main

import (
	"fmt"
	"log"
	"github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk"
	CONSTANTS "github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk/constants"
)

func main() {

  err := npsSdk.Configure(map[string]interface{}{
	  "environment": CONSTANTS.SANDBOX_ENV,
	  "secret_key":  "_YOUR_SECRET_KEY_",
	  "conn_timeout": 10,
	  "timeout": 60,
	})
}

Proxy configuration
package main

import (
	"fmt"
	"log"
	"github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk"
	CONSTANTS "github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk/constants"
)

func main() {

  err := npsSdk.Configure(map[string]interface{}{
	  "environment": CONSTANTS.SANDBOX_ENV,
	  "secret_key":  "_YOUR_SECRET_KEY_",
	  "proxy_url": "http://yourproxy",
	  "proxy_username": "proxyUsername",
	  "proxy_password": "proxyPassword",
	})
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL