""']", "", "ALL"), 22) />
var status = response.getStatusCode();
var res = response.getParsedResult();
switch(status)
{
case "200": // OK - Everything worked as expected.
response.setStatus(getService().getStatusSuccessful());
break;
case "401": // Unauthorized - No valid API key provided.
response.setMessage("There is a configuration error preventing the transaction from completing successfully. (Original issue: Invalid API key)");
response.setStatus(getService().getStatusFailure());
break;
case "402": // Request Failed - Parameters were valid but request failed. e.g. invalid card, cvc failed, etc.
response.setStatus(getService().getStatusDeclined());
break;
case "400": // Bad Request - Often missing a required parameter, includes parameter not allowed or params not lowercase
case "404": // Not Found - The requested item doesn't exist. i.e. no charge for that id
response.setStatus(getService().getStatusFailure());
break;
case "500": // Server errors - something went wrong on Stripe's end.
case "502":
case "503":
case "504":
response.setStatus(getService().getStatusFailure());
break;
}
if (response.hasError() AND isStruct(res) AND structKeyExists(res, "error"))
{
if (structKeyExists(res.error, "message"))
response.setMessage(res.error.message);
if (structKeyExists(res.error, "param"))
response.setMessage(response.getMessage() & " (#res.error.param#)");
if (structKeyExists(res.error, "code"))
{
switch (res.error.code)
{
case "incorrect_number":
case "invalid_number":
case "invalid_expiry_month":
case "invalid_expiry_year":
case "invalid_cvc":
case "expired_card":
case "incorrect_cvc":
case "card_declined":
case "missing":
case "processing_error":
// can do more involved translation to human-speak here
response.setMessage(response.getMessage() & " [#res.error.code#]");
break;
default:
response.setMessage(response.getMessage() & " [#res.error.code#]");
}
}
else if (NOT structKeyExists(res.error, "message"))
{
response.setMessage("Gateway returned unknown response: #status#");
}
}
post["card[number]"] = arguments.account.getAccount();
post["card[exp_month]"] = arguments.account.getMonth();
post["card[exp_year]"] = arguments.account.getYear();
post["card[cvc]"] = arguments.account.getVerificationValue();
post["card[name]"] = arguments.account.getName();
post["card[address_line1]"] = arguments.account.getAddress();
post["card[address_line2]"] = arguments.account.getAddress2();
post["card[address_zip]"] = arguments.account.getPostalCode();
post["card[address_state]"] = arguments.account.getRegion();
post["card[address_country]"] = arguments.account.getCountry();
post["bank_account[country]"] = arguments.account.getCountry();
post["bank_account[routing_number]"] = arguments.account.getRoutingNumber();
post["bank_account[account_number]"] = arguments.account.getAccount();