Sample code for 30+ languages & platforms
Perl

ETrade v1 Preview Order

See more HTTP Misc Examples

Gets the order details for a selected brokerage account based on the search criteria provided.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

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

$http = chilkat::CkHttp->new();

$http->put_OAuth1(1);
$http->put_OAuthVerifier("");
$http->put_OAuthConsumerKey("ETRADE_CONSUMER_KEY");
$http->put_OAuthConsumerSecret("ETRADE_CONSUMER_SECRET");

# Load the access token previously obtained via the OAuth1 3-Legged Authorization examples Step1 and Step2.
$json = chilkat::CkJsonObject->new();
$success = $json->LoadFile("qa_data/tokens/etrade.json");
if ($success != 1) {
    print "Failed to load OAuth1 token" . "\r\n";
    exit;
}

$http->put_OAuthToken($json->stringOf("oauth_token"));
$http->put_OAuthTokenSecret($json->stringOf("oauth_token_secret"));

# See the ETrade v1 API documentation HERE.

# Sample XML Request
# Use this online tool to generate the code from sample XML: 
# Generate Code to Create XML

# <?xml version="1.0" encoding="UTF-8"?>
# <PreviewOrderRequest>
#    <orderType>EQ</orderType>
#    <clientOrderId>sdfer333</clientOrderId>
#    <Order>
#       <allOrNone>false</allOrNone>
#       <priceType>LIMIT</priceType>
#       <orderTerm>GOOD_FOR_DAY</orderTerm>
#       <marketSession>REGULAR</marketSession>
#       <stopPrice />
#       <limitPrice>188.51</limitPrice>
#       <Instrument>
#          <Product>
#             <securityType>EQ</securityType>
#             <symbol>FB</symbol>
#          </Product>
#          <orderAction>BUY</orderAction>
#          <quantityType>QUANTITY</quantityType>
#          <quantity>10</quantity>
#       </Instrument>
#    </Order>
# </PreviewOrderRequest>

$xml = chilkat::CkXml->new();
$xml->put_Tag("PreviewOrderRequest");
$xml->UpdateChildContent("orderType","EQ");
$xml->UpdateChildContent("clientOrderId","sdfer333");
$xml->UpdateChildContent("Order|allOrNone","false");
$xml->UpdateChildContent("Order|priceType","LIMIT");
$xml->UpdateChildContent("Order|orderTerm","GOOD_FOR_DAY");
$xml->UpdateChildContent("Order|marketSession","REGULAR");
$xml->UpdateChildContent("Order|stopPrice","");
$xml->UpdateChildContent("Order|limitPrice","188.51");
$xml->UpdateChildContent("Order|Instrument|Product|securityType","EQ");
$xml->UpdateChildContent("Order|Instrument|Product|symbol","FB");
$xml->UpdateChildContent("Order|Instrument|orderAction","BUY");
$xml->UpdateChildContent("Order|Instrument|quantityType","QUANTITY");
$xml->UpdateChildContent("Order|Instrument|quantity","10");

$xmlContent = $xml->getXml();
$endpointUrl = "https://apisb.etrade.com/v1/accounts/{accountIdKey}/orders/preview";

$resp = chilkat::CkHttpResponse->new();
$success = $http->HttpStr("POST",$endpointUrl,$xmlContent,"utf-8","application/xml",$resp);
if ($success == 0) {
    print $http->lastErrorText() . "\r\n";
    exit;
}

# A 200 status code indicates success.
$statusCode = $resp->get_StatusCode();
print "statusCode = " . $statusCode . "\r\n";

# Use the following online tool to generate parsing code from sample XML: 
# Generate Parsing Code from XML

# A sample XML response is shown below...

$xml->LoadXml($resp->bodyStr());

$orderType = $xml->getChildContent("orderType");
$totalOrderValue = $xml->getChildContent("totalOrderValue");
$orderTerm = $xml->getChildContent("Order|orderTerm");
$priceType = $xml->getChildContent("Order|priceType");
$limitPrice = $xml->getChildContent("Order|limitPrice");
$stopPrice = $xml->GetChildIntValue("Order|stopPrice");
$marketSession = $xml->getChildContent("Order|marketSession");
$allOrNone = $xml->getChildContent("Order|allOrNone");
$symbol = $xml->getChildContent("Order|Instrument|Product|symbol");
$securityType = $xml->getChildContent("Order|Instrument|Product|securityType");
$symbolDescription = $xml->getChildContent("Order|Instrument|symbolDescription");
$orderAction = $xml->getChildContent("Order|Instrument|orderAction");
$quantityType = $xml->getChildContent("Order|Instrument|quantityType");
$quantity = $xml->GetChildIntValue("Order|Instrument|quantity");
$cancelQuantity = $xml->getChildContent("Order|Instrument|cancelQuantity");
$reserveOrder = $xml->getChildContent("Order|Instrument|reserveOrder");
$reserveQuantity = $xml->getChildContent("Order|Instrument|reserveQuantity");
$i = 0;
$count_i = $xml->NumChildrenHavingTag("Order|messages|Message");
while ($i < $count_i) {
    $xml->put_I($i);
    $code = $xml->GetChildIntValue("Order|messages|Message[i]|code");
    $description = $xml->getChildContent("Order|messages|Message[i]|description");
    $v_type = $xml->getChildContent("Order|messages|Message[i]|type");
    $i = $i + 1;
}

