MIVA Merchant 5.x Module API Overview

MIVA Merchant 5.x Module API Overview

The API information here was origanlly guessed at by putting together various bits of information gathered here and there, and then extrapolating and testing. Additions and corrections were added based on the module API information released by MIVA in a text document during Oct 2005. That is also the document where we got most of the descriptions attributed to MIVA in the "What MIVA says" boxes you will see throughout these pages, with others being from sources like emails MIVA posted to users lists, or in response to support requests, or whatever.

Required function for all modules: Module_Description

Parameters:

  • module var

Return Type:none

This is the one function in the API required for every module regardless of what features it has. All other functions are required depending on what feature codes you specify in the "features" member of the structure you build in this function. Here is an example of the function:

<MvFUNCTION NAME="Module_Description" PARAMETERS="module var" STANDARDOUTPUTLEVEL="">
    <MvASSIGN NAME="l.module:code" VALUE="apitest">
    <MvASSIGN NAME="l.module:name" VALUE="API Test Module">
    <MvASSIGN NAME="l.module:provider" VALUE="4TheBest eCommerce Solutions">
    <MvASSIGN NAME="l.module:version" VALUE="1.0">
    <MvASSIGN NAME="l.module:api_ver" VALUE="5.00">
    <MvASSIGN NAME="l.module:features" VALUE="feature,codes,go,here">
</MvFUNCTION>

What MIVA Says

MIVA Merchant, Admin and the UI all call this function at several different points.

It provides information that identifies the module, such as the module code and the module name and describes some of its major characteristics, such as the list of features it makes use of. One uses this function to load all this information into a structure with the name "module".

As is frequently the case, one make use of the "var" option on the parameter in order to pass variable values to the calling program by reference. The actual value returned by MvFuncReturn does not contain the main information.

Default Return: NULL

Return Types [back]

Return Types are expressed in the document by the following codes:

  • string: A string return type is any string you wish though normally it is a string that has a specific intent such as the formatted version of a decimal number as you might use in a currency module.
  • cslist: This is a comma separated list values. Most commonly used to return a list of codes for fields.
  • cclist: This is a comma separated list of colon separated values. Most commonly used as a return from tab functions so that you might have a value like "NVALS:Normal Values,SPECVALS:Special Values,OVALS:Other Values" and the system would be treating each comma separated pair as a tab and using the value on the right of the colon as the label for the tab and the value on the left of the colon as the code for the tab.
  • bool: A boolean "true/false" return value, normally a "1" represents a true value and a "0" represents false. Because of the way the MIVA script language treats strings and numbers any string other than a space, and any number other than a 0 will be treated as a true return value whereas a false value can be expressed by a null value like "" or an expression that evaluates to null or zero like "{ 1 - 1 }" or the absence of the "VALUE" attribute entirely.
  • boolinv: An inverted boolean "true/false" return value. This is when the value returned is a boolean value just like the type "bool" but that the normal default return is a false rather than a true value and that you only return true if some special case is true. In the MIVA Merchant API Most functions that are boolean expect a return of true unless something has gone wrong or some special condition occurs, but in this case it is "normal" to return a false value and you only return a true value if something unusual happens. A specific example would be the TaxModule_Order_Invalid function which only returns a true value if one of the fields is invalid.
  • tristate: Acts like a boolean except that a negative value, usually -1 by convention, indicates an unusual but non error state. In most cases this will be used to cause the normal operations to not be completed without causing an error to be output in order to interrupt something that the system was about to do. This is used for example in system extension interrupts to stop a normal action like adding a product to the basket from taking place so the module can take on the role of adding the item to the basket itself, or preventing it from happening without causing the system to throw the normal errors.
  • acount: This is a numeric value that represents a count of the size of an array passed back by reference. A null or 0 return value acts the same as for a bool return type, meaning nothing happens, but a value of 1 indicates only one array index point exists whereas a return of 3 indicates 3 array index points returned. This is used for example in the shipping and payment method functions that have a method parameter passed in by reference and the return indicates the size of the method array being set in the l.method variable.