Node.js Stripe: Create a Charge

Back to Index

To charge a credit card, you create a Charge object. If your API key is in test mode, the supplied payment source (e.g., card) won't actually be charged, though everything else will occur as if in live mode. (Stripe assumes that the charge would have completed successfully).

Documentation: https://stripe.com/docs/api/curl#create_charge

CURL Command

curl -X POST  https://api.stripe.com/v1/charges \
   -u STRIPE_SECRET_KEY: \
   -d amount=2000 \
   -d currency=usd \
   -d source=tok_visa \
   -d description="Charge for aiden.jones@example.com"

Node.js Example

var os = require('os');
if (os.platform() == 'win32') {  
    var chilkat = require('chilkat_node6_win32'); 
} else if (os.platform() == 'linux') {
    if (os.arch() == 'arm') {
        var chilkat = require('chilkat_node6_arm');
    } else if (os.arch() == 'x86') {
        var chilkat = require('chilkat_node6_linux32');
    } else {
        var chilkat = require('chilkat_node6_linux64');
    }
} else if (os.platform() == 'darwin') {
    var chilkat = require('chilkat_node6_macosx');
}

function chilkatExample() {

    var rest = new chilkat.Rest();
    var success;

    //  URL: https://api.stripe.com/v1/charges
    var bTls = true;
    var port = 443;
    var bAutoReconnect = true;
    success = rest.Connect("api.stripe.com",port,bTls,bAutoReconnect);
    if (success !== true) {
        console.log("ConnectFailReason: " + rest.ConnectFailReason);
        console.log(rest.LastErrorText);
        return;
    }

    rest.SetAuthBasic("STRIPE_SECRET_KEY","");

    rest.AddQueryParam("amount","2000");
    rest.AddQueryParam("currency","usd");
    rest.AddQueryParam("source","tok_visa");
    rest.AddQueryParam("description","Charge for aiden.jones@example.com");

    var strResponseBody = rest.FullRequestFormUrlEncoded("POST","/v1/charges");
    if (rest.LastMethodSuccess !== true) {
        console.log(rest.LastErrorText);
        return;
    }

    var jsonResponse = new chilkat.JsonObject();
    jsonResponse.Load(strResponseBody);

    var id;
    var object;
    var amount;
    var amount_refunded;
    var application;
    var application_fee;
    var balance_transaction;
    var captured;
    var created;
    var currency;
    var customer;
    var description;
    var destination;
    var dispute;
    var failure_code;
    var failure_message;
    var invoice;
    var livemode;
    var on_behalf_of;
    var order;
    var outcome;
    var paid;
    var receipt_email;
    var receipt_number;
    var refunded;
    var refundsObject;
    var refundsHas_more;
    var refundsTotal_count;
    var refundsUrl;
    var review;
    var shipping;
    var sourceId;
    var sourceObject;
    var sourceAddress_city;
    var sourceAddress_country;
    var sourceAddress_line1;
    var sourceAddress_line1_check;
    var sourceAddress_line2;
    var sourceAddress_state;
    var sourceAddress_zip;
    var sourceAddress_zip_check;
    var sourceBrand;
    var sourceCountry;
    var sourceCustomer;
    var sourceCvc_check;
    var sourceDynamic_last4;
    var sourceExp_month;
    var sourceExp_year;
    var sourceFingerprint;
    var sourceFunding;
    var sourceLast4;
    var sourceName;
    var sourceTokenization_method;
    var source_transfer;
    var statement_descriptor;
    var status;
    var transfer_group;
    var i;
    var count_i;

    id = jsonResponse.StringOf("id");
    object = jsonResponse.StringOf("object");
    amount = jsonResponse.IntOf("amount");
    amount_refunded = jsonResponse.IntOf("amount_refunded");
    application = jsonResponse.IsNullOf("application");
    application_fee = jsonResponse.IsNullOf("application_fee");
    balance_transaction = jsonResponse.StringOf("balance_transaction");
    captured = jsonResponse.BoolOf("captured");
    created = jsonResponse.IntOf("created");
    currency = jsonResponse.StringOf("currency");
    customer = jsonResponse.IsNullOf("customer");
    description = jsonResponse.StringOf("description");
    destination = jsonResponse.IsNullOf("destination");
    dispute = jsonResponse.IsNullOf("dispute");
    failure_code = jsonResponse.IsNullOf("failure_code");
    failure_message = jsonResponse.IsNullOf("failure_message");
    invoice = jsonResponse.IsNullOf("invoice");
    livemode = jsonResponse.BoolOf("livemode");
    on_behalf_of = jsonResponse.IsNullOf("on_behalf_of");
    order = jsonResponse.IsNullOf("order");
    outcome = jsonResponse.IsNullOf("outcome");
    paid = jsonResponse.BoolOf("paid");
    receipt_email = jsonResponse.IsNullOf("receipt_email");
    receipt_number = jsonResponse.IsNullOf("receipt_number");
    refunded = jsonResponse.BoolOf("refunded");
    refundsObject = jsonResponse.StringOf("refunds.object");
    refundsHas_more = jsonResponse.BoolOf("refunds.has_more");
    refundsTotal_count = jsonResponse.IntOf("refunds.total_count");
    refundsUrl = jsonResponse.StringOf("refunds.url");
    review = jsonResponse.IsNullOf("review");
    shipping = jsonResponse.IsNullOf("shipping");
    sourceId = jsonResponse.StringOf("source.id");
    sourceObject = jsonResponse.StringOf("source.object");
    sourceAddress_city = jsonResponse.IsNullOf("source.address_city");
    sourceAddress_country = jsonResponse.IsNullOf("source.address_country");
    sourceAddress_line1 = jsonResponse.IsNullOf("source.address_line1");
    sourceAddress_line1_check = jsonResponse.IsNullOf("source.address_line1_check");
    sourceAddress_line2 = jsonResponse.IsNullOf("source.address_line2");
    sourceAddress_state = jsonResponse.IsNullOf("source.address_state");
    sourceAddress_zip = jsonResponse.IsNullOf("source.address_zip");
    sourceAddress_zip_check = jsonResponse.IsNullOf("source.address_zip_check");
    sourceBrand = jsonResponse.StringOf("source.brand");
    sourceCountry = jsonResponse.StringOf("source.country");
    sourceCustomer = jsonResponse.IsNullOf("source.customer");
    sourceCvc_check = jsonResponse.IsNullOf("source.cvc_check");
    sourceDynamic_last4 = jsonResponse.IsNullOf("source.dynamic_last4");
    sourceExp_month = jsonResponse.IntOf("source.exp_month");
    sourceExp_year = jsonResponse.IntOf("source.exp_year");
    sourceFingerprint = jsonResponse.StringOf("source.fingerprint");
    sourceFunding = jsonResponse.StringOf("source.funding");
    sourceLast4 = jsonResponse.StringOf("source.last4");
    sourceName = jsonResponse.IsNullOf("source.name");
    sourceTokenization_method = jsonResponse.IsNullOf("source.tokenization_method");
    source_transfer = jsonResponse.IsNullOf("source_transfer");
    statement_descriptor = jsonResponse.IsNullOf("statement_descriptor");
    status = jsonResponse.StringOf("status");
    transfer_group = jsonResponse.IsNullOf("transfer_group");
    i = 0;
    count_i = jsonResponse.SizeOfArray("refunds.data");
    while (i < count_i) {
        jsonResponse.I = i;
        i = i+1;
    }


}

