API – Developers Docs API – Developers Docs
  • Addon Payments
  • POS integrated Payments
  • SpanishSwitch to Spanish
API – Developers Docs API – Developers Docs
API – Developers Docs
  • Addon Payments
  • POS integrated Payments
  • SpanishSwitch to Spanish
POS integrated Payments
  • Folder icon closed Folder open iconPayment integrated with Android POS
    • InStore Payment API Android
    • InStore Payment API Windows
    • InStore Payment REST API
  • Folder icon closed Folder open iconPayment integrated with Smartphone POS
    • Payment integration with Smartphone POS (iOS)
    • Payment integration with Smartphone POS (Android)
  • Folder icon closed Folder open iconPOS integrated Payments
    • Transactions
      • Tokenization
    • Reports
    • Device
  • Folder icon closed Folder open iconHost2Host Integration – POI-Switch Protocol
  • Folder icon closed Folder open iconPOS Data sheets

Payment integration with Smartphone POS (iOS)

  • Version: 1.0

Introduction

This document specifies the structure and behavior of the SoftPOS iOS deep links.

The SoftPOS deep links allows external applications or web pages to seamlessly redirect users to the SoftPOS app and execute various operations. This simplifies the user experience by reducing manual data entry and ensuring data consistency.

Deep link structure

The SoftPOS app supports deep links using custom schemes with the following URI format:

				
					scheme://host/path?param=value
				
			

These values are:

  • scheme: Must be softpos. This parameter is defined at iOS application level.
  • host: Must be softpos. This parameter could accept different values in the future.
  • path: Request identifier, for example: transaction.

SoftPOS App deep link flow

SoftPOS app will handle the deep links executing the following steps:

  1. Scheme Validation: If the scheme is incorrect the SoftPOS app will not be open. There is no additional scheme validation.
  2. Path Validation: The operation will fail if the path parameter is incorrect.
  3. Payload Extraction: If the payload parameter is not a valid JSON string the operation will fail.
  4. Parameter Validation: If any required parameter is missing or invalid, the operation will fail and the SoftPOS app will stay on the main screen.
  5. Execution: The requested operation will be executed
  6. Completion: Upon completion the app will try to open the responseUrl if the parameter is provided as part of the deep link request. Otherwise will stay on the main application screen.

Deep Link requests

In the following sections you have the different types of Deep Link requests.

Transaction request: Sale and refund

This request allows Sale and Refund transactions. The type of transaction depends on the payload sent on the request.

Below is an example of a sale and its explanation:

				
					softpos://softpos/transaction?payload={"amount":200,"type":"sale","currency":"EUR","responseUrl":"testapp://response"}
				
			
  • transaction: Identifies the type of transaction: sale or refund.
  • payload: Encoded JSON object.

The field payload has the following structure:

				
					{
    "amount": <NUMBER>,
    "type": "<STRING>",
    "originalTranId": "<STRING OPTIONAL>", // only required in refunds
    "currency": "<STRING>",
    "responseUrl": "<STRING OPTIONAL>"
}
				
			

The field payload for Sales and Refunds has the following parameters:

FieldFormatRequired/OptionalDescriptionExample
amountNumberRequiredTransaction amount. The last two digits are the decimals. For example, to indicate 2€, you must send the value 200.200
typeAvailable values:
– sale
– refund
RequiredTransaction type. Sale is “sale” and refund is “refund”.sale
originalTranIdAlphanumericOptional* Identifier of the original transaction to be refunded.

* Only required for refunds.
446677
currencyAvailable values:
– EUR
RequiredISO 4217 code for the currency of the transaction. Only the Euro “EUR” is available.EUR
responseUrlAlphanumericOptionalURL that will open when the transaction is complete. The SoftPOS application will automatically add a result query parameter containing the result of the operation.

It must be a valid parameter managed by the application making the call.
testapp://response

