Decidir Gateway Guide

close

Services and Compatibility

Payment Gateway Company Name:
Decidir
Services that work with Spreedly:
  • Decidir
Supported operations:
Purchase, Authorize, Capture, Refund, Void, Verify
Supported payment types:
Credit Card
3D Secure 1 Supported
No
3D Secure 2 Supported
No
Regions:
Latin America
API endpoint URL:
https://live.decidir.com/api/v2

Authentication and Security

Specific names for credentials:
Preauth Mode, Api Key

Onboarding Merchants in:

Adding a Decidir gateway

Spreedly supports the PCI implementation of the Decidir API. This version of the API allows a merchant to include credit card and transaction information in a single API request. The PCI implementation supports using a single API key for each API request.

To add a Decidir gateway you must supply the API key provided by Decidir.


curl https://core.spreedly.com/v1/gateways.xml \
  -u 'C7cRfNJGODKh4Iu5Ox3PToKjniY:4UIuWybmdythfNGPqAqyQnYha6s451ri0fYAo4p3drZUi7q2Jf4b7HKg8etDtoKJ' \
  -H 'Content-Type: application/xml' \
  -d '<gateway>
        <gateway_type>decidir</gateway_type>
        <api_key>Your api key</api_key>
        <preauth_mode>false</preauth_mode>
      </gateway>'

<gateway>
  <token>Kad0jf5LYsHpw3DrhMqvSyCUAZ5</token>
  <gateway_type>decidir</gateway_type>
  <name>Decidir</name>
  <description nil="true"/>
  <preauth_mode>false</preauth_mode>
  <characteristics>
    <supports_purchase type="boolean">true</supports_purchase>
    <supports_authorize type="boolean">true</supports_authorize>
    <supports_capture type="boolean">true</supports_capture>
    <supports_credit type="boolean">true</supports_credit>
    <supports_general_credit type="boolean">false</supports_general_credit>
    <supports_void type="boolean">true</supports_void>
    <supports_adjust type="boolean">false</supports_adjust>
    <supports_verify type="boolean">true</supports_verify>
    <supports_reference_purchase type="boolean">false</supports_reference_purchase>
    <supports_purchase_via_preauthorization type="boolean">false</supports_purchase_via_preauthorization>
    <supports_offsite_purchase type="boolean">false</supports_offsite_purchase>
    <supports_offsite_authorize type="boolean">false</supports_offsite_authorize>
    <supports_3dsecure_purchase type="boolean">false</supports_3dsecure_purchase>
    <supports_3dsecure_authorize type="boolean">false</supports_3dsecure_authorize>
    <supports_store type="boolean">false</supports_store>
    <supports_remove type="boolean">false</supports_remove>
    <supports_fraud_review type="boolean">false</supports_fraud_review>
  </characteristics>
  <credentials>
    <credential>
      <name>preauth_mode</name>
      <value>false</value>
    </credential>
  </credentials>
  <gateway_specific_fields>
    <gateway_specific_field>payment_method_id</gateway_specific_field>
    <gateway_specific_field>payment_type</gateway_specific_field>
    <gateway_specific_field>installments</gateway_specific_field>
    <gateway_specific_field>card_holder_identification_type</gateway_specific_field>
    <gateway_specific_field>card_holder_identification_number</gateway_specific_field>
    <gateway_specific_field>card_holder_door_number</gateway_specific_field>
    <gateway_specific_field>card_holder_birthday</gateway_specific_field>
  </gateway_specific_fields>
  <payment_methods>
    <payment_method>credit_card</payment_method>
  </payment_methods>
  <state>retained</state>
  <redacted type="boolean">false</redacted>
  <created_at type="dateTime">2019-06-27T14:38:36Z</created_at>
  <updated_at type="dateTime">2019-06-27T14:38:36Z</updated_at>
</gateway>


env = Spreedly::Environment.new('C7cRfNJGODKh4Iu5Ox3PToKjniY', '4UIuWybmdythfNGPqAqyQnYha6s451ri0fYAo4p3drZUi7q2Jf4b7HKg8etDtoKJ', base_url: 'https://core.spreedly.com')
env.add_gateway(:decidir, api_key: "Your api key", preauth_mode: "false")


#<Spreedly::Gateway:0x00007ffeb5846000
@token="SaToCPndsYflDsC0D5Qg8aaWPN6",
@created_at="2019-06-27T14:38:36Z",
@updated_at="2019-06-27T14:38:36Z",
@gateway_type="decidir",
@state="retained",
@name="Decidir",
@credentials={"preauth_mode"=>"false"}>

Enabling Preauth Mode

By default, Decidir gateways support purchase transactions, which executes the authorization and capture of funds in a single step. However, Decidir can be configured to require pre-authorization and capture in two steps. Currently, using the preauth mode means purchase actions are unsupported, and an authorize and capture action must be used for every transaction.

To enable preauth mode, you must make a request to Decidir support to enable pre-authorization and capture for your account, also referred to as transactions in two steps. Decidir will provide an api_key that can only be used for pre-authorization and capture mode. To create a gateway that utilizes preauth mode, use the preauth and capture api_key from Decidir and set the preauth_mode gateway field to true.

Note: Verify transactions require preauth mode to be enabled and are unsupported if not using preauth mode.

For more information, please see the Decidir documentation for completing transactions in two steps.

Partial Capture

When pre-authorization and capture is enabled, it is possible to perform a variable or partial capture of the amount that was pre-authorized. Decidir allows merchants to capture an amount equal to, less than, or greater than the pre-authorized amount, based on pre-configured percentage rules. Please contact Decidir support to set up this option.

See the Decidir transactions in two steps documentation for more information.

Gateway Specific Fields

When interacting with a Decidir gateway to run transactions, there are a number of gateway specific fields you can specify. See below for usage notes for certain fields, and Decidir’s documentation for more information.

  • payment_method_id - id of the payment method, used for bin validation; defaults to 1
  • payment_type - type of payment, one of single or distributed; defaults to single
  • installments - number of payment installments; defaults to 1

The following fields are provided with Visa transactions for additional validation:

  • card_holder_identification_type - the card holder’s national identification type; DNI or CUIL
  • card_holder_identification_number - the card holder’s national identification number
  • card_door_number - the card holder’s delivery address door number
  • card_holder_birthday - the card holder’s birthday; formatted as MMDDYYYY

curl https://core.spreedly.com/v1/gateways/LlkjmEk0xNkcWrNixXa1fvNoTP4/purchase.xml \
  -u 'C7cRfNJGODKh4Iu5Ox3PToKjniY:4UIuWybmdythfNGPqAqyQnYha6s451ri0fYAo4p3drZUi7q2Jf4b7HKg8etDtoKJ' \
  -H 'Content-Type: application/xml' \
  -d '<transaction>
        <payment_method_token>56wyNnSmuA6CWYP7w0MiYCVIbW6</payment_method_token>
        <amount>100</amount>
        <currency_code>USD</currency_code>
        <gateway_specific_fields>
          <decidir>
            <payment_method_id>1</payment_method_id>
            <payment_type>single</payment_type>
            <installments>1</installments>
            <card_holder_identification_type>DNI</card_holder_identification_type>
            <card_holder_identification_number>123456</card_holder_identification_number>
            <card_holder_door_number>1234</card_holder_door_number>
            <card_holder_birthday>01011980</card_holder_birthday>
          </decidir>
        </gateway_specific_fields>
      </transaction>'

