Skip to content

Instantly share code, notes, and snippets.

@robertz
Last active December 14, 2015 18:48
Show Gist options
  • Save robertz/5131561 to your computer and use it in GitHub Desktop.
Save robertz/5131561 to your computer and use it in GitHub Desktop.
component output="false" {
public any function init(){
variables.Stripe = createObject("Java", "com.stripe.Stripe");
Stripe.apiKey = "<YOUR SECRET KEY HERE>";
return this;
}
// https://github.com/jeisenlo/ColdFusion-Stripe-CFC
private numeric function timeToUTCInt(required timestamp date) {
var currUTCDate = DateConvert('local2utc', arguments.date);
var baseDate = CreateDateTime(1970, 1, 1, 0, 0, 0);
var intUTCDate = DateDiff('s', baseDate, currUTCDate);
return intUTCDate;
}
// https://github.com/jeisenlo/ColdFusion-Stripe-CFC
private datetime function utcIntToTime(required numeric intUtcTime) {
var baseDate = CreateDateTime(1970, 1, 1, 0, 0, 0);
return DateAdd('s', arguments.intUtcTime, DateConvert('utc2Local', baseDate));;
}
/*****************************************************************************
* Charge com.stripe.model.Charge
*
* Params:
* Amount : Amount to charge (in cents)
* Currency : ISO currency type (default usd)
* Card : A stripe.js token or a struct populated with card values
*****************************************************************************/
public struct function charge(){
var result = "";
var response = {};
var createdCharge = "";
try{
chargeParams = {
amount: '100',
currency: 'usd'
}
structAppend(chargeParams, arguments);
var createdCharge = createObject("Java", "com.stripe.model.Charge");
result = createdCharge.create(chargeParams);
response['success'] = true;
structAppend(response, deserializeJSON(listRest(result.toString(), ":")));
response['created'] = utcIntToTime(response.created);
}
catch(java.lang.Exception e){
response = {
success: false,
error: e.message,
type: e.type
};
}
return response;
}
/*****************************************************************************
* Events com.stripe.model.EventCollection
*
* Params:
* Type : A string containing a specific event name
* Created : UTC timestamp representing date. Also accepts a map (struct)
* Count : Number of results to return (default 10)
* Offset : Array offset to beging from
*****************************************************************************/
public struct function events(){
var events = createObject("Java", "com.stripe.model.Event");
var result = "";
var response = {};
var t = {};
var params = {};
try{
structAppend(params, arguments);
result = events.all(params).getData();
response['success'] = true;
response['eventArray'] = [];
for(var i = 1; i <= arrayLen(result); i++){
t = deserializeJSON(listRest(result[i].toString(), ":"));
t.created = utcIntToTime(t.created);
arrayAppend(response.eventArray, t);
}
}
catch(java.lang.Exception e){
response = {
success: false,
error: e.Message,
type: e.type
};
}
return response;
}
public struct function getAllCharges(){
var params = {
type: 'charge.succeeded'
};
structAppend(params, arguments);
return events(argumentCollection = params);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment