Visual Basic 6.0 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"

Visual Basic 6.0 Example

Dim rest As New ChilkatRest
Dim success As Long

'  URL: https://api.stripe.com/v1/charges
Dim bTls As Long
bTls = 1
Dim port As Long
port = 443
Dim bAutoReconnect As Long
bAutoReconnect = 1
success = rest.Connect("api.stripe.com",port,bTls,bAutoReconnect)
If (success <> 1) Then
    Debug.Print "ConnectFailReason: " & rest.ConnectFailReason
    Debug.Print rest.LastErrorText
    Exit Sub
End If

success = rest.SetAuthBasic("STRIPE_SECRET_KEY","")

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

Dim strResponseBody As String
strResponseBody = rest.FullRequestFormUrlEncoded("POST","/v1/charges")
If (rest.LastMethodSuccess <> 1) Then
    Debug.Print rest.LastErrorText
    Exit Sub
End If

Dim jsonResponse As New ChilkatJsonObject
success = jsonResponse.Load(strResponseBody)

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

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")
Do While i < count_i
    jsonResponse.I = i
    i = i + 1
Loop

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
}