Payload Validations |
: |
'products.*.name' => 'required|string',
'products.*.productId' => 'nullable|string',
'products.*.quantity' => 'required|numeric',
'products.*.rate' => 'required|numeric',
'products.*.discount' => 'nullable|numeric',
'products.*.tax' => 'required|numeric|in:0,12,15,25 (Unless you have other configuration)',
'products.*.amount' => 'required|numeric',
'orderSummary.subTotal' => 'required|numeric',
'orderSummary.totalTax' => 'required|numeric',
'orderSummary.totalDiscount' => 'required|numeric',
'orderSummary.grandTotal' => 'required|numeric',
'orderDate' => 'required|string',
'dueDateForPaymentLink' => 'required|string',
'sendOrderBy.sms' => 'required|boolean',
'sendOrderBy.email' => 'required|boolean',
'sendOrderBy.invoice' => 'required|boolean',
'isCreditCheckAvailable' => 'required|boolean',
'invoiceAsPaymentOption' => 'required|boolean',
'customerDetails.customerUuid' => 'required|nullable|string',
'customerDetails.type' => 'required|nullable|string|in:private,corporate',
'customerDetails.countryCode' => 'required|nullable|string',
'customerDetails.msisdn' => 'required|nullable|string',
'customerDetails.email' => 'required|nullable|email',
'customerDetails.name' => 'required|string',
'customerDetails.preferredLanguage' => 'required|string',
'customerDetails.personalNumber' => 'nullable|string|size:11',
'customerDetails.organizationId' => 'required_if:customerDetails.type,corporate|nullable|string|regex:/^[a-zA-Z0-9]+$/',
'customerDetails.address' => 'required|array',
'customerDetails.address.street' => 'required|string',
'customerDetails.address.zip' => 'required|string',
'customerDetails.address.city' => 'required|string',
'customerDetails.address.country' => 'required|string|in:ISO Alpha 2',
'invoiceReferences' => 'nullable|array',
'invoiceReferences.referenceNo' => 'nullable|string',
'invoiceReferences.customerReference' => 'nullable|string',
'invoiceReferences.receiptNo' => 'nullable|string',
'invoiceReferences.customerNotes' => 'nullable|string',
'invoiceReferences.tnc' => 'nullable|string',
'internalReferences' => 'nullable|array',
'internalReferences.referenceNo' => 'nullable|string',
'internalReferences.notes' => 'nullable|string',
'submitPayment' => 'required|array',
'submitPayment.via' => 'required|string|in:vipps,visa,mastercard,applepay,googlepay',
'callback' => 'required|array',
'callback.callbackUrl' => 'nullable|string|url',
'callback.success' => 'required|string',
'callback.failure' => 'required|string'
|
Example Payload |
: |
{
"products": [
{
"name": "Router",
"productId": "R_1",
"quantity": "1",
"rate": 4500,
"discount": 0,
"tax": "12",
"amount": 4500
}
],
"orderSummary": {
"subTotal": "4017.86",
"totalTax": "482.14",
"totalDiscount": "0.00",
"grandTotal": "4500.00"
},
"orderDate": "2 Aug, 2023",
"dueDateForPaymentLink": "1691125906",
"sendOrderBy": {
"sms": false,
"email": false,
"invoice": false
},
"invoiceAsPaymentOption": true,
"isCreditCheckAvailable": false,
"customerDetails": {
"type": "private",
"countryCode": "+47",
"msisdn": "46567468",
"email": "[email protected]",
"name": "Kari Nordmann",
"preferredLanguage": "en",
"personalNumber": null,
"organizationId": null,
"address": {
"street": "Luramyrveien 65",
"zip": "4313",
"city": "Sandnes",
"country": "NO"
}
},
"invoiceReferences": null,
"internalReferences": null,
"submitPayment": {
"via": "visa",
"currency": "NOK"
},
"callback": {
"callbackUrl": "https://www.frontpayment.no/callback",
"success": "https://www.frontpayment.no/success",
"failure": "https://www.frontpayment.no/failure"
}
}
|
Response Structure |
: |
{
"status_code": 202,
"status_message": "OK",
"message": "Order Submitted Successfully",
"is_data": true,
"data": {
"orderUuid": "String"
"paymentUrl": "String"
}
}
{
"status_code": 500,
"status_message": "Internal Dependency Error",
"message": "Internal Error Occurred Please Try Again Later",
"is_error": true,
"errors": {
"happenedAt": "String"
"internalErrorDetails": "Array"
}
}
{
"status_code": 510,
"status_message": "Execution Exception Occurred",
"message": "Something Went Wrong",
"is_error": true,
"errors": "Array"
}
|
Handling Callback |
|
Example: https://stg-api.frontpayment.no/api/v1/tests-callback?orderUuid=ODR10293993&status=PAID&createdAt=1753079134×tamp=1753079134&checksum=e076f553a751a0d04b929d40f086d4cb89ae3942a5bc170ccad336b3ab185ce9
Example Parameters:
Parameter |
Description |
orderUuid |
Unique order identifier |
status |
Payment status ('SENT',`PAID`, `FAILED`, etc.) |
createdAt |
UNIX timestamp when the payment occurred |
checksum |
SHA-256 hash to verify data integrity |
Checksum Verification:
To verify the integrity of the callback data:
1. Extract the values of `orderUuid`, `status`, and `createdAt` from the callback request. 2. Concatenate them in the following order:
orderUuid + status + createdAt
3. Generate a SHA-256 hash of the resulting string. 4. Compare the generated hash with the `checksum` provided in the callback.
✅ If they match: The callback is valid. ❌ If they don't match: The callback may have been tampered with—do not trust the data.
|