### Magento Setup Commands Source: https://developer.moneris.com/en/Documentation/NA/Shopping%20Carts/CED%20Commerce These commands are used to upgrade and deploy static content for Magento after installing a new extension. Ensure you are in the Magento root directory when executing these commands. ```shell php bin/magento setup:upgrade php bin/magento setup:static-content:deploy ``` -------------------------------- ### Setting Billing using Hash Table Example Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/API/~/~/~/~/~/~/~/~/link__id=A0B708AB8BE045FEB5F1B4C55FF94DF7&_z=z A practical example of setting billing information using a JavaScript object as a hash table. It shows the structure and keys required for the billing data. ```javascript var billing = { "first_name": "John", "last_name": "Doe", "company_name": "Widgets Inc.", "address": "123 Main St", "city": "Anytown", "province": "ON", "postal_code": "A1A 1A1", "country": "CA", "phone": "555-123-4567", "fax": "555-987-6543", "tax1": "10.00", "tax2": "5.00", "tax3": "1.00", "shipping_cost": "15.00" }; customer.setBilling(billing); ``` -------------------------------- ### Setting Shipping using Hash Table Example Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/API/~/~/~/~/~/~/~/~/link__id=A0B708AB8BE045FEB5F1B4C55FF94DF7&_z=z An example demonstrating how to set shipping information using a JavaScript object as a hash table. This illustrates the expected keys and format for shipping data. ```javascript var shipping = { "first_name": "John", "last_name": "Doe", "company_name": "Widgets Inc.", "address": "123 Main St", "city": "Anytown", "province": "ON", "postal_code": "A1A 1A1", "country": "CA", "phone": "555-123-4567", "fax": "555-987-6543", "tax1": "0.00", "tax2": "0.00", "tax3": "0.00", "shipping_cost": "15.00" }; customer.setShipping(shipping); ``` -------------------------------- ### Recurring Billing Setup Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/API/~/~/~/~/~/~/link__id=F7132403C57F4AB2A0BB625BB79F64BC&_z=z This API allows for the setup of recurring billing transactions. It defines the billing frequency, amount, and start date for future transactions. ```APIDOC ## POST /recurring/billing ### Description Sets up recurring billing transactions for future charges. This endpoint requires details about the billing cycle, amount, and start date. ### Method POST ### Endpoint `/recurring/billing` ### Parameters #### Query Parameters - **recur_unit** (String) - Required - The unit for the recurrence interval (day, week, month, or eom). - **period** (String) - Required - The number of `recur_unit`s that must pass between recurring billings (1-999). - **start_now** (String) - Required - If set to 'true', the first charge is made immediately. If 'false', the billing starts on `start_date`. - **start_date** (String) - Required - The date of the first future recurring billing transaction in 'YYYY/MM/DD' format. Must be a future date if `start_now` is 'false'. - **num_recurs** (String) - Required - The total number of times the transaction must recur (1-99). - **recur_amount** (String) - Required - The amount of the recurring transaction (e.g., '0.01' to '9999999.99'). Must contain at least three digits, with two decimal places. - **payment_information** (String) - Optional - Describes whether the transaction is the first or subsequent in the series (e.g., '0' for first, '2' for subsequent). ### Request Example (No specific request example provided in the source text, but parameters are listed above) ### Response #### Success Response (200) - **RecurSuccess** (Boolean) - Indicates whether the recurring billing transaction has been successfully set up for future billing. #### Response Example (No specific response example provided in the source text, but the success field is listed above) ### Error Handling Specific error codes and messages will be returned based on validation failures or processing errors. ``` -------------------------------- ### Moving To Production With 3-D Secure 2.2 Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/Level%202%203/~/~/~/~/~/~/~/~/link__id=AC98C9C58C524ECF93C971E3D74FC6DB&_z=z Instructions on how to transition your 3-D Secure 2.2 integration from testing to a production environment with Moneris. ```APIDOC ## Moving To Production With 3-D Secure 2.2 ### Description This section outlines the steps required to move your 3-D Secure 2.2 integration into the production environment. ### Steps 1. **Use Production URL**: For your production requests, use the production URL as the Host: `www3.moneris.com`. 2. **Production Credentials for CardLookUp**: In all `CardLookUp` requests, ensure you use the production versions of your **store ID** and **API token**. ``` -------------------------------- ### Recurring Billing Setup Parameters Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/API/~/~/link__id=5938A27CEB4E41CF9E1551727B0589D4&_z=z Defines the mandatory parameters for setting up recurring billing transactions. These include the recurrence unit, whether to start immediately, the start date, the number of recurrences, the period between recurrences, and the recurring amount. ```text Recur unit: day, week, month or eom Start Now: true/false Start Date: YYYY/MM/DD format Number of Recurs: numeric 1-99 Period: numeric 1-999 Recurring Amount: 9-character decimal 0.01-9999999.99 ``` -------------------------------- ### Moving To Production With 3-D Secure 2.2 Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/Hosted%20Solutions/~/~/link__id=AC98C9C58C524ECF93C971E3D74FC6DB&_z=z Instructions for transitioning your 3-D Secure 2.2 integration from the testing environment to production with Moneris. ```APIDOC ## Production Environment Configuration ### Description Once your 3-D Secure 2.2 integration has been thoroughly tested and validated, follow these instructions to seamlessly move your integration to the production environment. ### Production Steps 1. **Host URL**: Switch to the production Host URL: `www3.moneris.com` for all your requests. 2. **Credentials**: In all **CardLookUp** requests, ensure you are using the production versions of your Store ID and API Token. ``` -------------------------------- ### Google Pay Transaction Request Variables (Java Example) Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/Google%20Pay/On%20The%20Web Example of setting required fields for a Google Pay™ transaction request using Java. Demonstrates setting transaction type, order ID, payment data, and amount. ```java .setTransactionType(Constants.TransactionCode.PURCHASE) .setOrderId("GooglePayTest-"+new Date().getTime()) .setPaymentData(data) .setAmount (PaymentsUtil.microsToString (mBikeItem.getPriceMicros ()+mShippingCost)) ``` -------------------------------- ### Example: Setting Shipping using Hash Table (Conceptual) Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/Level%202%203/~/~/~/~/link__id=A0B708AB8BE045FEB5F1B4C55FF94DF7&_z=z Illustrates the conceptual process of setting shipping information via a hash table, including instantiation and populating the table. ```javascript // Instantiate a CustInfo object (if not already done) const customer = new CustInfo(); // Instantiate a Hashtable object for shipping const shippingTable = new Hashtable(); // Build the hashtable using put methods shippingTable.put("first_name", "Jane"); shippingTable.put("last_name", "Smith"); shippingTable.put("address", "456 Oak Ave"); // ... (add all other mandatory shipping fields) // Call the CustInfo object's setShipping() method customer.setShipping(shippingTable); // Assuming 'transaction' is an instance of a transaction object // transaction.setCustInfo(customer); ``` -------------------------------- ### Example: Setting Billing using Hash Table (Conceptual) Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/Level%202%203/~/~/~/~/link__id=A0B708AB8BE045FEB5F1B4C55FF94DF7&_z=z Illustrates the conceptual process of setting billing information via a hash table, including instantiation and populating the table. ```javascript // Instantiate a CustInfo object const customer = new CustInfo(); // Instantiate a Hashtable object for billing const billingTable = new Hashtable(); // Build the hashtable using put methods billingTable.put("first_name", "John"); billingTable.put("last_name", "Doe"); billingTable.put("address", "123 Main St"); // ... (add all other mandatory billing fields) // Call the CustInfo object's setBilling() method customer.setBilling(billingTable); // Assuming 'transaction' is an instance of a transaction object // transaction.setCustInfo(customer); ``` -------------------------------- ### Get Rate Validity Start Time Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/API/Response%20Fields Retrieves the Unix UTC timestamp indicating when the rate becomes valid. This is a 10-character numeric string. ```java receipt.getRateValidityStartTime(); ``` -------------------------------- ### Production Environment Configuration Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/Hosted%20Solutions/~/~/~/~/~/~/link__id=AC98C9C58C524ECF93C971E3D74FC6DB&_z=z Instructions for moving your 3-D Secure 2.2 integration to a production environment. This involves using the production URL and production credentials. ```APIDOC ## Moving To Production With 3-D Secure 2.2 ### Description Once your 3D Secure 2.2 integration has been successfully tested, follow these steps to transition to the production environment: 1. **Production URL**: Use `www3.moneris.com` as the Host for your requests. 2. **Production Credentials**: For all `CardLookUp` requests, ensure you are using the production versions of your `store ID` and `API token`. ### Method N/A (Configuration Guide) ### Endpoint N/A (Configuration Guide) ### Parameters N/A ### Request Example N/A ### Response N/A ``` -------------------------------- ### Get Rate Inquiry Start Time Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/API/Response%20Fields Retrieves the local time when the rate was requested, formatted according to ISO 8601. This is a 24-character alphanumeric string. ```java receipt.getRateInqStartTime(); ``` -------------------------------- ### Testing Environment Configuration Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/Hosted%20Solutions/~/~/~/~/~/~/link__id=AC98C9C58C524ECF93C971E3D74FC6DB&_z=z Instructions for configuring your environment to test 3-D Secure 2.2 integrations with Moneris. This includes using specific testing URLs and credentials. ```APIDOC ## Testing 3-D Secure 2.2 Integration ### Description To test your 3-D Secure 2.2 integration, follow these steps: 1. **Testing URL**: Use `esqa.moneris.com` as the Host for your requests. 2. **Testing Credentials**: For all `CardLookUp`, `threeDSAuthentication`, and `CavvLookup` requests, ensure you are using the testing versions of your `store ID` and `API token`. ### Method N/A (Configuration Guide) ### Endpoint N/A (Configuration Guide) ### Parameters N/A ### Request Example N/A ### Response N/A ``` -------------------------------- ### Getting a Temporary Token Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/Level%202%203/~/~/link__id=A8335F81F39543C68B50E2B746C9D570&_z=z Instructions and example for obtaining a temporary token using an IFrame request to the Moneris Gateway. This token is used for subsequent financial transaction processing. ```APIDOC ## Getting a Temporary Token ### Description To obtain a temporary token, you need to send a request to Moneris from within an IFrame. The Profile ID and the source/postMessage URL must be correctly configured. ### Method GET (within an IFrame) ### Endpoint **QA Environment:** `https://esqa.moneris.com/HPPtoken/index.php` **Production Environment:** `https://www3.moneris.com/HPPtoken/index.php` ### Parameters #### Query Parameters - **Profile ID** (string) - Required - Your unique Moneris Hosted Tokenization Profile ID. ### Request Example ```html ``` *Note: Replace `YOUR_PROFILE_ID` with your actual Profile ID. Update the `src` URL to the appropriate QA or production URL as needed.* ### Response #### Success Response (via `postMessage` from IFrame) - **token** (string) - A temporary token representing the credit card number. #### Response Example (from `postMessage` event) ```json { "token": "TEMPORARY_CARD_TOKEN_HERE" } ``` ``` -------------------------------- ### 3-D Secure 2.2 Integration Guide Source: https://developer.moneris.com/en/Documentation/NA/E-Commerce%20Solutions/Level%202%203/~/~/~/~/~/~/~/~/~/link__id=AC98C9C58C524ECF93C971E3D74FC6DB&_z=z This section outlines the steps required to build and integrate your 3-D Secure 2.2 solution with Moneris. ```APIDOC ## 3-D Secure 2.2 Integration ### Description This guide details the process of integrating with the Moneris 3-D Secure 2.2 API, including activation and transaction flows. ### Activation To activate Visa Secure, MasterCard Identity Check, and/or American Express SafeKey, contact Moneris Sales Support at 1-855-465-4980. ### Transaction Flow - Browser Channel **Step 1-2 (Optional): Card Lookup for Fingerprinting** * **Purpose**: Initiate cardholder browser fingerprinting and determine the card's supported 3DS version. * **Process**: The merchant website collects device information and sends it to Moneris via a `card_lookup` request. * **Moneris Response**: Returns `card_lookup` response containing supported 3DS version, ACS URL, and 3DS Method Data. * **Merchant Browser Action**: Submits an HTTP POST to the ACS URL with the method data. **Step 3-4 (Required): 3DS Authentication Request** * **Purpose**: Initiate validating the cardholder identity and perform an initial risk assessment. * **Request**: Merchant website calls `threeDSAuthentication`. * **Moneris Communication**: Moneris communicates with the 3DS Directory and ACS system. * **Moneris Response (`threeDSAuthentication` response)**: Contains `TransStatus` indicating the next action: * `Y` or `A`: Frictionless flow. Proceed to financial transaction with provided CAVV value. * `C`: Challenge flow. POST a `