Skip to content

Stripe Integration Part 4b - The Basic Payment Action - Server Connect Page

Introduction We have covered the creation of the APP connect based payment page and this tutorial follows on from that to deal with the server connect and API p

We have covered the creation of the APP connect based payment page and this tutorial follows on from that to deal with the server connect and API parts of the process

Before we start, i have made some amendments to the part 4a code relating to the hidden fields

The hidden field “ProductID” has now been changed to lower case “productid” and i have added another field, quantity so we now have:

      <input type="hidden" name="productid" class="form-control mb-3 StripeElement StripeElement--empty"  value="1">
      <input type="hidden" name="quantity" class="form-control mb-3 StripeElement StripeElement--empty"  value="1">

In this case we are selling a quantity of 1 Type 1 Widget (product Id = 1)

This should be priced at 250 currency units, in my case UK pence so total £2.50 ( i have priced the product table in pence, not pounds)
image

So create your sever action, i have called it send_charge.

Add your post variables. stripeToken must match this case, productid and quantity must match those in your app connect form in name and case.

Now we set up the server action

Firstly we make a server connection, this is well documented and i won’t say more
Next we go to Core Actions =>Set Value and declare a variable. It’s value is not important as this is overwritten later. This is initialised purely as it will not be available in the data picker unless initialised outside the repeat

We do the same for the product description which we will also obtain from a data query later

Retrieving the Price and Description via a data query

Section titled “Retrieving the Price and Description via a data query”

Next we query our products table using the product id posted to the action and return the price (in the cost column of the table)

Extracting Price and Description from the data query

Section titled “Extracting Price and Description from the data query”

We now set up a repeat based on that query i have called get_price

image

Setting the Price and Description variables

Section titled “Setting the Price and Description variables”

Next form within that repeat we redefine the variables itemprice and description to the values returned by the query from the products table.

image
image

Now we have retrieved the price and description so we can send the payment to Stripe

Add an API Action stage

Our Action will be as below

Keep “Pass Errors” checked until fully debugged so errors are echoed to the console

Our API Url is: https://api.stripe.com/v1/charges and Method is POST

In the headers Section add the authorisation string i.e. the word Bearer followed by your secret key as outlined in Parts 1 and 2

In the Query section we add the following:

currency: in my case gbp

Description: This is the value of out variable {{description}}

source is our stripeToken {{$_POST.stripeToken}} (which is automatically created at app connect level by the stripe javascript)

amount is our variable {{itemprice}}

Once posted Stripe returns the object for the newly charged item, the makeup can be viewed via this link

This can then be stored in a database table using an insert action

As most data can be retrieved via the API (see later) it is not actually necessary to store much more than the transaction ID however in this demo I have stored the entire returned object to illustrate how it works (63 columns)

The API returns 4 data types
Numeric and string can be stored as is
Boolean can be stored using the expression {{fieldname?1:0}
Stripe also returns arrays for items like metadata (we will discuss this later) At this stage I suggest you ignore these until you understand their function as empty arrays are returned which can cause errors when storing.

###The Data Insert Query
A sample screen for this action is below:

An empty copy of this table in zipped .sql is attached. stripe_payment.zip (963 Bytes)

Ensure your app connect form has the correct server action set to point to this new server action

The Data Table Contents after the Transaction

Section titled “The Data Table Contents after the Transaction”

The data is then stored in the database table (see sample below)

Checking your Stripe Account for Confirmation of the Transaction

Section titled “Checking your Stripe Account for Confirmation of the Transaction”

Check your stripe account and you will see the transaction listed in your Dashboard

Next we will look at adding shipping details