Request Format
The Button API
The Button API is designed around REST. Request parameters must be given as JSON-encoded request body.
The only unusual request parameter is api_key which is sent as a basic authentication username. You can generate and manage API keys in your Button dashboard. API keys are secret and should be treated like passwords by storing them somewhere secure.
Code Examples
Python
from pybutton import Client
client = Client('sk-XXX')
response = client.orders.create({
'total': 50,
'currency': 'USD',
'order_id': '2007',
'finalization_date': '2017-08-02T19:26:08Z',
'btn_ref': 'srctok-XXX',
'customer': {
'id': 'mycustomer-1234',
'email_sha256': hashlib.sha256("user@example.com".lower().strip()).hexdigest(),
},
})
JavaScript
var client = require('@button/button-client-node')('sk-XXX');
client.orders.create({
total: 50,
currency: 'USD',
order_id: '1989',
finalization_date: '2017-08-02T19:26:08Z',
btn_ref: 'srctok-XXX',
customer: {
id: 'mycustomer-1234',
email_sha256: crypto.createHash('sha256').update('user@example.com'.toLowerCase().trim()).digest('hex')
}
}, function(err, res) {
// ...
});
Ruby
require 'button'
client = Button::Client.new('sk-XXX')
response = client.orders.create({
total: 50,
currency: 'USD',
order_id: '1994',
finalization_date: '2017-08-02T19:26:08Z',
btn_ref: 'srctok-XXX',
customer: {
id: 'mycustomer-1234',
email_sha256: Digest::SHA256.hexdigest('user@example.com'.downcase.strip)
}
})
cURL
curl https://api.usebutton.com/v1/order \
-X POST \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"total": 50,
"currency": "USD",
"order_id": "1994",
"finalization_date": "2017-08-02T19:26:08Z",
"btn_ref": "srctok-XXX",
"customer": {
"id": "mycustomer-1234",
"email_sha256": "'`echo -n \"user@example.com\" | openssl dgst -sha256`'"
}
}'