PureBasic
PureBasic
ETrade List Transactions
See more ETrade Examples
Gets transactions for the selected brokerage account.Chilkat PureBasic Downloads
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"
IncludeFile "CkXml.pb"
Procedure ChilkatExample()
success.i = 0
; This requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkHttp::setCkOAuth1(http, 1)
CkHttp::setCkOAuthVerifier(http, "")
CkHttp::setCkOAuthConsumerKey(http, "ETRADE_CONSUMER_KEY")
CkHttp::setCkOAuthConsumerSecret(http, "ETRADE_CONSUMER_SECRET")
; Load the access token previously obtained via the OAuth1 Authorization
jsonToken.i = CkJsonObject::ckCreate()
If jsonToken.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/etrade.json")
If success <> 1
Debug "Failed to load OAuth1 token"
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonToken)
ProcedureReturn
EndIf
CkHttp::setCkOAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"oauth_token"))
CkHttp::setCkOAuthTokenSecret(http, CkJsonObject::ckStringOf(jsonToken,"oauth_token_secret"))
sandboxUrl.s = "https://apisb.etrade.com/v1/accounts/{$accountIdKey}/transactions"
liveUrl.s = "https://api.etrade.com/v1/accounts/{$accountIdKey}/transactions"
CkHttp::ckSetUrlVar(http,"accountIdKey","6_Dpy0rmuQ9cu9IbTfvF2A")
resp.i = CkHttpResponse::ckCreate()
If resp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkHttp::ckHttpNoBody(http,"GET",sandboxUrl,resp)
If success = 0
Debug CkHttp::ckLastErrorText(http)
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonToken)
CkHttpResponse::ckDispose(resp)
ProcedureReturn
EndIf
; Make sure a successful response was received.
If CkHttpResponse::ckStatusCode(resp) > 200
Debug CkHttpResponse::ckStatusLine(resp)
Debug CkHttpResponse::ckHeader(resp)
Debug CkHttpResponse::ckBodyStr(resp)
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonToken)
CkHttpResponse::ckDispose(resp)
ProcedureReturn
EndIf
; Sample XML response:
; Use this online tool to generate parsing code from sample XML:
; Generate Parsing Code from XML
; <?xml version="1.0" encoding="UTF-8"?>
; <TransactionListResponse>
; <Transaction>
; <transactionId>18165100001766</transactionId>
; <accountId>83564979</accountId>
; <transactionDate>1528948800000</transactionDate>
; <postDate>1528948800000</postDate>
; <amount>-2</amount>
; <description>ACH WITHDRAWL REFID:109187276;</description>
; <description2>109187276</description2>
; <transactionType>Transfer</transactionType>
; <memo />
; <imageFlag>false</imageFlag>
; <instType>BROKERAGE</instType>
; <brokerage>
; <product />
; <quantity>0</quantity>
; <price>0</price>
; <settlementCurrency>USD</settlementCurrency>
; <paymentCurrency>USD</paymentCurrency>
; <fee>0</fee>
; <settlementDate>1528948800000</settlementDate>
; </brokerage>
; <detailsURI>https://api.etrade.com/v1/accounts/yIFaUoJ81qyAhgxLWRQ42g/transactions/18165100001766</detailsURI>
; </Transaction>
; <Transaction>
; <transactionId>18158100000983</transactionId>
; <accountId>83564979</accountId>
; <transactionDate>1528344000000</transactionDate>
; <postDate>1528344000000</postDate>
; <amount>-2</amount>
; <description>ACH WITHDRAWL REFID:98655276;</description>
; <description2>98655276</description2>
; <transactionType>Transfer</transactionType>
; <memo />
; <imageFlag>false</imageFlag>
; <instType>BROKERAGE</instType>
; <brokerage>
; <product />
; <quantity>0</quantity>
; <price>0</price>
; <settlementCurrency>USD</settlementCurrency>
; <paymentCurrency>USD</paymentCurrency>
; <fee>0</fee>
; <settlementDate>1528344000000</settlementDate>
; </brokerage>
; <detailsURI>https://api.etrade.com/v1/accounts/yIFaUoJ81qyAhgxLWRQ42g/transactions/18158100000983</detailsURI>
; </Transaction>
; <pageMarkers>eNpTsAlITE91zi%2FNK%2FHMc04syi8tTs2xM7TRxybMpWATkl%2BSmBOUmpxflAKWtTO10ccQg6mDmwEyEE0EqAbE8SvNTUotCk4tLE3NS061M9Ax0DEEYgOIA9BkuRQgmjxTfDKLQUYoQAV8E4uyU4vsDC0MzUwNDYDA0NzMrKamBmIKVJYLphpiKsyTUB7IbH1kwwFa7F0D</pageMarkers>
; <moreTransactions>false</moreTransactions>
; <transactionCount>5</transactionCount>
; <totalCount>5</totalCount>
; </TransactionListResponse>
xml.i = CkXml::ckCreate()
If xml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkXml::ckLoadXml(xml,CkHttpResponse::ckBodyStr(resp))
Debug CkXml::ckGetXml(xml)
transactionId.s
accountId.i
transactionDate.s
postDate.s
amount.i
description.s
description2.i
transactionType.s
imageFlag.s
instType.s
quantity.i
price.i
settlementCurrency.s
paymentCurrency.s
fee.i
settlementDate.s
detailsURI.s
pageMarkers.s
moreTransactions.s
transactionCount.i
totalCount.i
i.i = 0
count_i.i = CkXml::ckNumChildrenHavingTag(xml,"Transaction")
While i < count_i
CkXml::setCkI(xml, i)
transactionId = CkXml::ckGetChildContent(xml,"Transaction[i]|transactionId")
accountId = CkXml::ckGetChildIntValue(xml,"Transaction[i]|accountId")
transactionDate = CkXml::ckGetChildContent(xml,"Transaction[i]|transactionDate")
postDate = CkXml::ckGetChildContent(xml,"Transaction[i]|postDate")
amount = CkXml::ckGetChildIntValue(xml,"Transaction[i]|amount")
description = CkXml::ckGetChildContent(xml,"Transaction[i]|description")
description2 = CkXml::ckGetChildIntValue(xml,"Transaction[i]|description2")
transactionType = CkXml::ckGetChildContent(xml,"Transaction[i]|transactionType")
imageFlag = CkXml::ckGetChildContent(xml,"Transaction[i]|imageFlag")
instType = CkXml::ckGetChildContent(xml,"Transaction[i]|instType")
quantity = CkXml::ckGetChildIntValue(xml,"Transaction[i]|brokerage|quantity")
price = CkXml::ckGetChildIntValue(xml,"Transaction[i]|brokerage|price")
settlementCurrency = CkXml::ckGetChildContent(xml,"Transaction[i]|brokerage|settlementCurrency")
paymentCurrency = CkXml::ckGetChildContent(xml,"Transaction[i]|brokerage|paymentCurrency")
fee = CkXml::ckGetChildIntValue(xml,"Transaction[i]|brokerage|fee")
settlementDate = CkXml::ckGetChildContent(xml,"Transaction[i]|brokerage|settlementDate")
detailsURI = CkXml::ckGetChildContent(xml,"Transaction[i]|detailsURI")
i = i + 1
Wend
pageMarkers = CkXml::ckGetChildContent(xml,"pageMarkers")
moreTransactions = CkXml::ckGetChildContent(xml,"moreTransactions")
transactionCount = CkXml::ckGetChildIntValue(xml,"transactionCount")
totalCount = CkXml::ckGetChildIntValue(xml,"totalCount")
Debug "Success."
CkHttp::ckDispose(http)
CkJsonObject::ckDispose(jsonToken)
CkHttpResponse::ckDispose(resp)
CkXml::ckDispose(xml)
ProcedureReturn
EndProcedure