<transaction>
  <on_test_gateway type="boolean">true</on_test_gateway>
  <created_at type="dateTime">2019-06-27T14:42:43Z</created_at>
  <updated_at type="dateTime">2019-06-27T14:42:44Z</updated_at>
  <succeeded type="boolean">true</succeeded>
  <state>succeeded</state>
  <token>Uo9f3hrYAoXC0FOu0xiMePVBWRi</token>
  <transaction_type>Purchase</transaction_type>
  <order_id nil="true"/>
  <ip nil="true"/>
  <description nil="true"/>
  <email nil="true"/>
  <merchant_name_descriptor nil="true"/>
  <merchant_location_descriptor nil="true"/>
  <gateway_specific_fields>
    <decidir>
      <payment_method_id>1</payment_method_id>
      <payment_type>single</payment_type>
      <installments>1</installments>
      <card_holder_identification_type>dni</card_holder_identification_type>
      <card_holder_identification_number>123456</card_holder_identification_number>
      <card_holder_door_number>1234</card_holder_door_number>
      <card_holder_birthday>01011980</card_holder_birthday>
    </decidir>
  </gateway_specific_fields>
  <gateway_specific_response_fields>
  </gateway_specific_response_fields>
  <gateway_transaction_id>67</gateway_transaction_id>
  <gateway_latency_ms type="integer">3</gateway_latency_ms>
  <amount type="integer">100</amount>
  <currency_code>USD</currency_code>
  <retain_on_success type="boolean">false</retain_on_success>
  <payment_method_added type="boolean">false</payment_method_added>
  <message key="messages.transaction_succeeded">Succeeded!</message>
  <gateway_token>XHMaqBCoVRw11GKdUqmWfBtrdzo</gateway_token>
  <gateway_type>test</gateway_type>
  <shipping_address>
    <name>James Jones</name>
    <address1 nil="true"/>
    <address2 nil="true"/>
    <city nil="true"/>
    <state nil="true"/>
    <zip nil="true"/>
    <country nil="true"/>
    <phone_number nil="true"/>
  </shipping_address>
  <response>
    <success type="boolean">true</success>
    <message>Successful purchase</message>
    <avs_code nil="true"/>
    <avs_message nil="true"/>
    <cvv_code nil="true"/>
    <cvv_message nil="true"/>
    <pending type="boolean">false</pending>
    <result_unknown type="boolean">false</result_unknown>
    <error_code nil="true"/>
    <error_detail nil="true"/>
    <cancelled type="boolean">false</cancelled>
    <fraud_review nil="true"/>
    <created_at type="dateTime">2019-06-27T14:42:43Z</created_at>
    <updated_at type="dateTime">2019-06-27T14:42:44Z</updated_at>
  </response>
  <api_urls>
  </api_urls>
  <payment_method>
    <token>P23bbqIaJBUNqlLmCemvryOCyyd</token>
    <created_at type="dateTime">2019-06-27T14:34:57Z</created_at>
    <updated_at type="dateTime">2019-06-27T14:40:08Z</updated_at>
    <email>jjones@example.com</email>
    <data nil="true"/>
    <storage_state>retained</storage_state>
    <test type="boolean">true</test>
    <metadata nil="true"/>
    <callback_url nil="true"/>
    <last_four_digits>1111</last_four_digits>
    <first_six_digits>411111</first_six_digits>
    <card_type>visa</card_type>
    <first_name>James</first_name>
    <last_name>Jones</last_name>
    <month type="integer">12</month>
    <year type="integer">2020</year>
    <address1>1295 Charleston Road</address1>
    <address2 nil="true"/>
    <city>Mountain View</city>
    <state>CA</state>
    <zip>94043</zip>
    <country>US</country>
    <phone_number nil="true"/>
    <company nil="true"/>
    <full_name>James Jones</full_name>
    <eligible_for_card_updater type="boolean">true</eligible_for_card_updater>
    <shipping_address1 nil="true"/>
    <shipping_address2 nil="true"/>
    <shipping_city nil="true"/>
    <shipping_state nil="true"/>
    <shipping_zip nil="true"/>
    <shipping_country nil="true"/>
    <shipping_phone_number nil="true"/>
    <payment_method_type>credit_card</payment_method_type>
    <errors>
    </errors>
    <verification_value></verification_value>
    <number>XXXX-XXXX-XXXX-1111</number>
    <fingerprint nil="true"/>
  </payment_method>
