expanding apis beyond the web
TRANSCRIPT
@Braintree_Dev @SeraAndroid
Expanding APIs beyond the Web
Tim Messerschmidt
<Head of Developer Advocacy, EMEA/>
Braintree_Dev.
#APIDays Paris
@Braintree_Dev @SeraAndroid
@Braintree_Dev @SeraAndroid
That’s me
@Braintree_Dev @SeraAndroid@Braintree_Dev @SeraAndroid
@Braintree_Dev @SeraAndroid
OFF FUTUREPayment Method
ON
ON
ON
ON
Braintree
@Braintree_Dev @SeraAndroid
>3 key requirements in tech
@Braintree_Dev @SeraAndroidSECURITY
@Braintree_Dev @SeraAndroidFLEXIBILITY
@Braintree_Dev @SeraAndroidSCALABILITY
@Braintree_Dev @SeraAndroid
>Current technology landscape
@Braintree_Dev @SeraAndroid@Braintree_Dev @SeraAndroid
@Braintree_Dev @SeraAndroid@Braintree_Dev @SeraAndroid
@Braintree_Dev @SeraAndroid
Bluetooth LE
@Braintree_Dev @SeraAndroid
Differences BLE vs. Bluetooth
• Lower range (50m vs 100m)
• Lower latency (Factor 16)
• Lower battery consumption (Factor 100)
nodesagency.com/the-beacon-dictionary
@Braintree_Dev @SeraAndroid@Braintree_Dev @SeraAndroidESTIMOTE BEACONS
@Braintree_Dev @SeraAndroid
>Payments in the background
@Braintree_Dev @SeraAndroid
@Braintree_Dev @SeraAndroid
>Wearables and Biometrics
@Braintree_Dev @SeraAndroidFINGERPRINT AS UNIQUE TOKEN
@Braintree_Dev @SeraAndroidHEARTBEAT AS IDENTIFIER
@Braintree_Dev @SeraAndroid
A Trusted Environment
@Braintree_Dev @SeraAndroid
“Favor security too much over the experience
and you’ll make the website a pain to use.”
smashingmagazine.com/2012/10/26/password-masking-hurt-signup-form
@Braintree_Dev @SeraAndroid
>Introducing: The Hype Cyclegartner.com/newsroom/id/2819918 (2014)
@Braintree_Dev @SeraAndroid
@Braintree_Dev @SeraAndroid
@Braintree_Dev @SeraAndroid
@Braintree_Dev @SeraAndroid
@Braintree_Dev @SeraAndroid
>26 Billion IoT devices by 2020gartner.com/newsroom/id/2636073 (2013)
@Braintree_Dev @SeraAndroid
>2020: 200 billion smart devicesintel.ly/1i8O2ec (2014)
@Braintree_Dev @SeraAndroid@Braintree_Dev @SeraAndroid
6 Billion 15 Billion
200 Billion
0
50
100
150
200
250
2006 2015 2020
The Explosion of IoT devices
@Braintree_Dev @SeraAndroid
>The Age of Rapid Prototyping
@Braintree_Dev @SeraAndroid
>The Movement of Open Source
@Braintree_Dev @SeraAndroid
>A new Full Stack Developer
@Braintree_Dev @SeraAndroid
>Evaluation of available hardware
@Braintree_Dev @SeraAndroidRaspberry Pi
@Braintree_Dev @SeraAndroidArduino Yún
@Braintree_Dev @SeraAndroidIntel Edison
@Braintree_Dev @SeraAndroidThe Spark Core
@Braintree_Dev @SeraAndroid
IoT Authentication1. Non-expiring pre-generated Access Token
2. Access Token dynamically requested
@Braintree_Dev @SeraAndroid
Receiving an OAuth Access Token
POSThttps://api.spark.io/oauth/token
PARAMS{
"grant_type": "password"
"username": { Your Email Address }
"password": { Password }
}
@Braintree_Dev @SeraAndroid
Sending Data to the Core
POST
https://api.spark.io/v1/devices/{deviceid}/{route}
PARAMS
{
"access_token": {OAuth Access Token}
"args": {Payload}
}
@Braintree_Dev @SeraAndroid
Registering Functions
void setup() {
Spark.function("handler", handlePayload);
}
void loop() {
...
}
int handlePayload(String payload) {
...
}
@Braintree_Dev @SeraAndroid
Registering Functions
void setup() {
Spark.function("handler", handlePayload);
}
void loop() {
...
}
int handlePayload(String payload) {
...
}
@Braintree_Dev @SeraAndroid
Registering Functions
void setup() {
Spark.function("handler", handlePayload);
}
void loop() {
...
}
int handlePayload(String payload) {
...
}
@Braintree_Dev @SeraAndroid
Registering Functions
void setup() {
Spark.function("handler", handlePayload);
}
void loop() {
...
}
int handlePayload(String payload) {
...
}
@Braintree_Dev @SeraAndroid
Braintree's v.zero on a
POS devicedevelopers.braintreepayments.com
github.com/SeraphimSerapis/vzero-iot-node
@Braintree_Dev @SeraAndroid@Braintree_Dev @SeraAndroid
Frontend
JS
Backend
Node.js
Spark
Core
BraintreeSpark
Cloud
@Braintree_Dev @SeraAndroid
@Braintree_Dev @SeraAndroid
Sending transactions to the Spark
var formData = {
access_token: sparkToken,
params: amount + ',' + method
};
request.post({
url: 'https://api.spark.io/v1/devices/' + sparkDeviceID + '/pay',
form: formData }, function (err, httpResponse, body) {
if (err) {
console.log(err);
} else {
console.log(body);
}
});
@Braintree_Dev @SeraAndroid
Sending transactions to the Spark
var formData = {
access_token: sparkToken,
params: amount + ',' + method
};
request.post({
url: 'https://api.spark.io/v1/devices/' + sparkDeviceID + '/pay',
form: formData }, function (err, httpResponse, body) {
if (err) {
console.log(err);
} else {
console.log(body);
}
});
@Braintree_Dev @SeraAndroid
Sending transactions to the Spark
var formData = {
access_token: sparkToken,
params: amount + ',' + method
};
request.post({
url: 'https://api.spark.io/v1/devices/' + sparkDeviceID + '/pay',
form: formData }, function (err, httpResponse, body) {
if (err) {
console.log(err);
} else {
console.log(body);
}
});
@Braintree_Dev @SeraAndroid
Sending transactions to the Spark
var formData = {
access_token: sparkToken,
params: amount + ',' + method
};
request.post({
url: 'https://api.spark.io/v1/devices/' + sparkDeviceID + '/pay',
form: formData }, function (err, httpResponse, body) {
if (err) {
console.log(err);
} else {
console.log(body);
}
});
@Braintree_Dev @SeraAndroid
Spark Support for SSE
“A server-sent event is when a web page automatically gets
updates from a server.”
w3schools.com/Html/html5_serversentevents.asp
@Braintree_Dev @SeraAndroid
>A new Standard: FIDO Alliance
@Braintree_Dev @SeraAndroid
>The Road Ahead
@Braintree_Dev @SeraAndroid
Thanks
developers.braintreepayments.com
slideshare.com/PayPal