React Native
React Native
ETrade v1 Place Order
See more HTTP Misc Examples
Submits an order after it has been successfully previewed. (Your application must first send the POST to preview the order. Then it can send this POST to place the order.)Chilkat React Native Downloads
import { Http, HttpResponse, JsonObject, Xml } from '@chilkat/react-native'
async function chilkatExample() {
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
const http = new Http();
http.oAuth1 = true;
http.oAuthVerifier = '';
http.oAuthConsumerKey = 'ETRADE_CONSUMER_KEY';
http.oAuthConsumerSecret = 'ETRADE_CONSUMER_SECRET';
// Load the access token previously obtained via the OAuth1 3-Legged Authorization examples Step1 and Step2.
const json = new JsonObject();
try {
json.loadFile('qa_data/tokens/etrade.json');
} catch {
console.log('Failed to load OAuth1 token');
return;
}
http.oAuthToken = json.stringOf('oauth_token');
http.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"?>
// <PlaceOrderRequest>
// <orderType>EQ</orderType>
// <clientOrderId>sd464333</clientOrderId>
// <PreviewIds>
// <previewId>730206520</previewId>
// </PreviewIds>
// <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>150</quantity>
// </Instrument>
// </Order>
// </PlaceOrderRequest>
const xml = new Xml();
xml.tag = 'PlaceOrderRequest';
xml.updateChildContent('orderType', 'EQ');
xml.updateChildContent('clientOrderId', 'sd464333');
xml.updateChildContent('PreviewIds|previewId', '730206520');
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', '150');
const xmlContent = xml.getXml();
const endpointUrl = 'https://apisb.etrade.com/v1/accounts/{accountIdKey}/orders/place';
const resp = new HttpResponse();
try {
await http.httpStrAsync('POST', endpointUrl, xmlContent, 'utf-8', 'application/xml', resp);
} catch {
console.log(http.lastErrorText);
return;
}
// A 200 status code indicates success.
const statusCode = resp.statusCode;
console.log(`statusCode = ${statusCode}`);
// 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);
const tagPath = '';
const orderType = xml.getChildContent('orderType');
const orderTerm = xml.getChildContent('Order|orderTerm');
const priceType = xml.getChildContent('Order|priceType');
const limitPrice = xml.getChildContent('Order|limitPrice');
const stopPrice = xml.getChildIntValue('Order|stopPrice');
const marketSession = xml.getChildContent('Order|marketSession');
const allOrNone = xml.getChildContent('Order|allOrNone');
const symbolArg = xml.getChildContent('Order|Instrument|Product|symbol');
const securityType = xml.getChildContent('Order|Instrument|Product|securityType');
const symbolDescription = xml.getChildContent('Order|Instrument|symbolDescription');
const orderAction = xml.getChildContent('Order|Instrument|orderAction');
const quantityType = xml.getChildContent('Order|Instrument|quantityType');
const quantity = xml.getChildIntValue('Order|Instrument|quantity');
const cancelQuantity = xml.getChildContent('Order|Instrument|cancelQuantity');
const reserveOrder = xml.getChildContent('Order|Instrument|reserveOrder');
const reserveQuantity = xml.getChildContent('Order|Instrument|reserveQuantity');
const code = xml.getChildIntValue('Order|messages|Message|code');
const description = xml.getChildContent('Order|messages|Message|description');
const vType = xml.getChildContent('Order|messages|Message|type');
const egQual = xml.getChildContent('Order|egQual');
const estimatedCommission = xml.getChildContent('Order|estimatedCommission');
const estimatedTotalAmount = xml.getChildContent('Order|estimatedTotalAmount');
const netPrice = xml.getChildIntValue('Order|netPrice');
const netBid = xml.getChildIntValue('Order|netBid');
const netAsk = xml.getChildIntValue('Order|netAsk');
const gcd = xml.getChildIntValue('Order|gcd');
const dstFlag = xml.getChildContent('dstFlag');
const optionLevelCd = xml.getChildIntValue('optionLevelCd');
const marginLevelCd = xml.getChildContent('marginLevelCd');
const orderId = xml.getChildIntValue('OrderIds|orderId');
const placedTime = xml.getChildContent('placedTime');
const accountId = xml.getChildIntValue('accountId');
// Sample XML Response
// <?xml version="1.0" encoding="UTF-8"?>
// <PlaceOrderResponse>
// <orderType>EQ</orderType>
// <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>150</quantity>
// <cancelQuantity>0.0</cancelQuantity>
// <reserveOrder>true</reserveOrder>
// <reserveQuantity>0.0</reserveQuantity>
// </Instrument>
// <messages>
// <Message>
// <code>1027</code>
// <description>200|The market was closed when we received your order. It has been entered into our system and will be reviewed prior to market open on the next regular trading day. After market open, please check to make sure your order was accepted.</description>
// <type>WARNING</type>
// </Message>
// </messages>
// <egQual>EG_QUAL_NOT_A_MARKET_ORDER</egQual>
// <estimatedCommission>6.95</estimatedCommission>
// <estimatedTotalAmount>28283.45</estimatedTotalAmount>
// <netPrice>0</netPrice>
// <netBid>0</netBid>
// <netAsk>0</netAsk>
// <gcd>0</gcd>
// <ratio />
// </Order>
// <dstFlag>true</dstFlag>
// <optionLevelCd>4</optionLevelCd>
// <marginLevelCd>MARGIN_TRADING_ALLOWED</marginLevelCd>
// <OrderIds>
// <orderId>5</orderId>
// </OrderIds>
// <placedTime>1528764717641</placedTime>
// <accountId>84312767</accountId>
// </PlaceOrderResponse>
}