</transaction>


env = Spreedly::Environment.new('C7cRfNJGODKh4Iu5Ox3PToKjniY', '4UIuWybmdythfNGPqAqyQnYha6s451ri0fYAo4p3drZUi7q2Jf4b7HKg8etDtoKJ', base_url: 'https://core.spreedly.com')
env.purchase_on_gateway("LlkjmEk0xNkcWrNixXa1fvNoTP4", "56wyNnSmuA6CWYP7w0MiYCVIbW6", 4432,
  gateway_specific_fields: {
    decidir: {
      payment_method_id: 1,
      payment_type: 'single',
      installments: 1,
      card_holder_identification_type: 'DNI',
      card_holder_identification_number: '123456',
      card_holder_door_number: 1234,
      card_holder_birthday: '01011980'
    }
  }
)


#<Spreedly::Purchase:0x00007fae4808c778
@token="Ogw1EuYzv0jvjyBxD9Jjoogh7NK",
@created_at="2019-06-27T14:42:44Z",
@updated_at="2019-06-27T14:42:44Z",
@state="succeeded",
@message="Succeeded!",
@succeeded="true",
@order_id="",
@ip="",
@description="",
@gateway_token="XHMaqBCoVRw11GKdUqmWfBtrdzo",
@gateway_transaction_id="57",
@email="",
@merchant_name_descriptor="",
@merchant_location_descriptor="",
@on_test_gateway="true",
@currency_code="USD",
@amount="4432",
@response,=
#<Spreedly::Response:0x00007fae411bad40
@success="true",
@pending="false",
@cancelled="false",
@fraud_review="",
@created_at="2019-06-27T14:42:44Z",
@updated_at="2019-06-27T14:42:44Z",
@message="Successful purchase",
@avs_code="",
@avs_message="",
@cvv_code="",
@cvv_message="",
@error_code="",
@error_detail="">,
@shipping_address,=
#<Spreedly::ShippingAddress:0x00007fae411ab5c0
@name="James Jones",
@address1="",
@address2="",
@city="",
@state="",
@zip="",
@country="",
@phone_number="">,
@gateway_specific_fields={:decidir=>{:payment_method_id=>"1", :payment_type=>"single", :installments=>"1", :card_holder_identification_type=>"dni", :card_holder_identification_number=>"123456", :card_holder_door_number=>"1234", :card_holder_birthday=>"01011980"}},
@payment_method,=
#<Spreedly::CreditCard:0x00007fae411a35a0
@token="P23bbqIaJBUNqlLmCemvryOCyyd",
@created_at="2019-06-27T14:34:57Z",
@updated_at="2019-06-27T14:42:43Z",
@email="jjones@example.com",
@storage_state="retained",
@data="",
@first_name="James",
@last_name="Jones",
@full_name="James Jones",
@month="12",
@year="2020",
@number="XXXX-XXXX-XXXX-1111",
@last_four_digits="1111",
@first_six_digits="411111",
@card_type="visa",
@verification_value="",
@address1="1295 Charleston Road",
@address2="",
@city="Mountain View",
@state="CA",
@zip="94043",
@country="US",
@phone_number="",
@company="",
@fingerprint="",
@eligible_for_card_updater="true",
@errors=[]>>

Gateway Specific Response Fields

A response from Decidir may contain a card_authorization_code field:

  <transaction>
    <token>LgpTNGjsWQs9DwdxcbreUVz0R8p</token>
    <transaction_type>Store</transaction_type>
    <gateway_specific_response_fields>
       <decidir>
         <card_authorization_code>123456</card_authorization_code>
       </decidir>
    </gateway_specific_response_fields>
  </transaction>