Sample code for 30+ languages & platforms
Go Requires Chilkat v11.0.0+

PayPal - Find Completed Sales

See more PayPal Examples

List payments and find completed payments (sales transactions). Get the sales id, state, and total amount for each.

Chilkat Go Downloads

Go
    success := false

    //  This requires the Chilkat API to have been previously unlocked.
    //  See Global Unlock Sample for sample code.

    //  Load our previously obtained access token. (see PayPal OAuth2 Access Token)
    jsonToken := chilkat.NewJsonObject()
    jsonToken.LoadFile("qa_data/tokens/paypal.json")

    //  Build the Authorization request header field value.
    sbAuth := chilkat.NewStringBuilder()
    //  token_type should be "Bearer"
    sbAuth.Append(*jsonToken.StringOf("token_type"))
    sbAuth.Append(" ")
    sbAuth.Append(*jsonToken.StringOf("access_token"))

    //  Make the initial connection.
    //  A single REST object, once connected, can be used for many PayPal REST API calls.
    //  The auto-reconnect indicates that if the already-established HTTPS connection is closed,
    //  then it will be automatically re-established as needed.
    rest := chilkat.NewRest()
    bAutoReconnect := true
    success = rest.Connect("api.sandbox.paypal.com",443,true,bAutoReconnect)
    if success == false {
        fmt.Println(rest.LastErrorText())
        jsonToken.DisposeJsonObject()
        sbAuth.DisposeStringBuilder()
        rest.DisposeRest()
        return
    }

    //  ----------------------------------------------------------------------------------------------
    //  The code above this comment could be placed inside a function/subroutine within the application
    //  because the connection does not need to be made for every request.  Once the connection is made
    //  the app may send many requests..
    //  ----------------------------------------------------------------------------------------------

    //  Clear the REST object of any headers or query params from previous requests.
    rest.ClearAllHeaders()
    rest.ClearAllQueryParams()

    rest.AddHeader("Authorization",*sbAuth.GetAsString())

    //  To find sales transactions, we list payments and look for those
    //  containing "sale" transactions
    rest.AddQueryParam("count","100")
    rest.AddQueryParam("start_index","0")
    rest.AddQueryParam("sort_by","update_time")
    rest.AddQueryParam("sort_order","asc")

    //  Send the GET request and get the JSON response.
    sbJsonResponse := chilkat.NewStringBuilder()
    success = rest.FullRequestNoBodySb("GET","/v1/payments/payment",sbJsonResponse)
    if success == false {
        fmt.Println(rest.LastErrorText())
        jsonToken.DisposeJsonObject()
        sbAuth.DisposeStringBuilder()
        rest.DisposeRest()
        sbJsonResponse.DisposeStringBuilder()
        return
    }

    json := chilkat.NewJsonObject()
    json.SetEmitCompact(false)
    json.LoadSb(sbJsonResponse)

    //  (optional) Save the entire JSON response to a file to examine if desired..
    sbTemp := chilkat.NewStringBuilder()
    json.EmitSb(sbTemp)
    sbTemp.WriteFile("qa_output/paypal_payments.json","utf-8",false)

    fmt.Println("Response Status Code = ", rest.ResponseStatusCode())

    //  Did we get a 200 success response?
    if rest.ResponseStatusCode() != 200 {
        fmt.Println(*json.Emit())
        fmt.Println("Failed.")
        jsonToken.DisposeJsonObject()
        sbAuth.DisposeStringBuilder()
        rest.DisposeRest()
        sbJsonResponse.DisposeStringBuilder()
        json.DisposeJsonObject()
        sbTemp.DisposeStringBuilder()
        return
    }

    //  We are looking for sales transactions .
    //  As shown below, we are looking in the "transactions" for "related_resources"
    //  containing "sale" JSON objects. 

    //  	{ 
    //  	  "payments": [
    //  	    { 
    //  	      "id": "PAY-66A12106PU3254228LA3BYKI",
    //  	      "create_time": "2016-11-23T22:46:01Z",
    //  	      "update_time": "2016-11-23T22:46:07Z",
    //  	      "state": "approved",
    //  	      "intent": "sale",
    //  	      "payer": { 
    //  	          ...
    //  	          }
    //  	        ]
    //  	      },
    //  	      "transactions": [
    //  	        { 
    //  	          ...
    //  	          "related_resources": [
    //  	            { 
    //  	              "sale": { 
    //  	                "id": "70L88278E6781074B",
    //  	                "create_time": "2016-11-23T22:46:01Z",
    //  	                "update_time": "2016-11-23T22:46:07Z",
    //  	                "amount": { 
    //  	                  "total": "7.47",
    //  	                  "currency": "USD"
    //  	                },
    //  	                "state": "completed",
    //  	                "parent_payment": "PAY-66A12106PU3254228LA3BYKI",

    //  Iterate over the payments and show each sale transaction.
    jsonSale := chilkat.NewJsonObject()
    numPayments := json.SizeOfArray("payments")
    i := 0
    for i < numPayments {

        json.SetI(i)
        j := 0
        numTransactions := json.SizeOfArray("payments[i].transactions")
        for j < numTransactions {
            json.SetJ(j)
            numRelatedResources := json.SizeOfArray("payments[i].transactions[j].related_resources")
            k := 0
            for k < numRelatedResources {
                json.SetK(k)
                if json.HasMember("payments[i].transactions[j].related_resources[k].sale") == true {

                    json.ObjectOf2("payments[i].transactions[j].related_resources[k].sale",jsonSale)

                    fmt.Println("sale id: ", *jsonSale.StringOf("id"))
                    fmt.Println("state: ", *jsonSale.StringOf("state"))
                    fmt.Println("total: ", *jsonSale.StringOf("amount.total"))
                    fmt.Println("----")
                }

                k = k + 1
            }

            j = j + 1
        }

        i = i + 1
    }

    fmt.Println("success")

    jsonToken.DisposeJsonObject()
    sbAuth.DisposeStringBuilder()
    rest.DisposeRest()
    sbJsonResponse.DisposeStringBuilder()
    json.DisposeJsonObject()
    sbTemp.DisposeStringBuilder()
    jsonSale.DisposeJsonObject()