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.
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(),
},
})
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) {
// ...
});
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 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`'"
}
}'