Tcl Stripe: Create a Card Token

Back to Index

Creates a single use token that wraps the details of a credit card. This token can be used in place of a credit card dictionary with any API method.

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

CURL Command

curl https://api.stripe.com/v1/tokens \
   -u STRIPE_SECRET_KEY: \
   -d card[number]=4242424242424242 \
   -d card[exp_month]=12 \
   -d card[exp_year]=2019 \
   -d card[cvc]=123
   -X POST

Tcl Example


load ./chilkat.dll

set rest [new_CkRest]

#  URL: https://api.stripe.com/v1/tokens
set bTls 1
set port 443
set bAutoReconnect 1
set success [CkRest_Connect $rest "api.stripe.com" $port $bTls $bAutoReconnect]
if {[expr $success != 1]} then {
    puts "ConnectFailReason: [CkRest_ConnectFailReason $rest]"
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    exit
}

CkRest_SetAuthBasic $rest "STRIPE_SECRET_KEY" ""

CkRest_AddQueryParam $rest "card[number]" "4242424242424242"
CkRest_AddQueryParam $rest "card[exp_month]" "12"
CkRest_AddQueryParam $rest "card[exp_year]" "2019"
CkRest_AddQueryParam $rest "card[cvc]" "123"

set strResponseBody [CkRest_fullRequestFormUrlEncoded $rest "POST" "/v1/tokens"]
if {[expr [CkRest_LastMethodSuccess $rest] != 1]} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    exit
}

set jsonResponse [new_CkJsonObject]

CkJsonObject_Load $jsonResponse $strResponseBody

set id [CkJsonObject_stringOf $jsonResponse "id"]
set object [CkJsonObject_stringOf $jsonResponse "object"]
set cardId [CkJsonObject_stringOf $jsonResponse "card.id"]
set cardObject [CkJsonObject_stringOf $jsonResponse "card.object"]
set cardAddress_city [CkJsonObject_IsNullOf $jsonResponse "card.address_city"]
set cardAddress_country [CkJsonObject_IsNullOf $jsonResponse "card.address_country"]
set cardAddress_line1 [CkJsonObject_IsNullOf $jsonResponse "card.address_line1"]
set cardAddress_line1_check [CkJsonObject_IsNullOf $jsonResponse "card.address_line1_check"]
set cardAddress_line2 [CkJsonObject_IsNullOf $jsonResponse "card.address_line2"]
set cardAddress_state [CkJsonObject_IsNullOf $jsonResponse "card.address_state"]
set cardAddress_zip [CkJsonObject_IsNullOf $jsonResponse "card.address_zip"]
set cardAddress_zip_check [CkJsonObject_IsNullOf $jsonResponse "card.address_zip_check"]
set cardBrand [CkJsonObject_stringOf $jsonResponse "card.brand"]
set cardCountry [CkJsonObject_stringOf $jsonResponse "card.country"]
set cardCvc_check [CkJsonObject_IsNullOf $jsonResponse "card.cvc_check"]
set cardDynamic_last4 [CkJsonObject_IsNullOf $jsonResponse "card.dynamic_last4"]
set cardExp_month [CkJsonObject_IntOf $jsonResponse "card.exp_month"]
set cardExp_year [CkJsonObject_IntOf $jsonResponse "card.exp_year"]
set cardFingerprint [CkJsonObject_stringOf $jsonResponse "card.fingerprint"]
set cardFunding [CkJsonObject_stringOf $jsonResponse "card.funding"]
set cardLast4 [CkJsonObject_stringOf $jsonResponse "card.last4"]
set cardName [CkJsonObject_IsNullOf $jsonResponse "card.name"]
set cardTokenization_method [CkJsonObject_IsNullOf $jsonResponse "card.tokenization_method"]
set client_ip [CkJsonObject_IsNullOf $jsonResponse "client_ip"]
set created [CkJsonObject_IntOf $jsonResponse "created"]
set livemode [CkJsonObject_BoolOf $jsonResponse "livemode"]
set type [CkJsonObject_stringOf $jsonResponse "type"]
set used [CkJsonObject_BoolOf $jsonResponse "used"]

delete_CkRest $rest
delete_CkJsonObject $jsonResponse

Sample JSON Response Body

{
  "id": "tok_1BnETKGswQrCoh0XIvDUT3mu",
  "object": "token",
  "card": {
    "id": "card_1BnETKGswQrCoh0XGXCaLCT2",
    "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",
    "cvc_check": null,
    "dynamic_last4": null,
    "exp_month": 8,
    "exp_year": 2019,
    "fingerprint": "F9mANtIt1TaukpRJ",
    "funding": "credit",
    "last4": "4242",
    "metadata": {},
    "name": null,
    "tokenization_method": null
  },
  "client_ip": null,
  "created": 1516662782,
  "livemode": false,
  "type": "card",
  "used": false
}