Visual Basic 6.0 Stripe: Pay an Invoice

Back to Index

Attempts payment on an invoice out of the normal collection schedule.

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

CURL Command

curl https://api.stripe.com/v1/invoices/in_1BnETLGswQrCoh0X6M67Qy9c/pay \
   -u STRIPE_SECRET_KEY: \
   -X POST

Visual Basic 6.0 Example

Dim rest As New ChilkatRest
Dim success As Long

'  URL: https://api.stripe.com/v1/invoices/in_1BnETLGswQrCoh0X6M67Qy9c/pay
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","")

Dim sbResponseBody As New ChilkatStringBuilder
success = rest.FullRequestNoBodySb("POST","/v1/invoices/in_1BnETLGswQrCoh0X6M67Qy9c/pay",sbResponseBody)
If (success <> 1) Then
    Debug.Print rest.LastErrorText
    Exit Sub
End If

Dim jsonResponse As New ChilkatJsonObject
success = jsonResponse.LoadSb(sbResponseBody)

Dim id As String
Dim object As String
Dim amount_due As Long
Dim application_fee As Long
Dim attempt_count As Long
Dim attempted As Long
Dim billing As String
Dim charge As String
Dim closed As Long
Dim currency As String
Dim customer As String
Dim date As Long
Dim description As Long
Dim discount As Long
Dim due_date As Long
Dim ending_balance As Long
Dim forgiven As Long
Dim linesHas_more As Long
Dim linesObject As String
Dim linesUrl As String
Dim livemode As Long
Dim next_payment_attempt As Long
Dim number As String
Dim paid As Long
Dim period_end As Long
Dim period_start As Long
Dim receipt_number As Long
Dim starting_balance As Long
Dim statement_descriptor As Long
Dim subscription As Long
Dim subtotal As Long
Dim tax As Long
Dim tax_percent As Long
Dim total As Long
Dim webhooks_delivered_at As Long
Dim last_payment_attempt As Long
Dim i As Long
Dim count_i As Long
Dim amount As Long
Dim description_str As String
Dim discountable As Long
Dim periodStart As Long
Dim periodEnd As Long
Dim planId As String
Dim planObject As String
Dim planAmount As Long
Dim planCreated As Long
Dim planCurrency As String
Dim planInterval As String
Dim planInterval_count As Long
Dim planLivemode As Long
Dim planName As String
Dim planStatement_descriptor As Long
Dim planTrial_period_days As Long
Dim proration As Long
Dim quantity As Long
Dim subscription_item As String
Dim type As String

