2. Create an Order
To process any payment on Cashfree PG, the merchant needs to create an order in the cashfree system.
Order creation must happen from your backend (as this API uses your secret key). Please do not call this directly from your mobile application.
Production -> https://api.cashfree.com/pg/orders
Sandbox -> https://sandbox.cashfree.com/pg/orders
Note:
Please see the description of the request below.
Adding return_url to create order
"return_url" should be added only for Flutter web flow. For Android and iOS flows, the SDK handles the redirection to merchant page.
Order creation API
Request
import { Cashfree } from "cashfree-pg";
Cashfree.XClientId = {Client ID};
Cashfree.XClientSecret = {Client Secret Key};
Cashfree.XEnvironment = Cashfree.Environment.PRODUCTION;
function createOrder() {
var request = {
"order_amount": "1",
"order_currency": "INR",
"customer_details": {
"customer_id": "node_sdk_test",
"customer_name": "",
"customer_email": "[email protected]",
"customer_phone": "9999999999"
},
"order_meta": {
"return_url": "https://test.cashfree.com/pgappsdemos/return.php?order_id=order_123"
},
"order_note": ""
}
Cashfree.PGCreateOrder("2023-08-01", request).then((response) => {
var a = response.data;
console.log(a)
})
.catch((error) => {
console.error('Error setting up order request:', error.response.data);
});
}
from cashfree_pg.models.create_order_request import CreateOrderRequest
from cashfree_pg.api_client import Cashfree
from cashfree_pg.models.customer_details import CustomerDetails
Cashfree.XClientId = {Client ID}
Cashfree.XClientSecret = {Client Secret Key}
Cashfree.XEnvironment = Cashfree.XSandbox
x_api_version = "2023-08-01"
def create_order():
customerDetails = CustomerDetails(customer_id="123", customer_phone="9999999999")
createOrderRequest = CreateOrderRequest(order_amount=1, order_currency="INR", customer_details=customerDetails)
try:
api_response = Cashfree().PGCreateOrder(x_api_version, createOrderRequest, None, None)
print(api_response.data)
except Exception as e:
print(e)
import com.cashfree.*;
Cashfree.XClientId = {Client Key};
Cashfree.XClientSecret = {Client Secret Key};
Cashfree.XEnvironment = Cashfree.SANDBOX;
static void createOrder() {
CustomerDetails customerDetails = new CustomerDetails();
customerDetails.setCustomerId("123");
customerDetails.setCustomerPhone("9999999999");
CreateOrderRequest request = new CreateOrderRequest();
request.setOrderAmount(1.0);
request.setOrderCurrency("INR");
request.setCustomerDetails(customerDetails);
try {
Cashfree cashfree = new Cashfree();
ApiResponse<OrderEntity> response = cashfree.PGCreateOrder("2023-08-01", request, null, null, null);
System.out.println(response.getData().getOrderId());
} catch (ApiException e) {
throw new RuntimeException(e);
}
}
import (
cashfree "github.com/cashfree/cashfree-pg/v3"
)
func createOrder() {
clientId := {Client ID}
clientSecret := {Client Secret Key}
cashfree.XClientId = &clientId
cashfree.XClientSecret = &clientSecret
cashfree.XEnvironment = cashfree.SANDBOX
request := cashfree.CreateOrderRequest{
OrderAmount: 1,
CustomerDetails: cashfree.CustomerDetails{
CustomerId: "1",
CustomerPhone: "9999999999",
},
OrderCurrency: "INR",
OrderSplits: []cashfree.VendorSplit{},
}
version := "2023-08-01"
response, httpResponse, err := cashfree.PGCreateOrder(&version, &request, nil, nil, nil)
if err != nil {
fmt.Println(err.Error())
} else {
fmt.Println(httpResponse.StatusCode)
fmt.Println(response)
}
}
using cashfree_pg.Client;
using cashfree_pg.Model;
Cashfree.XClientId = {Client ID};
Cashfree.XClientSecret = {Client Secret Key};
Cashfree.XEnvironment = Cashfree.PRODUCTION;
var cashfree = new Cashfree();
var xApiVersion = "2023-08-01";
void CreateOrder() {
var customerDetails = new CustomerDetails("123", null, "9999999999");
var createOrdersRequest = new CreateOrderRequest(null, 1.0, "INR", customerDetails);
try {
// Create Order
var result = cashfree.PGCreateOrder(xApiVersion, createOrdersRequest, null, null, null);
Console.WriteLine(result);
Console.WriteLine(result.StatusCode);
Console.WriteLine((result.Content as OrderEntity));
} catch (ApiException e) {
Console.WriteLine("Exception when calling PGCreateOrder: " + e.Message);
Console.WriteLine("Status Code: " + e.ErrorCode);
Console.WriteLine(e.StackTrace);
}
}
\Cashfree\Cashfree::$XClientId = "<x-client-id>";
\Cashfree\Cashfree::$XClientSecret = "<x-client-secret>";
\Cashfree\Cashfree::$XEnvironment = Cashfree\Cashfree::$SANDBOX;
$cashfree = new \Cashfree\Cashfree();
$x_api_version = "2023-08-01";
$create_orders_request = new \Cashfree\Model\CreateOrdersRequest();
$create_orders_request->setOrderAmount(1.0);
$create_orders_request->setOrderCurrency("INR");
$customer_details = new \Cashfree\Model\CustomerDetails();
$customer_details->setCustomerId("123");
$customer_details->setCustomerPhone("9999999999");
$create_orders_request->setCustomerDetails($customer_details);
try {
$result = $cashfree->PGCreateOrder($x_api_version, $create_orders_request);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling PGCreateOrder: ', $e->getMessage(), PHP_EOL;
}
curl --location 'https://sandbox.cashfree.com/pg/orders' \
--header 'X-Client-Secret: {{clientKey}}' \
--header 'X-Client-Id: {{clientId}}'
--header 'x-api-version: 2023-08-01' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data-raw '{
"order_amount": 10.10,
"order_currency": "INR",
"customer_details": {
"customer_id": "USER123",
"customer_name": "joe",
"customer_email": "[email protected]",
"customer_phone": "+919876543210"
},
"order_meta": {
"return_url": "https://b8af79f41056.eu.ngrok.io?order_id=order_123"
}
}'
Response
{
"cf_order_id": "1539553",
"created_at": "2021-07-19T16:13:35+05:30",
"customer_details": {
"customer_id": "7112AAA812234",
"customer_name": null,
"customer_email": "[email protected]",
"customer_phone": "9908734801",
"customer_uid": null
},
"entity": "order",
"order_amount": 5.01,
"order_currency": "INR",
"order_expiry_time": "2021-08-18T16:13:34+05:30",
"order_id": "order_271vWwzSQOHe01ZVXpEcguVxQSRqr",
"order_meta": {
"return_url": "https://b8af79f41056.eu.ngrok.io?order_id=order_123",
"payment_methods": null
},
"order_note": null,
"order_status": "PAID",
"payment_session_id": "session_7NvteR73Fh11P3f3bNdcubIAJgBJJgGK9diC6U5jvr_jfWBS8o-Z2iPf20diqBMVfWDwvARGrISZRCPoDSWjw4Eb1GrKtoZZQT_BWyXW25fD"
}
If the order creation is successful you will receive a 200 response and the order entity in response. This order entity contains relevant details for the order.
We recommend that you store the following parameters at your end order_id
, cf_order_id
, payment_session_id
, and the order_status
.
Note:
The payment_session_id
contains all the order details and has to be sent to the SDK while initiating the payment.
Please refer our Order Creation for more details regarding parameters and more.
Subscribe to Developer Updates
Updated 6 months ago