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
OFF FUTURE 
Payment Method 
ON 
ON 
ON 
ON 
Braintree 
@Braintree_Dev @SeraAndroid
>3 key requirements in tech 
@Braintree_Dev @SeraAndroid
SECURITY 
@Braintree_Dev @SeraAndroid
FLEXIBILITY 
@Braintree_Dev @SeraAndroid
SCALABILITY 
@Braintree_Dev @SeraAndroid
>Current technology landscape 
@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
ESTIMOTE BEACONS 
@Braintree_Dev @SeraAndroid
>Payments in the background 
@Braintree_Dev @SeraAndroid
@Braintree_Dev @SeraAndroid
>Wearables and Biometrics 
@Braintree_Dev @SeraAndroid
FINGERPRINT AS UNIQUE TOKEN 
@Braintree_Dev @SeraAndroid
HEARTBEAT 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 Cycle 
gartner.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 2020 
gartner.com/newsroom/id/2636073 (2013) 
@Braintree_Dev @SeraAndroid
>2020: 200 billion smart devices 
intel.ly/1i8O2ec (2014) 
@Braintree_Dev @SeraAndroid
The Explosion of IoT devices 
6 Billion 15 Billion 
200 Billion 
250 
200 
150 
100 
50 
0 
2006 2015 2020 
@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 @SeraAndroid
@Braintree_Dev Raspberry Pi @SeraAndroid
@Braintree_Dev Arduino Yún @SeraAndroid
@Braintree_Dev Intel Edison @SeraAndroid
@Braintree_DevThe Spark Core@SeraAndroid
IoT Authentication 
1. Non-expiring pre-generated Access Token 
2. Access Token dynamically requested 
@Braintree_Dev @SeraAndroid
Receiving an OAuth Access Token 
POST 
https://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 device 
developers.braintreepayments.com 
github.com/SeraphimSerapis/vzero-iot-node 
@Braintree_Dev @SeraAndroid
Frontend 
JS 
Backend 
Node.js 
Spark 
Core 
Braintree 
Spark 
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 
@Braintree_Dev @SeraAndroid

Expanding APIs beyond the Web

Editor's Notes

  • #2 We’re here to make your life as developers easier How to make payments more secure How to open up payments?
  • #5 First payments company to open up APIs in 2009 Founded in 1998 Confinity – Max Levchin & Peter Thiel Acquired in 2000 by x.commerce – Elon Musk Renamed to PayPal in 2001 Acquired by eBay in 2002
  • #6 Founded in 2007 Full-stack payment solution Acquired Venmo 2012 Acquired by PayPal 2013
  • #7 “What’s hot in fintech?”
  • #11 “What’s hot in fintech?”
  • #14 - QR-Codes suck - Useful for sending small packages - Not good for sending huge chunks of data
  • #20 Should biometry replace passwords or identity?
  • #21 Bionym startup based out of Toronto Heartbeat unique to a person
  • #23 Let’s apply this to hardware, too
  • #31 26 smart devices per human being
  • #32 Frontend Backend Hardware
  • #33 Creative Commons license and such Companies realized that OSS makes sense Let’s convince them that OS Hardware should be a thing
  • #34 New breed
  • #35 New breed
  • #36 February 2012 by Raspberry Pi Foundation Originally intended for education Discovered by hackers
  • #37 Comes with an OpenWrt-based Linux Can communicate with that Linux Comes with cURL, shell scripts and Python
  • #38 Leverages the Intel Edison chip Based on x86 architecture Arduino-certified Comes with Linux Yocta
  • #39 Originally started on Kickstarter Cloud Code Hardware and Firmware Open Source
  • #49 Learned soldering for this
  • #54 SSE stream via TCP Socket Webhooks not implemented yet