Expanding APIs beyond the Web

Post on 16-Jul-2015

1.003 views 1 download

Tags:

Transcript of Expanding APIs beyond the Web

@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

tim@getbraintree.com

developers.braintreepayments.com

slideshare.com/PayPal