Step 3: Create a transaction
After your buyer selects their method of payment in the previous step, you’re ready to create a transaction.
Create a Transaction
The transaction should be populated with the selected method
, your redirect_url
, and
any other relevant transaction information.
-
payment_method.method
- This will be the method selected by the customer at checkout. This will be one of the values retrieved from the payment options endpoint in the previous step. -
payment_method.redirect_url
- This should be provided to redirect the buyer back to your application after they have authenticated the payment. This is also required for card in order to support 3-D Secure.
See the POST /transactions
API endpoint for more details.
curl -i -X POST "https://api.example.gr4vy.app/transactions" \
-H "Authorization: Bearer [JWT_TOKEN]" \
-d '{
"amount": 1400,
"currency": "AUD",
"intent": "capture",
"payment_method": {
"method": "clearpay",
"redirect_url": "[REDIRECT_URL]",
"country": "AU",
"currency": "AUD"
},
"cart_items": [
{
"name": "GoPro HERO9 Camcorder",
"quantity": 1,
"unit_amount": 1500,
"discount_amount": 0,
"tax_amount": 0,
"sku": "sku-789123",
"product_url": "https://example.com/items/gopro",
"image_url": "https://example.com/images/items/gopro.png",
"categories": [],
"product_type": "physical"
},
{
"name": "Discount",
"quantity": 1,
"unit_amount": 0,
"discount_amount": 100,
"tax_amount": 0,
"sku": "discount",
"categories": [],
"product_type": "discount"
}
],
"external_identifier": "abc123",
"store": "true",
"payment_source": "card_on_file",
"merchant_initiated": false,
"is_subsequent_payment": false
}'
The response of this transaction will include a status
, which will tell you how to handle the
next step.
Requests that require a redirect will return a status
of buyer_approval_pending
with a payment_method.approval_url
. In the next step we will show you how to handle this situation.
{
"type": "transaction",
"id": "0c41c8df-27f4-480e-97f0-9401558ae25e",
"merchant_account_id": "default",
"created_at": "2023-04-28T08:33:06.979938+00:00",
"updated_at": "2023-04-28T08:33:14.791510+00:00",
"amount": 1299,
"captured_amount": 0,
"refunded_amount": 0,
"currency": "AUD",
"country": "AU",
"external_identifier": null,
"status": "buyer_approval_pending",
"intent": "authorize",
"payment_method": {
"type": "payment-method",
"method": "paypal",
"mode": "redirect",
"label": null,
"scheme": null,
"expiration_date": null,
"approval_url": "https://www.sandbox.paypal.com/checkoutnow?token=7NP38594266148058",
"country": "AU",
"currency": "AUD",
"details": null,
"id": null,
"approval_target": "any",
"external_identifier": null
},
"method": "paypal",
"error_code": null,
"payment_service": {
"id": "e9bd6ec4-03eb-410c-b655-45b458f185f2",
"type": "payment-service",
"payment_service_definition_id": "paypal-paypal",
"method": "paypal",
"display_name": "PayPal"
},
"buyer": null,
"raw_response_code": "CREATED",
"raw_response_description": "",
"shipping_details": null,
"avs_response_code": null,
"cvv_response_code": null,
"payment_source": "ecommerce",
"merchant_initiated": false,
"is_subsequent_payment": false,
"cart_items": [],
"statement_descriptor": null,
"scheme_transaction_id": null,
"three_d_secure": null,
"payment_service_transaction_id": "7NP38594266148058",
"metadata": null,
"authorized_at": null,
"captured_at": null,
"voided_at": null,
"buyer_approval_timedout_at": null
}
Summary
In this step you:
- Called the transactions endpoint
- Handled the transaction response