# SalesCloud Payment Request API
# Introduction
The Payment Request API is an isolated restful api with the sole purpose of processing payment requests that can automaticallly scale to 1 000 cpus and 2 000 gb ram.
The service is completely atomic and acid compliant.
# Service Base URL
The service lives at: https://service-payment-request.salescloud.is
# Required URL Parameters
The service requires a 3 parameters in the url like so:
The service lives at: https://service-payment-request.salescloud.is/v/{version}/{organization}/{channel}/{payment_instance}
Version
The {version} part is the version identifier. For now there is only one: 1.
Organization
The {organization} part is the uuid of the organization that owns the payment.
Channel
The {channel} part is the uuid of the sales channel that belongs to the organization.
Payment Instance
The payment instance part is the uuid of the payment method instance that belongs to the organization.
If any of these parameters are wrong then the payment service will reply with a 404 not found.
# Responses
The payment service api will only serve with 2 distinct http codes and will always only accept valid json and return json.
200
The api wil respond with a http response code 200 if the payment was actually requested. This does not mean that the payment was accepted.
404
The api will respond with a http response code 404 if payment was NOT requested. This means that something was wrong with the request.
Body
The body of the return contains top level properties that indicate if the payment was approved or declined.
Content-Type
The content-type of the response is always valid json.
# Declined Response
{
"success": false,
"errorCode": 3,
"paymentTransaction": {
"namespace": "valitor_greidslugatt",
"amount": 100,
"currency_code": "ISK",
"status": "failure",
"message": "The card was declined.",
"payload": {
// this object will contain payment method specific data
}
}
}
# Approved Response
{
"success": true,
"errorCode": 0,
"paymentTransaction": {
"namespace": "valitor_greidslugatt",
"amount": 100,
"currency_code": "ISK",
"status": "success",
"message": "The payment was approved.",
"payload": {
// this object will contain payment method specific data
}
}
}
# Requesting Payments
The payment service api only accepts valid json in the body of post request and requires no other formal authentication.
# Required Properties
namespace
String. The namespace of the payment method. It must match the namespace of the payment instance uuid in the url.
amount
Integer. The amount of the payment.
currency_code
String. The currency code of the payment.
details
Object. The values to the UI fields required by the payment method.
# Optional Properties
requestId
String. Your external reference of the payment.
billingInfo
Object. The billing info of the payment.
shippingInfo
Object. The shipping info of the payment.
comment
String. A comment for the order.
# Simple Example
{
"namespace": "valitor_greidslugatt",
"requestId": "123456",
"amount": 1000,
"currency_code": "ISK",
"details": {
"cardNumber": "123456789",
"cardSecurityCode": "123",
"expiryMonth": "12",
"expiryYear": "2027"
}
}
# Advanced Example
{
"namespace": "valitor_greidslugatt",
"requestId": "123456",
"amount": 1000,
"currency_code": "ISK",
"details": {
"cardNumber": "123456789",
"cardSecurityCode": "123",
"expiryMonth": "12",
"expiryYear": "2027"
},
"billingInfo": {
"name": "John Doe",
"phone": "123456789",
"email" : "hello@world.is"
"country": "IS"
},
"shippingInfo": {
"postal_code": "123",
"address": "Þetta er bara test",
"country": "IS"
},
"deliveryService": {
"uuid": "e25abb40-6ac5-11ea-b6ac-098bba9d8176",
"title": "Home Delivery"
},
"deliveryServicePrice": {
"amount": 10,
"currency_code": "ISK"
},
"coupon": null, // The coupon uuid
"comment": "This is a comment for the order.",
"location": null, // The uuid of the location
"deliveryTime": null, // Unix timestamp in seconds
"items": [
{
"uuid": "18f2d14e-2d1d-4e5f-9a3c-e174a92f6ca1", // required
"quantity": 1, // required
"discountPercent": 0, // optional
"startsAtTimeInMillis": 0, // required for event items
"endsAtTimeInMillis": 0, // optional for event items
"variations": [ // optional
{
"uuid": "6479707c-31b3-47c2-b39f-d7084466daf4" // required
},
{
"uuid": "4bba38e6-d3de-4959-b2c0-7b94331ec759" // required
}
]
}
],
"unit": null // The uuid of an individual unit,
"discounts": [] // Array of applied discounts
}