Sample code for 30+ languages & platforms
DataFlex

PayPal -- Get an OAuth 2.0 Access Token

See more PayPal Examples

Demonstrates how to send a request to get a PayPal OAuth2 access token. Sends an HTTP request equivalent to the following:
curl https://api.sandbox.paypal.com/v1/oauth2/token \
  -H "Accept: application/json" \
  -H "Accept-Language: en_US" \
  -u "Client-Id:Secret" \
  -d "grant_type=client_credentials"

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoRest
    Boolean iBAutoReconnect
    String sResponseStr
    Handle hoJson
    Handle hoDateTime
    Boolean iBLocalTime
    Integer iDtNow
    Handle hoSbResponse
    Boolean iBEmitBom
    String sTemp1
    Integer iTemp1
    Boolean bTemp1

    Move False To iSuccess

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

    Get Create (RefClass(cComChilkatRest)) To hoRest
    If (Not(IsComObjectCreated(hoRest))) Begin
        Send CreateComObject of hoRest
    End

    // 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.
    Move True To iBAutoReconnect
    Get ComConnect Of hoRest "api.sandbox.paypal.com" 443 True iBAutoReconnect To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoRest To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Duplicate this request:

    // 	curl https://api.sandbox.paypal.com/v1/oauth2/token \
    // 	  -H "Accept: application/json" \
    // 	  -H "Accept-Language: en_US" \
    // 	  -u "Client-Id:Secret" \
    // 	  -d "grant_type=client_credentials"

    Get ComAddHeader Of hoRest "Accept" "application/json" To iSuccess
    Get ComAddHeader Of hoRest "Accept-Language" "en_US" To iSuccess

    // For additional help on where to find  your client ID and API secret, see PayPal Client_ID and API_Secret
    Get ComSetAuthBasic Of hoRest "PAYPAL_REST_API_CLIENT_ID" "PAYPAL_REST_API_SECRET" To iSuccess

    Get ComAddQueryParam Of hoRest "grant_type" "client_credentials" To iSuccess

    Get ComFullRequestFormUrlEncoded Of hoRest "POST" "/v1/oauth2/token" To sResponseStr
    Get ComLastMethodSuccess Of hoRest To bTemp1
    If (bTemp1 <> True) Begin
        Get ComLastErrorText Of hoRest To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComLastRequestHeader Of hoRest To sTemp1
    Showln sTemp1

    // A sample response:

    // 	{
    // 	  "scope": "https://api.paypal.com/v1/payments/.* https://api.paypal.com/v1/vault/credit-card https://api.paypal.com/v1/vault/credit-card/.*",
    // 	  "access_token": "EEwJ6tF9x5WCIZDYzyZGaz6Khbw7raYRIBV_WxVvgmsG",
    // 	  "token_type": "Bearer",
    // 	  "app_id": "APP-6XR95014BA15863X",
    // 	  "expires_in": 28800
    // 	}

    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Get ComLoad Of hoJson sResponseStr To iSuccess
    Set ComEmitCompact Of hoJson To False

    // Check the response status code.  A 200 indicates success..
    Get ComResponseStatusCode Of hoRest To iTemp1
    If (iTemp1 <> 200) Begin
        Get ComEmit Of hoJson To sTemp1
        Showln sTemp1
        Showln "Failed."
        Procedure_Return
    End

    // Given that the access token expires in approx 8 hours,
    // let's record the date/time this token was created.
    // This will allow us to know beforehand if the token
    // is expired (and we can then fetch a new token).
    Get Create (RefClass(cComCkDateTime)) To hoDateTime
    If (Not(IsComObjectCreated(hoDateTime))) Begin
        Send CreateComObject of hoDateTime
    End
    Move False To iBLocalTime
    Get ComGetAsUnixTime Of hoDateTime iBLocalTime To iDtNow
    Get ComAppendInt Of hoJson "tokenCreateTimeUtc" iDtNow To iSuccess

    // Examine the access token and save to a file.
    Get ComStringOf Of hoJson "access_token" To sTemp1
    Showln "Access Token: " sTemp1
    Showln "Full JSON Response:"
    Get ComEmit Of hoJson To sTemp1
    Showln sTemp1

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbResponse
    If (Not(IsComObjectCreated(hoSbResponse))) Begin
        Send CreateComObject of hoSbResponse
    End
    Get ComEmit Of hoJson To sTemp1
    Get ComAppend Of hoSbResponse sTemp1 To iSuccess
    Move False To iBEmitBom
    Get ComWriteFile Of hoSbResponse "qa_data/tokens/paypal.json" "utf-8" iBEmitBom To iSuccess


End_Procedure