DataFlex
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
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