$egQual = $xml->getChildContent("Order|egQual");
$estimatedCommission = $xml->getChildContent("Order|estimatedCommission");
$estimatedTotalAmount = $xml->getChildContent("Order|estimatedTotalAmount");
$netPrice = $xml->GetChildIntValue("Order|netPrice");
$netBid = $xml->GetChildIntValue("Order|netBid");
$netAsk = $xml->GetChildIntValue("Order|netAsk");
$gcd = $xml->GetChildIntValue("Order|gcd");
$previewId = $xml->GetChildIntValue("PreviewIds|previewId");
$previewTime = $xml->getChildContent("previewTime");
$dstFlag = $xml->getChildContent("dstFlag");
$accountId = $xml->GetChildIntValue("accountId");
$optionLevelCd = $xml->GetChildIntValue("optionLevelCd");
$marginLevelCd = $xml->getChildContent("marginLevelCd");
$ahDisclosureFlag = $xml->getChildContent("Disclosure|ahDisclosureFlag");
$aoDisclosureFlag = $xml->getChildContent("Disclosure|aoDisclosureFlag");
$conditionalDisclosureFlag = $xml->getChildContent("Disclosure|conditionalDisclosureFlag");
$ehDisclosureFlag = $xml->getChildContent("Disclosure|ehDisclosureFlag");
$marginBuyingPower = $xml->getChildContent("marginBuyingPower");

# Sample XML Response

# <?xml version="1.0" encoding="UTF-8"?>
# <PreviewOrderResponse>
#    <orderType>EQ</orderType>
#    <totalOrderValue>1892.05</totalOrderValue>
#    <Order>
#       <orderTerm>GOOD_FOR_DAY</orderTerm>
#       <priceType>LIMIT</priceType>
#       <limitPrice>188.51</limitPrice>
#       <stopPrice>0</stopPrice>
#       <marketSession>REGULAR</marketSession>
#       <allOrNone>false</allOrNone>
#       <Instrument>
#          <Product>
#             <symbol>FB</symbol>
#             <securityType>EQ</securityType>
#          </Product>
#          <symbolDescription>FACEBOOK INC CL A</symbolDescription>
#          <orderAction>BUY</orderAction>
#          <quantityType>QUANTITY</quantityType>
#          <quantity>10</quantity>
#          <cancelQuantity>0.0</cancelQuantity>
#          <reserveOrder>true</reserveOrder>
#          <reserveQuantity>0.0</reserveQuantity>
#       </Instrument>
#       <messages>
#          <Message>
#             <code>1042</code>
#             <description>200|You have an existing open order for this security on the same side of the market. If you did not intend to place a second order for this security, please modify your order now.</description>
#             <type>WARNING</type>
#          </Message>
#          <Message>
#             <code>3093</code>
#             <description>Position Concentrated.</description>
#             <type>WARNING</type>
#          </Message>
#       </messages>
#       <egQual>EG_QUAL_NOT_A_MARKET_ORDER</egQual>
#       <estimatedCommission>6.95</estimatedCommission>
#       <estimatedTotalAmount>1892.05</estimatedTotalAmount>
#       <netPrice>0</netPrice>
#       <netBid>0</netBid>
#       <netAsk>0</netAsk>
#       <gcd>0</gcd>
#       <ratio />
#    </Order>
#    <PreviewIds>
#       <previewId>1020563279</previewId>
#    </PreviewIds>
#    <previewTime>1529018458516</previewTime>
#    <dstFlag>true</dstFlag>
#    <accountId>84246841</accountId>
#    <optionLevelCd>4</optionLevelCd>
#    <marginLevelCd>MARGIN_TRADING_ALLOWED</marginLevelCd>
#    <Disclosure>
#       <ahDisclosureFlag>false</ahDisclosureFlag>
#       <aoDisclosureFlag>false</aoDisclosureFlag>
#       <conditionalDisclosureFlag>true</conditionalDisclosureFlag>
#       <ehDisclosureFlag>false</ehDisclosureFlag>
#    </Disclosure>
#    <marginBuyingPower>86758.05</marginBuyingPower>
# </PreviewOrderResponse>