Below are more examples of the JSON included in the Sale or Refund payload:

				
					{
    "amount": 200,
    "type": "sale",
    "currency": "EUR",
    "responseUrl": "testapp://response"
}
				
			
				
					{
    "amount": 200,
    "type": "refund",
    "originalTranId": "446655",
    "currency": "EUR",
    "responseUrl": "testapp://response"
}
				
			

Transaction response

Once completed, the SoftPOS application will open the field sent in responseUrl (if sent, as it is optional). The only requirement for the responseUrl parameter is that it is a valid parameter managed by the application making the call.

The SoftPOS application will automatically append a results query parameter, which is result. This parameter can contain one of the following two values, depending on the result of the operation:

  • result: This field will contain a JSON string with information about the result of the operation.
  • error: This field will contain a JSON string with information about the error in the operation.

Below is an example of the responseUrl in a failed transaction. This value will be encoded:

				
					testapp://response?result=%7B%22error%22:%7B%22description%22:%22The%20operation%20couldn%E2%80%99t%20be%20completed.%20(Softpos.SoftposReadError%20error%2010.)%22,%22softposReadError%22:%22readCancelled%22,%22errorDescription%22:%22The%20operation%20couldn%E2%80%99t%20be%20completed.%20(Softpos.SoftposReadError%20error%2010.)%22%7D%7D
				
			
				
					testapp://response?result={"error":{"description":"The operation couldn’t be completed. (Softpos.SoftposReadError error 10.)","softposReadError":"readCancelled","errorDescription":"The operation couldn’t be completed. (Softpos.SoftposReadError error 10.)"}}
				
			

JSON structure and parameters for result or error

The JSON structure for result or error is the following:

				
					{
  "result": {
    "refusalCode": "<STRING>",
    "transactionId": "<STRING>",
    "customMessage": {
      "...": "..."
    }
  }
}

				
			
				
					{
  "error": {
    "description": "<STRING>",
    "errorDescription": "<STRING OPTIONAL>",
    "softposReadError": "<STRING OPTIONAL>",
    "softposError": {
      "internalErrorCode": "<INT OPTIONAL>",
      "errorCode": "<INT OPTIONAL>",
      "errorSubCode": "<INT OPTIONAL>",
      "message": "<STRING OPTIONAL>"
    },
    "transactionResult": {
      "refusalCode": "<STRING>",
      "transactionId": "<STRING>",
      "customMessage": {
        "...": "..."
      }
    }
  }
}
				
			

The fields result or error contain the following parameters:

FieldFormatRequired/OptionalDescriptionExample
refusalCodeAlphanumericRequiredOperation code. “00” indicates that it was successful.00
transactionIdAlphanumericRequiredTransaction identificator.446677
customMessageDictionary [string:string]RequiredString dictionary, with keys and values representing the information returned by the host.N/A
FieldFormatRequired/OptionalDescriptionExample
descriptionAlphanumericRequiredDescription of the error.The operation couldn’t be completed. (Softpos.SoftposReadError error 10.)
errorDescriptionAlphanumericOptionalAdditional details about the error.The operation couldn’t be completed. (Softpos.SoftposReadError error 10.)
softposReadErrorAlphanumericOptionalString representing the error with the card reader.readCancelled
softposErrorJSON Object. Contains the fields:
− internalErrorCode
− errorCode
− errorSubCode
− message
OptionalContains fields with information about the general error.N/A
− internalErrorCodeIntegerOptionalCode indicating the internal system error number.10
− errorCodeIntegerOptionalSystem error code.10
− errorSubCodeIntegerOptionalSystem error subcode.10
− messageAlphanumericOptionalAdditional error message.Read error
transactionResultJSON Object. Contains the fields:
− refusalCode
− transactionId
− customMessage
Optional*Original response from the HOST if the transaction is rejected.

* Received if the transaction is rejected by the HOST.
N/A
− refusalCodeAlphanumericOptionalResponse code. Failed transactions have codes other than “00.”105
− transactionIdAlphanumericOptionalTransaction identifier.445577
− customMessageDictionary [string:string]OptionalString dictionary, with keys and values representing the information returned by the host.N/A

result or error JSON example