chilkatExample();

Sample JSON Response Body

{
  "id": "ch_1BnETJGswQrCoh0XTs0EERBj",
  "object": "charge",
  "amount": 100,
  "amount_refunded": 0,
  "application": null,
  "application_fee": null,
  "balance_transaction": "txn_1BnETJGswQrCoh0XxO2tGYr7",
  "captured": false,
  "created": 1516662781,
  "currency": "usd",
  "customer": null,
  "description": "My First Test Charge (created for API docs)",
  "destination": null,
  "dispute": null,
  "failure_code": null,
  "failure_message": null,
  "fraud_details": {},
  "invoice": null,
  "livemode": false,
  "metadata": {},
  "on_behalf_of": null,
  "order": null,
  "outcome": null,
  "paid": true,
  "receipt_email": null,
  "receipt_number": null,
  "refunded": false,
  "refunds": {
    "object": "list",
    "data": [
    ],
    "has_more": false,
    "total_count": 0,
    "url": "/v1/charges/ch_1BnETJGswQrCoh0XTs0EERBj/refunds"
  },
  "review": null,
  "shipping": null,
  "source": {
    "id": "card_18ropuGswQrCoh0XjCJ5Zvma",
    "object": "card",
    "address_city": null,
    "address_country": null,
    "address_line1": null,
    "address_line1_check": null,
    "address_line2": null,
    "address_state": null,
    "address_zip": null,
    "address_zip_check": null,
    "brand": "Visa",
    "country": "US",
    "customer": null,
    "cvc_check": null,
    "dynamic_last4": null,
    "exp_month": 8,
    "exp_year": 2017,
    "fingerprint": "F9mANtIt1TaukpRJ",
    "funding": "credit",
    "last4": "4242",
    "metadata": {},
    "name": null,
    "tokenization_method": null
  },
  "source_transfer": null,
  "statement_descriptor": null,
  "status": "succeeded",
  "transfer_group": null
}