id = jsonResponse.StringOf("id")
object = jsonResponse.StringOf("object")
amount_due = jsonResponse.IntOf("amount_due")
application_fee = jsonResponse.IsNullOf("application_fee")
attempt_count = jsonResponse.IntOf("attempt_count")
attempted = jsonResponse.BoolOf("attempted")
billing = jsonResponse.StringOf("billing")
charge = jsonResponse.StringOf("charge")
closed = jsonResponse.BoolOf("closed")
currency = jsonResponse.StringOf("currency")
customer = jsonResponse.StringOf("customer")
date = jsonResponse.IntOf("date")
description = jsonResponse.IsNullOf("description")
discount = jsonResponse.IsNullOf("discount")
due_date = jsonResponse.IsNullOf("due_date")
ending_balance = jsonResponse.IsNullOf("ending_balance")
forgiven = jsonResponse.BoolOf("forgiven")
linesHas_more = jsonResponse.BoolOf("lines.has_more")
linesObject = jsonResponse.StringOf("lines.object")
linesUrl = jsonResponse.StringOf("lines.url")
livemode = jsonResponse.BoolOf("livemode")
next_payment_attempt = jsonResponse.IntOf("next_payment_attempt")
number = jsonResponse.StringOf("number")
paid = jsonResponse.BoolOf("paid")
period_end = jsonResponse.IntOf("period_end")
period_start = jsonResponse.IntOf("period_start")
receipt_number = jsonResponse.IsNullOf("receipt_number")
starting_balance = jsonResponse.IntOf("starting_balance")
statement_descriptor = jsonResponse.IsNullOf("statement_descriptor")
subscription = jsonResponse.IsNullOf("subscription")
subtotal = jsonResponse.IntOf("subtotal")
tax = jsonResponse.IsNullOf("tax")
tax_percent = jsonResponse.IsNullOf("tax_percent")
total = jsonResponse.IntOf("total")
webhooks_delivered_at = jsonResponse.IsNullOf("webhooks_delivered_at")
last_payment_attempt = jsonResponse.IsNullOf("last_payment_attempt")
i = 0
count_i = jsonResponse.SizeOfArray("lines.data")
Do While i < count_i
    jsonResponse.I = i
    id = jsonResponse.StringOf("lines.data[i].id")
    object = jsonResponse.StringOf("lines.data[i].object")
    amount = jsonResponse.IntOf("lines.data[i].amount")
    currency = jsonResponse.StringOf("lines.data[i].currency")
    description_str = jsonResponse.StringOf("lines.data[i].description")
    discountable = jsonResponse.BoolOf("lines.data[i].discountable")
    livemode = jsonResponse.BoolOf("lines.data[i].livemode")
    periodStart = jsonResponse.IntOf("lines.data[i].period.start")
    periodEnd = jsonResponse.IntOf("lines.data[i].period.end")
    planId = jsonResponse.StringOf("lines.data[i].plan.id")
    planObject = jsonResponse.StringOf("lines.data[i].plan.object")
    planAmount = jsonResponse.IntOf("lines.data[i].plan.amount")
    planCreated = jsonResponse.IntOf("lines.data[i].plan.created")
    planCurrency = jsonResponse.StringOf("lines.data[i].plan.currency")
    planInterval = jsonResponse.StringOf("lines.data[i].plan.interval")
    planInterval_count = jsonResponse.IntOf("lines.data[i].plan.interval_count")
    planLivemode = jsonResponse.BoolOf("lines.data[i].plan.livemode")
    planName = jsonResponse.StringOf("lines.data[i].plan.name")
    planStatement_descriptor = jsonResponse.IsNullOf("lines.data[i].plan.statement_descriptor")
    planTrial_period_days = jsonResponse.IsNullOf("lines.data[i].plan.trial_period_days")
    proration = jsonResponse.BoolOf("lines.data[i].proration")
    quantity = jsonResponse.IntOf("lines.data[i].quantity")
    subscription = jsonResponse.IsNullOf("lines.data[i].subscription")
    subscription_item = jsonResponse.StringOf("lines.data[i].subscription_item")
    type = jsonResponse.StringOf("lines.data[i].type")
    i = i + 1
Loop

Sample JSON Response Body

{
  "id": "in_1BnETLGswQrCoh0X6M67Qy9c",
  "object": "invoice",
  "amount_due": 0,
  "application_fee": null,
  "attempt_count": 0,
  "attempted": true,
  "billing": "charge_automatically",
  "charge": "ch_1BnETLGswQrCoh0XYoMbCKZ3",
  "closed": false,
  "currency": "usd",
  "customer": "cus_CBbggkUyLoz3pe",
  "date": 1516662783,
  "description": null,
  "discount": null,
  "due_date": null,
  "ending_balance": null,
  "forgiven": false,
  "lines": {
    "data": [
      {
        "id": "sub_CBbgC3EaFZqN3Q",
        "object": "line_item",
        "amount": 999,
        "currency": "usd",
        "description": "1x Silver Express (at $9.99)",
        "discountable": true,
        "livemode": true,
        "metadata": {},
        "period": {
          "start": 1521760383,
          "end": 1524438783
        },
        "plan": {
          "id": "gold",
          "object": "plan",
          "amount": 2000,
          "created": 1516662783,
          "currency": "usd",
          "interval": "month",
          "interval_count": 1,
          "livemode": false,
          "metadata": {},
          "name": "T-shirt",
          "statement_descriptor": null,
          "trial_period_days": null
        },
        "proration": false,
        "quantity": 1,
        "subscription": null,
        "subscription_item": "si_CBbgZxCVF3Ha7P",
        "type": "subscription"
      }
    ],
    "has_more": false,
    "object": "list",
    "url": "/v1/invoices/in_1BnETLGswQrCoh0X6M67Qy9c/lines"
  },
  "livemode": false,
  "metadata": {},
  "next_payment_attempt": 1516666383,
  "number": "330a34b8d5-0001",
  "paid": true,
  "period_end": 1516662783,
  "period_start": 1516662783,
  "receipt_number": null,
  "starting_balance": 0,
  "statement_descriptor": null,
  "subscription": null,
  "subtotal": 0,
  "tax": null,
  "tax_percent": null,
  "total": 0,
  "webhooks_delivered_at": null,
  "last_payment_attempt": null
}