VB.NET UWP/WinRT 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"

VB.NET UWP/WinRT Example

Dim rest As New Chilkat.Rest
Dim success As Boolean

'  URL: https://api.stripe.com/v1/charges
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = Await rest.ConnectAsync("api.stripe.com",port,bTls,bAutoReconnect)
If (success <> True) Then
    Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
    Debug.WriteLine(rest.LastErrorText)
    Exit Sub
End If


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")


Dim strResponseBody As String = Await rest.FullRequestFormUrlEncodedAsync("POST","/v1/charges")
If (rest.LastMethodSuccess <> True) Then
    Debug.WriteLine(rest.LastErrorText)
    Exit Sub
End If


Dim jsonResponse As New Chilkat.JsonObject
jsonResponse.Load(strResponseBody)

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

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
End While

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
}