The following tabs show examples of the JSON included in the result or error field. Remember that these fields will be encoded and formatted:

				
					"result": {
    "refusalCode": "00",
    "transactionId": "449333",
    "customMessage": {
        "f39": "000",
        "isoStan": "000206",
        "transactionTime": "211812",
        "transactionDate": "250209"
    }
}

				
			
				
					"error": {
    "description": "Transaction Error: refusalCode:'105', transactionId:'', mti:'', customMessage:'[\"f39\": \"105\", \"isoStan\": \"000205\", \"transactionTime\": \"205432\", \"transactionDate\": \"250209\"]'",
    "errorDescription": "Transaction Error: refusalCode:'105', transactionId:'', mti:'', customMessage:'[\"f39\": \"105\", \"isoStan\": \"000205\", \"transactionTime\": \"205432\", \"transactionDate\": \"250209\"]'",
            "transactionResult": {
                "refusalCode": "105",
                "customMessage": {
                    "transactionDate": "250209",
                    "isoStan": "000205",
                    "transactionTime": "205432",
                    "f39": "105"
                }
            }
        }
    }
}
				
			

Deep Link sample code

On the home page of this section, you can download a sample code in Swift.

Comparte este documento

Payment integration with Smartphone POS (iOS)

Copiar el enlace

Clipboard Icon
Tabla de Contenidos

Products

  • Addon Payments
  • POS integrated Payments
  • Universal Pay

Sales

Tell us about your business so we can offer you the best solution.

Contact an expert
Contact an expert
Contact an expert
Contact an expert
Contact an expert

Technical Support

Already a client and need help? Contact us, we’re here for you.

Help

Partners

We work with the best partners for in-store and ecommerce solutions. Want to join us?

Join us

© Comercia Global Payments

Privacy policy
Exercising rights
Client information
Whistleblowing channel
Legal disclaimer
Cookies policy
Ask AI
Write your question. For example: How do I create a payment link?
SmartWiki may skip data. Verify the information or contact support.

SmartWiki, Powered by AI

API - Developers Docs
Manage cookie consent

To offer the best experiences, we use technologies such as cookies to store and/or access device information. Consent to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Failure to consent, or withdrawal of consent, may adversely affect certain features and functions.

Functional Always active
Storage or technical access is strictly necessary for the legitimate purpose of allowing the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
Technical storage or access is necessary for the legitimate purpose of storing preferences not requested by the subscriber or user.
Statistics
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos. Storage or technical access that is used exclusively for anonymous statistical purposes. Without a requirement, voluntary compliance by your Internet service provider, or additional records from a third party, information stored or retrieved solely for this purpose cannot be used to identify you.
Marketing
Storage or technical access is necessary to create user profiles to send advertising, or to track the user on a website or several websites for similar marketing purposes.
Manage options Manage services Manage {vendor_count} vendors Read more about these purposes
See preferences
{title} {title} {title}

Consulta la documentación de las distintas secciones de integraciones:

Comienza a integrar

undraw_add_to_cart_re_wrdo 1 (1) (1)

Plugins para CMS

Complementa la integración

SDKs

Métodos de pago

Herramientas

Addon Payments

Consulta la documentación de Addon Payments. Aquí tienes las distintas secciones:

Integraciones

Consultas frecuentes

Portal Backoffice

Cyberpac

We are currently working on the English version of the Cyberpac documentation. You can view the Spanish version using the buttons below:

Canales BackOffice Portal

Plugins integration

Custom integrations

POS integrated Payments

Create a solution that will help you automate processes. You can even add payment processes on physical terminals.

Payment Integrated with Android POS

Payment Integrated with Smartphone POS

POS Data sheets

Addon Payments

Comercia Global Payments has several integration options so you can choose the most efficient one for you.

Integrations

Frequently Asked Questions

BackOffice Portal

Consult the documentation of the different integrations sections:​

Start integration

undraw_add_to_cart_re_wrdo 1 (1) (1)

CMS Plugins

Complement your integration

SDKs

Payment Methods

Tools