/* +----------------------------------------------------------------------+ | PHP version 4.0 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2005 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.0 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_0.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Brad House | | Chris Faulhaber | +----------------------------------------------------------------------+ */ /* $Id$ */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "php.h" #if PHP_WIN32 #include "config.w32.h" #else #include #endif #if HAVE_MCVE /* standard php include(s) */ #include "ext/standard/head.h" #include "ext/standard/php_standard.h" #include "ext/standard/info.h" /* local include(s) */ #include /* local php include(s) */ #include "php_mcve.h" /* {{{ globals */ static int le_conn; /* connection resource */ static int le_user; /* store add/edit/get user information */ static int mcve_init; /* For Safe Memory Deallocation */ /* }}} */ /* {{{ extension definition structures */ function_entry mcve_functions[] = { PHP_FE(m_initengine, NULL) PHP_FE(m_initconn, NULL) PHP_FE(m_deleteresponse, NULL) PHP_FE(m_destroyconn, NULL) PHP_FE(m_setdropfile, NULL) PHP_FE(m_setip, NULL) PHP_FE(m_setssl, NULL) #if BRAD_0 #if LIBMONETRA_VERSION >= 050000 PHP_FE(m_setssl_cafile, NULL) PHP_FE(m_responsekeys, NULL) #endif #endif PHP_FE(m_setssl_files, NULL) PHP_FE(m_settimeout, NULL) PHP_FE(m_setblocking, NULL) PHP_FE(m_verifyconnection, NULL) PHP_FE(m_verifysslcert, NULL) PHP_FE(m_maxconntimeout, NULL) PHP_FE(m_connectionerror, NULL) PHP_FE(m_deletetrans, NULL) PHP_FE(m_connect, NULL) PHP_FE(m_transnew, NULL) PHP_FE(m_transparam, NULL) #if LIBMONETRA_VERSION >= 050000 PHP_FE(m_transkeyval, NULL) PHP_FE(m_validateidentifier, NULL) #endif PHP_FE(m_transsend, NULL) PHP_FE(m_ping, NULL) PHP_FE(m_responseparam, NULL) PHP_FE(m_returnstatus, NULL) PHP_FE(m_returncode, NULL) PHP_FE(m_transactionssent, NULL) PHP_FE(m_transactionitem, NULL) PHP_FE(m_transactionbatch, NULL) PHP_FE(m_transactionid, NULL) PHP_FE(m_transactionauth, NULL) PHP_FE(m_transactiontext, NULL) PHP_FE(m_transactionavs, NULL) PHP_FE(m_transactioncv, NULL) PHP_FE(m_getuserparam, NULL) PHP_FE(m_monitor, NULL) PHP_FE(m_transinqueue, NULL) PHP_FE(m_checkstatus, NULL) PHP_FE(m_completeauthorizations, second_arg_force_ref) PHP_FE(m_sale, NULL) PHP_FE(m_preauth, NULL) PHP_FE(m_void, NULL) PHP_FE(m_preauthcompletion, NULL) PHP_FE(m_force, NULL) PHP_FE(m_override, NULL) PHP_FE(m_return, NULL) PHP_FE(m_iscommadelimited, NULL) PHP_FE(m_parsecommadelimited, NULL) PHP_FE(m_getcommadelimited, NULL) PHP_FE(m_getcell, NULL) PHP_FE(m_getcellbynum, NULL) PHP_FE(m_numcolumns, NULL) PHP_FE(m_numrows, NULL) PHP_FE(m_getheader, NULL) PHP_FE(m_destroyengine, NULL) PHP_FE(m_settle, NULL) PHP_FE(m_gut, NULL) PHP_FE(m_gl, NULL) PHP_FE(m_gft, NULL) PHP_FE(m_qc, NULL) PHP_FE(m_ub, NULL) PHP_FE(m_chkpwd, NULL) PHP_FE(m_bt, NULL) PHP_FE(m_uwait, NULL) PHP_FE(m_text_code, NULL) PHP_FE(m_text_avs, NULL) PHP_FE(m_text_cv, NULL) PHP_FE(m_chngpwd, NULL) PHP_FE(m_listusers, NULL) PHP_FE(m_adduser, NULL) PHP_FE(m_enableuser, NULL) PHP_FE(m_disableuser, NULL) PHP_FE(m_getuserarg, NULL) PHP_FE(m_adduserarg, NULL) PHP_FE(m_deleteusersetup, NULL) PHP_FE(m_initusersetup, NULL) PHP_FE(m_deluser, NULL) PHP_FE(m_edituser, NULL) PHP_FE(m_liststats, NULL) /* Backwards compatability functions below */ PHP_FE(mcve_initengine, NULL) PHP_FE(mcve_initconn, NULL) PHP_FE(mcve_deleteresponse, NULL) PHP_FE(mcve_destroyconn, NULL) PHP_FE(mcve_setdropfile, NULL) PHP_FE(mcve_setip, NULL) PHP_FE(mcve_setssl, NULL) PHP_FE(mcve_setssl_files, NULL) PHP_FE(mcve_settimeout, NULL) PHP_FE(mcve_setblocking, NULL) PHP_FE(mcve_verifyconnection, NULL) PHP_FE(mcve_verifysslcert, NULL) PHP_FE(mcve_maxconntimeout, NULL) PHP_FE(mcve_connectionerror, NULL) PHP_FE(mcve_deletetrans, NULL) PHP_FE(mcve_connect, NULL) PHP_FE(mcve_transnew, NULL) PHP_FE(mcve_transparam, NULL) PHP_FE(mcve_transsend, NULL) PHP_FE(mcve_ping, NULL) PHP_FE(mcve_responseparam, NULL) PHP_FE(mcve_returnstatus, NULL) PHP_FE(mcve_returncode, NULL) PHP_FE(mcve_transactionssent, NULL) PHP_FE(mcve_transactionitem, NULL) PHP_FE(mcve_transactionbatch, NULL) PHP_FE(mcve_transactionid, NULL) PHP_FE(mcve_transactionauth, NULL) PHP_FE(mcve_transactiontext, NULL) PHP_FE(mcve_transactionavs, NULL) PHP_FE(mcve_transactioncv, NULL) PHP_FE(mcve_getuserparam, NULL) PHP_FE(mcve_monitor, NULL) PHP_FE(mcve_transinqueue, NULL) PHP_FE(mcve_checkstatus, NULL) PHP_FE(mcve_completeauthorizations, second_arg_force_ref) PHP_FE(mcve_sale, NULL) PHP_FE(mcve_preauth, NULL) PHP_FE(mcve_void, NULL) PHP_FE(mcve_preauthcompletion, NULL) PHP_FE(mcve_force, NULL) PHP_FE(mcve_override, NULL) PHP_FE(mcve_return, NULL) PHP_FE(mcve_iscommadelimited, NULL) PHP_FE(mcve_parsecommadelimited, NULL) PHP_FE(mcve_getcommadelimited, NULL) PHP_FE(mcve_getcell, NULL) PHP_FE(mcve_getcellbynum, NULL) PHP_FE(mcve_numcolumns, NULL) PHP_FE(mcve_numrows, NULL) PHP_FE(mcve_getheader, NULL) PHP_FE(mcve_destroyengine, NULL) PHP_FE(mcve_settle, NULL) PHP_FE(mcve_gut, NULL) PHP_FE(mcve_gl, NULL) PHP_FE(mcve_gft, NULL) PHP_FE(mcve_qc, NULL) PHP_FE(mcve_ub, NULL) PHP_FE(mcve_chkpwd, NULL) PHP_FE(mcve_bt, NULL) PHP_FE(mcve_uwait, NULL) PHP_FE(mcve_text_code, NULL) PHP_FE(mcve_text_avs, NULL) PHP_FE(mcve_text_cv, NULL) PHP_FE(mcve_chngpwd, NULL) PHP_FE(mcve_listusers, NULL) PHP_FE(mcve_adduser, NULL) PHP_FE(mcve_enableuser, NULL) PHP_FE(mcve_disableuser, NULL) PHP_FE(mcve_getuserarg, NULL) PHP_FE(mcve_adduserarg, NULL) PHP_FE(mcve_deleteusersetup, NULL) PHP_FE(mcve_initusersetup, NULL) PHP_FE(mcve_deluser, NULL) PHP_FE(mcve_edituser, NULL) PHP_FE(mcve_liststats, NULL) { NULL, NULL, NULL } }; zend_module_entry mcve_module_entry = { #if ZEND_MODULE_API_NO >= 20010901 STANDARD_MODULE_HEADER, #endif "mcve", /* module name */ mcve_functions, /* struct of functions (see above) */ PHP_MINIT(mcve), /* module initialization functions */ NULL, /* module shutdown functions */ NULL, /* request initialization functions */ NULL, /* request shutdown functions */ PHP_MINFO(mcve), /* declare the info function for phpinfo() */ #if ZEND_MODULE_API_NO >= 20010901 PHP_MCVE_VERSION, /* declare MCVE version number */ #endif STANDARD_MODULE_PROPERTIES }; /* }}} */ /* declare the module for dynamic loading */ #ifdef COMPILE_DL_MCVE ZEND_GET_MODULE(mcve) # ifdef PHP_WIN32 # include "zend_arg_defs.c" # endif #endif /* {{{ MCVE_CONN destructor */ static void _free_mcve_conn(zend_rsrc_list_entry *rsrc TSRMLS_DC) { MCVE_CONN *conn; conn = (MCVE_CONN *)rsrc->ptr; MCVE_DestroyConn(conn); efree(conn); } /* }}} */ /* {{{ module initialization */ PHP_MINIT_FUNCTION(mcve) { /* register the MCVE_CONN destructor */ le_conn = zend_register_list_destructors_ex(_free_mcve_conn, NULL, "mcve connection", module_number); /* Key definitions for Transaction Parameters */ REGISTER_LONG_CONSTANT("MC_TRANTYPE", MC_TRANTYPE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USERNAME", MC_USERNAME, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_PASSWORD", MC_PASSWORD, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ACCOUNT", MC_ACCOUNT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRACKDATA", MC_TRACKDATA, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXPDATE", MC_EXPDATE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_STREET", MC_STREET, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ZIP", MC_ZIP, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CV", MC_CV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_COMMENTS", MC_COMMENTS, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CLERKID", MC_CLERKID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_STATIONID", MC_STATIONID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_APPRCODE", MC_APPRCODE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_AMOUNT", MC_AMOUNT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_PTRANNUM", MC_PTRANNUM, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TTID", MC_TTID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER", MC_USER, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_PWD", MC_PWD, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ACCT", MC_ACCT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_BDATE", MC_BDATE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EDATE", MC_EDATE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_BATCH", MC_BATCH, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_FILE", MC_FILE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN", MC_ADMIN, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_AUDITTYPE", MC_AUDITTYPE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CUSTOM", MC_CUSTOM, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXAMOUNT", MC_EXAMOUNT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXCHARGES", MC_EXCHARGES, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_RATE", MC_RATE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_RENTERNAME", MC_RENTERNAME, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_RETURNCITY", MC_RETURNCITY, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_RETURNSTATE", MC_RETURNSTATE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_RETURNLOCATION", MC_RETURNLOCATION, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_PRIORITY", MC_PRIORITY, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_INQUIRY", MC_INQUIRY, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CARDTYPES", MC_CARDTYPES, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_SUB", MC_SUB, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_MARKER", MC_MARKER, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_DEVICETYPE", MC_DEVICETYPE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ERRORCODE", MC_ERRORCODE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_NEWBATCH", MC_NEWBATCH, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CURR", MC_CURR, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_DESCMERCH", MC_DESCMERCH, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_DESCLOC", MC_DESCLOC, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ORIGTYPE", MC_ORIGTYPE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_PIN", MC_PIN, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_VOIDORIGTYPE", MC_VOIDORIGTYPE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TIMESTAMP", MC_TIMESTAMP, MCVE_CONST); /* Args for priorities */ REGISTER_LONG_CONSTANT("MC_PRIO_HIGH", MC_PRIO_HIGH, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_PRIO_NORMAL", MC_PRIO_NORMAL, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_PRIO_LOW", MC_PRIO_LOW, MCVE_CONST); /* Args for adding a user */ REGISTER_LONG_CONSTANT("MC_USER_PROC", MC_USER_PROC, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_USER", MC_USER_USER, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_PWD", MC_USER_PWD, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_INDCODE", MC_USER_INDCODE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_MERCHID", MC_USER_MERCHID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_BANKID", MC_USER_BANKID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_TERMID", MC_USER_TERMID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_CLIENTNUM", MC_USER_CLIENTNUM, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_STOREID", MC_USER_STOREID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_AGENTID", MC_USER_AGENTID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_CHAINID", MC_USER_CHAINID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_ZIPCODE", MC_USER_ZIPCODE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_TIMEZONE", MC_USER_TIMEZONE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_MERCHCAT", MC_USER_MERCHCAT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_MERNAME", MC_USER_MERNAME, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_MERCHLOC", MC_USER_MERCHLOC, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_STATECODE", MC_USER_STATECODE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_PHONE", MC_USER_PHONE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_SUB", MC_USER_SUB, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_CARDTYPES", MC_USER_CARDTYPES, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_MODE", MC_USER_MODE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_VNUMBER", MC_USER_VNUMBER, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_ROUTINGID", MC_USER_ROUTINGID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_PPROPERTY", MC_USER_PPROPERTY, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_PID", MC_USER_PID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_PIDPWD", MC_USER_PIDPWD, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_SMID", MC_USER_SMID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_SMIDPWD", MC_USER_SMIDPWD, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_USDDIV", MC_USER_USDDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_AUDDIV", MC_USER_AUDDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_DKKDIV", MC_USER_DKKDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_GBPDIV", MC_USER_GBPDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_HKDDIV", MC_USER_HKDDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_JPYDIV", MC_USER_JPYDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_NZDDIV", MC_USER_NZDDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_NOKDIV", MC_USER_NOKDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_SGDDIV", MC_USER_SGDDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_ZARDIV", MC_USER_ZARDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_SEKDIV", MC_USER_SEKDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_CHFDIV", MC_USER_CHFDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_CADDIV", MC_USER_CADDIV, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_USER_DIVNUM", MC_USER_DIVNUM, MCVE_CONST); /* Values for cardtypes */ REGISTER_LONG_CONSTANT("MC_CARD_VISA", MC_CARD_VISA, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CARD_MC", MC_CARD_MC, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CARD_AMEX", MC_CARD_AMEX, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CARD_DISC", MC_CARD_DISC, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CARD_JCB", MC_CARD_JCB, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CARD_CB", MC_CARD_CB, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CARD_DC", MC_CARD_DC, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CARD_GIFT", MC_CARD_GIFT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CARD_OTHER", MC_CARD_OTHER, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_CARD_ALL", MC_CARD_ALL, MCVE_CONST); /* Values for modes */ REGISTER_LONG_CONSTANT("MC_MODE_AUTH", MC_MODE_AUTH, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_MODE_SETTLE", MC_MODE_SETTLE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_MODE_BOTH", MC_MODE_BOTH, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_MODE_ALL", MC_MODE_ALL, MCVE_CONST); /* Values for EXCHARGES */ REGISTER_LONG_CONSTANT("MC_EXCHARGES_REST", MC_EXCHARGES_REST, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXCHARGES_GIFT", MC_EXCHARGES_GIFT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXCHARGES_MINI", MC_EXCHARGES_MINI, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXCHARGES_TELE", MC_EXCHARGES_TELE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXCHARGES_OTHER", MC_EXCHARGES_OTHER, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXCHARGES_LAUND", MC_EXCHARGES_LAUND, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXCHARGES_NONE", MC_EXCHARGES_NONE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXCHARGES_GAS", MC_EXCHARGES_GAS, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXCHARGES_MILE", MC_EXCHARGES_MILE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXCHARGES_LATE", MC_EXCHARGES_LATE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXCHARGES_1WAY", MC_EXCHARGES_1WAY, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_EXCHARGES_VIOL", MC_EXCHARGES_VIOL, MCVE_CONST); /* Value definitions for Transaction Types */ REGISTER_LONG_CONSTANT("MC_TRAN_SALE", MC_TRAN_SALE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_REDEMPTION", MC_TRAN_REDEMPTION, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_PREAUTH", MC_TRAN_PREAUTH, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_VOID", MC_TRAN_VOID, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_PREAUTHCOMPLETE", MC_TRAN_PREAUTHCOMPLETE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_FORCE", MC_TRAN_FORCE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_OVERRIDE", MC_TRAN_OVERRIDE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_RETURN", MC_TRAN_RETURN, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_RELOAD", MC_TRAN_RELOAD, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_CREDIT", MC_TRAN_CREDIT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_SETTLE", MC_TRAN_SETTLE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_INCREMENTAL", MC_TRAN_INCREMENTAL, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_REVERSAL", MC_TRAN_REVERSAL, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_ACTIVATE", MC_TRAN_ACTIVATE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_BALANCEINQ", MC_TRAN_BALANCEINQ, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_CASHOUT", MC_TRAN_CASHOUT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_TOREVERSAL", MC_TRAN_TOREVERSAL, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_SETTLERFR", MC_TRAN_SETTLERFR, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_ISSUE", MC_TRAN_ISSUE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_TIP", MC_TRAN_TIP, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_MERCHRETURN", MC_TRAN_MERCHRETURN, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_IVRREQ", MC_TRAN_IVRREQ, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_IVRRESP", MC_TRAN_IVRRESP, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_ADMIN", MC_TRAN_ADMIN, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_PING", MC_TRAN_PING, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_CHKPWD", MC_TRAN_CHKPWD, MCVE_CONST); /* Engine Admin Transaction Types */ REGISTER_LONG_CONSTANT("MC_TRAN_CHNGPWD", MC_TRAN_CHNGPWD, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_LISTSTATS", MC_TRAN_LISTSTATS, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_LISTUSERS", MC_TRAN_LISTUSERS, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_GETUSERINFO", MC_TRAN_GETUSERINFO, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_ADDUSER", MC_TRAN_ADDUSER, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_EDITUSER", MC_TRAN_EDITUSER, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_DELUSER", MC_TRAN_DELUSER, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_ENABLEUSER", MC_TRAN_ENABLEUSER, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_DISABLEUSER", MC_TRAN_DISABLEUSER, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_IMPORT", MC_TRAN_IMPORT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_EXPORT", MC_TRAN_EXPORT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_ERRORLOG", MC_TRAN_ERRORLOG, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_CLEARERRORLOG", MC_TRAN_CLEARERRORLOG, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_TRAN_GETSUBACCTS", MC_TRAN_GETSUBACCTS, MCVE_CONST); /* Value definitions for Admin Types */ REGISTER_LONG_CONSTANT("MC_ADMIN_GUT", MC_ADMIN_GUT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_GL", MC_ADMIN_GL, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_GFT", MC_ADMIN_GFT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_BT", MC_ADMIN_BT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_UB", MC_ADMIN_UB, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_QC", MC_ADMIN_QC, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_RS", MC_ADMIN_RS, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_CTH", MC_ADMIN_CTH, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_CFH", MC_ADMIN_CFH, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_FORCESETTLE", MC_ADMIN_FORCESETTLE, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_SETBATCHNUM", MC_ADMIN_SETBATCHNUM, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_RENUMBERBATCH", MC_ADMIN_RENUMBERBATCH, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_FIELDEDIT", MC_ADMIN_FIELDEDIT, MCVE_CONST); REGISTER_LONG_CONSTANT("MC_ADMIN_CLOSEBATCH", MC_ADMIN_CLOSEBATCH, MCVE_CONST); REGISTER_LONG_CONSTANT("M_UNUSED", MCVE_UNUSED, MCVE_CONST); REGISTER_LONG_CONSTANT("M_NEW", MCVE_NEW, MCVE_CONST); REGISTER_LONG_CONSTANT("M_PENDING", MCVE_PENDING, MCVE_CONST); REGISTER_LONG_CONSTANT("M_DONE", MCVE_DONE, MCVE_CONST); REGISTER_LONG_CONSTANT("M_GOOD", MCVE_GOOD, MCVE_CONST); REGISTER_LONG_CONSTANT("M_BAD", MCVE_BAD, MCVE_CONST); REGISTER_LONG_CONSTANT("M_STREET", MCVE_STREET, MCVE_CONST); REGISTER_LONG_CONSTANT("M_ZIP", MCVE_ZIP, MCVE_CONST); REGISTER_LONG_CONSTANT("M_UNKNOWN", MCVE_UNKNOWN, MCVE_CONST); REGISTER_LONG_CONSTANT("M_ERROR", MCVE_ERROR, MCVE_CONST); REGISTER_LONG_CONSTANT("M_FAIL", MCVE_FAIL, MCVE_CONST); REGISTER_LONG_CONSTANT("M_SUCCESS", MCVE_SUCCESS, MCVE_CONST); REGISTER_LONG_CONSTANT("M_AUTH", MCVE_AUTH, MCVE_CONST); REGISTER_LONG_CONSTANT("M_DENY", MCVE_DENY, MCVE_CONST); REGISTER_LONG_CONSTANT("M_CALL", MCVE_CALL, MCVE_CONST); REGISTER_LONG_CONSTANT("M_DUPL", MCVE_DUPL, MCVE_CONST); REGISTER_LONG_CONSTANT("M_PKUP", MCVE_PKUP, MCVE_CONST); REGISTER_LONG_CONSTANT("M_RETRY", MCVE_RETRY, MCVE_CONST); REGISTER_LONG_CONSTANT("M_SETUP", MCVE_SETUP, MCVE_CONST); REGISTER_LONG_CONSTANT("M_TIMEOUT", MCVE_TIMEOUT, MCVE_CONST); REGISTER_LONG_CONSTANT("M_SALE", MCVE_SALE, MCVE_CONST); REGISTER_LONG_CONSTANT("M_PREAUTH", MCVE_PREAUTH, MCVE_CONST); REGISTER_LONG_CONSTANT("M_FORCE", MCVE_FORCE, MCVE_CONST); REGISTER_LONG_CONSTANT("M_OVERRIDE", MCVE_OVERRIDE, MCVE_CONST); REGISTER_LONG_CONSTANT("M_RETURN", MCVE_RETURN, MCVE_CONST); REGISTER_LONG_CONSTANT("M_SETTLE", MCVE_SETTLE, MCVE_CONST); REGISTER_LONG_CONSTANT("M_PROC", MCVE_PROC, MCVE_CONST); REGISTER_LONG_CONSTANT("M_USER", MCVE_USER, MCVE_CONST); REGISTER_LONG_CONSTANT("M_PWD", MCVE_PWD, MCVE_CONST); REGISTER_LONG_CONSTANT("M_INDCODE", MCVE_INDCODE, MCVE_CONST); REGISTER_LONG_CONSTANT("M_MERCHID", MCVE_MERCHID, MCVE_CONST); REGISTER_LONG_CONSTANT("M_BANKID", MCVE_BANKID, MCVE_CONST); REGISTER_LONG_CONSTANT("M_TERMID", MCVE_TERMID, MCVE_CONST); REGISTER_LONG_CONSTANT("M_CLIENTNUM", MCVE_CLIENTNUM, MCVE_CONST); REGISTER_LONG_CONSTANT("M_STOREID", MCVE_STOREID, MCVE_CONST); REGISTER_LONG_CONSTANT("M_AGENTID", MCVE_AGENTID, MCVE_CONST); REGISTER_LONG_CONSTANT("M_CHAINID", MCVE_CHAINID, MCVE_CONST); REGISTER_LONG_CONSTANT("M_ZIPCODE", MCVE_ZIPCODE, MCVE_CONST); REGISTER_LONG_CONSTANT("M_TIMEZONE", MCVE_TIMEZONE, MCVE_CONST); REGISTER_LONG_CONSTANT("M_MERCHCAT", MCVE_MERCHCAT, MCVE_CONST); REGISTER_LONG_CONSTANT("M_MERNAME", MCVE_MERNAME, MCVE_CONST); REGISTER_LONG_CONSTANT("M_MERCHLOC", MCVE_MERCHLOC, MCVE_CONST); REGISTER_LONG_CONSTANT("M_STATECODE", MCVE_STATECODE, MCVE_CONST); REGISTER_LONG_CONSTANT("M_SERVICEPHONE", MCVE_SERVICEPHONE, MCVE_CONST); /* COMPATABILITY VARIABLES */ REGISTER_LONG_CONSTANT("MCVE_UNUSED", MCVE_UNUSED, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_NEW", MCVE_NEW, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_PENDING", MCVE_PENDING, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_DONE", MCVE_DONE, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_GOOD", MCVE_GOOD, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_BAD", MCVE_BAD, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_STREET", MCVE_STREET, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_ZIP", MCVE_ZIP, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_UNKNOWN", MCVE_UNKNOWN, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_ERROR", MCVE_ERROR, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_FAIL", MCVE_FAIL, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_SUCCESS", MCVE_SUCCESS, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_AUTH", MCVE_AUTH, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_DENY", MCVE_DENY, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_CALL", MCVE_CALL, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_DUPL", MCVE_DUPL, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_PKUP", MCVE_PKUP, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_RETRY", MCVE_RETRY, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_SETUP", MCVE_SETUP, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_TIMEOUT", MCVE_TIMEOUT, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_SALE", MCVE_SALE, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_PREAUTH", MCVE_PREAUTH, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_FORCE", MCVE_FORCE, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_OVERRIDE", MCVE_OVERRIDE, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_RETURN", MCVE_RETURN, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_SETTLE", MCVE_SETTLE, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_PROC", MCVE_PROC, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_USER", MCVE_USER, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_PWD", MCVE_PWD, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_INDCODE", MCVE_INDCODE, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_MERCHID", MCVE_MERCHID, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_BANKID", MCVE_BANKID, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_TERMID", MCVE_TERMID, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_CLIENTNUM", MCVE_CLIENTNUM, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_STOREID", MCVE_STOREID, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_AGENTID", MCVE_AGENTID, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_CHAINID", MCVE_CHAINID, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_ZIPCODE", MCVE_ZIPCODE, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_TIMEZONE", MCVE_TIMEZONE, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_MERCHCAT", MCVE_MERCHCAT, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_MERNAME", MCVE_MERNAME, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_MERCHLOC", MCVE_MERCHLOC, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_STATECODE", MCVE_STATECODE, MCVE_CONST); REGISTER_LONG_CONSTANT("MCVE_SERVICEPHONE", MCVE_SERVICEPHONE, MCVE_CONST); return SUCCESS; } /* }}} */ /* {{{ module information */ PHP_MINFO_FUNCTION(mcve) { php_info_print_table_start(); php_info_print_table_row(2, "mcve/monetra support", "enabled"); php_info_print_table_row(2, "version", PHP_MCVE_VERSION); php_info_print_table_end(); } /* }}} */ /* {{{ proto int m_initengine(string location) Ready the client for IP/SSL Communication */ PHP_FUNCTION(m_initengine) { int ret; zval **arg; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) WRONG_PARAM_COUNT; convert_to_string_ex(arg); if (mcve_init) { MCVE_DestroyEngine(); } ret = MCVE_InitEngine(Z_STRVAL_PP(arg)); mcve_init = 1; RETURN_LONG(ret); } /* }}} */ /* {{{ proto resource m_initconn(void) Create and initialize an MCVE_CONN structure */ PHP_FUNCTION(m_initconn) { MCVE_CONN *conn; conn = emalloc(sizeof(MCVE_CONN)); MCVE_InitConn(conn); /* Since the identifiers are pointer addresses, we need to validate it by * checking our linked list in PHP, since we don't want to cause segfaults */ #if LIBMONETRA_VERSION >= 050000 M_ValidateIdentifier(conn, 1); #endif ZEND_REGISTER_RESOURCE(return_value, conn, le_conn); } /* }}} */ /* {{{ proto bool m_deleteresponse(resource conn, int identifier) Delete specified transaction from MCVE_CONN structure */ PHP_FUNCTION(m_deleteresponse) { MCVE_CONN *conn; zval **arg1, **arg2; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); MCVE_DeleteResponse(conn, Z_LVAL_PP(arg2)); RETURN_TRUE; } /* }}} */ /* {{{ proto bool m_deletetrans(resource conn, int identifier) Delete specified transaction from MCVE_CONN structure */ PHP_FUNCTION(m_deletetrans) { MCVE_CONN *conn; zval **arg1, **arg2; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); MCVE_DeleteTrans(conn, Z_LVAL_PP(arg2)); RETURN_TRUE; } /* }}} */ /* {{{ proto void m_destroyconn(resource conn) Destroy the connection and MCVE_CONN structure */ PHP_FUNCTION(m_destroyconn) { #if 0 MCVE_CONN *conn; #endif zval **arg; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) WRONG_PARAM_COUNT; /* If MCVE_DestroyConn() is called within a PHP script, the Resource handle is never cleared, as there does not appear to be an UNREGISTER or DESTROY resource call in the Zend API. What happens is this uninitialized memory location is passed again to the MCVE_DestroyConn() function at script exit (cleanup), and causes weird stuff. So we just go ahead and let the PHP garbage collector call our _free_mcve_conn() we registered (le_conn) to clean up */ #if 0 ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg, -1, "mcve connection", le_conn); MCVE_DestroyConn(conn); #endif RETURN_TRUE; } /* }}} */ /* {{{ proto int m_setdropfile(resource conn, string directory) Set the connection method to Drop-File */ PHP_FUNCTION(m_setdropfile) { MCVE_CONN *conn; int retval; zval **arg1, **arg2; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_string_ex(arg2); retval = MCVE_SetDropFile(conn, Z_STRVAL_PP(arg2)); RETURN_LONG(retval); } /* }}} */ /* {{{ proto int m_setip(resource conn, string host, int port) Set the connection method to IP */ PHP_FUNCTION(m_setip) { MCVE_CONN *conn; int retval; zval **arg1, **arg2, **arg3; if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &arg1, &arg2, &arg3) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_string_ex(arg2); convert_to_long_ex(arg3); retval = MCVE_SetIP(conn, Z_STRVAL_PP(arg2), Z_LVAL_PP(arg3)); RETURN_LONG(retval); } /* }}} */ /* {{{ proto int m_setssl(resource conn, string host, int port) Set the connection method to SSL */ PHP_FUNCTION(m_setssl) { MCVE_CONN *conn; int retval; zval **arg1, **arg2, **arg3; if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &arg1, &arg2, &arg3) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_string_ex(arg2); convert_to_long_ex(arg3); retval = MCVE_SetSSL(conn, Z_STRVAL_PP(arg2), Z_LVAL_PP(arg3)); RETURN_LONG(retval); } /* }}} */ #if BRAD_0 #if LIBMONETRA_VERSION >= 050000 /* {{{ proto int m_setssl_cafile(resource conn, string cafile) Set SSL CA (Certificate Authority) file for verification of server certificate */ PHP_FUNCTION(m_setssl_cafile) { MCVE_CONN *conn; int retval; zval **arg1, **arg2; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_string_ex(arg2); retval = M_SetSSL_CAfile(conn, Z_STRVAL_PP(arg2)); RETURN_LONG(retval); } /* }}} */ #endif #endif /* {{{ proto int m_setssl_files(resource conn, string sslkeyfile, string sslcertfile) Set certificate key files and certificates if server requires client certificate verification */ PHP_FUNCTION(m_setssl_files) { MCVE_CONN *conn; int retval; zval **arg1, **arg2, **arg3; #ifndef LIBMONETRA_BELOW_4_2 if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &arg1, &arg2, &arg3) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); #else if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; #endif convert_to_string_ex(arg2); #ifndef LIBMONETRA_BELOW_4_2 convert_to_string_ex(arg3); retval = MCVE_SetSSL_Files(conn, Z_STRVAL_PP(arg2), Z_STRVAL_PP(arg3)); #else convert_to_string_ex(arg1); retval = MCVE_SetSSL_Files(Z_STRVAL_PP(arg1), Z_STRVAL_PP(arg2)); #endif RETURN_LONG(retval); } /* }}} */ /* {{{ proto int m_settimeout(resource conn, int seconds) Set maximum transaction time (per trans) */ PHP_FUNCTION(m_settimeout) { MCVE_CONN *conn; int retval; zval **arg1, **arg2; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); retval = MCVE_SetTimeout(conn, Z_LVAL_PP(arg2)); RETURN_LONG(retval); } /* }}} */ /* {{{ proto int m_setblocking(resource conn, int tf) Set blocking/non-blocking mode for connection */ PHP_FUNCTION(m_setblocking) { MCVE_CONN *conn; int retval; zval **arg1, **arg2; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); retval = MCVE_SetBlocking(conn, Z_LVAL_PP(arg2)); RETURN_LONG(retval); } /* }}} */ /* {{{ proto bool m_verifyconnection(resource conn, int tf) Set whether or not to PING upon connect to verify connection */ PHP_FUNCTION(m_verifyconnection) { MCVE_CONN *conn; zval **arg1, **arg2; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); MCVE_VerifyConnection(conn, Z_LVAL_PP(arg2)); RETURN_TRUE; } /* }}} */ /* {{{ proto bool m_verifysslcert(resource conn, int tf) Set whether or not to verify the server ssl certificate */ PHP_FUNCTION(m_verifysslcert) { MCVE_CONN *conn; zval **arg1, **arg2; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); MCVE_VerifySSLCert(conn, Z_LVAL_PP(arg2)); RETURN_TRUE; } /* }}} */ /* {{{ proto bool m_maxconntimeout(resource conn, int secs) The maximum amount of time the API will attempt a connection to MCVE */ PHP_FUNCTION(m_maxconntimeout) { MCVE_CONN *conn; zval **arg1, **arg2; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); MCVE_MaxConnTimeout(conn, Z_LVAL_PP(arg2)); RETURN_TRUE; } /* }}} */ /* {{{ proto int m_connect(resource conn) Establish the connection to MCVE */ PHP_FUNCTION(m_connect) { MCVE_CONN *conn; int retval; zval **arg; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg, -1, "mcve connection", le_conn); retval = MCVE_Connect(conn); RETURN_LONG(retval); } /* }}} */ /* {{{ proto string m_connectionerror(resource conn) Get a textual representation of why a connection failed */ PHP_FUNCTION(m_connectionerror) { MCVE_CONN *conn; const char *retval; zval **arg; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg, -1, "mcve connection", le_conn); retval = MCVE_ConnectionError(conn); if (retval == NULL) { RETVAL_STRING("",1); } else { RETVAL_STRING(estrdup(retval), 0); } } /* }}} */ /* {{{ proto int m_transactionssent(resource conn) Check to see if outgoing buffer is clear */ PHP_FUNCTION(m_transactionssent) { MCVE_CONN *conn; int retval; zval **arg; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg, -1, "mcve connection", le_conn); retval = MCVE_TransactionsSent(conn); RETURN_LONG(retval); } /* }}} */ /* {{{ proto int m_ping(resource conn) Send a ping request to MCVE */ PHP_FUNCTION(m_ping) { MCVE_CONN *conn; int retval; zval **arg; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg, -1, "mcve connection", le_conn); retval = MCVE_Ping(conn); RETURN_LONG(retval); } /* }}} */ /* {{{ proto int m_transnew(resource conn) Start a new transaction */ PHP_FUNCTION(m_transnew) { MCVE_CONN *conn; int retval; zval **arg; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg, -1, "mcve connection", le_conn); retval = MCVE_TransNew(conn); RETURN_LONG(retval); } /* }}} */ #if LIBMONETRA_VERSION >= 050000 /* {{{ proto int m_validateidentifier(resource conn, int tf) Whether or not to validate the passed identifier on any transaction it is passed to */ PHP_FUNCTION(m_validateidentifier) { MCVE_CONN *conn; int retval; zval **arg1, **arg2; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); retval = M_ValidateIdentifier(conn, (int)Z_LVAL_PP(arg2)); RETURN_LONG(retval); } /* }}} */ /* {{{ proto int m_transkeyval(resource conn, long identifier, string key, string value) Add key/value pair to a transaction. Replaces deprecated transparam() */ PHP_FUNCTION(m_transkeyval) { MCVE_CONN *conn; int retval; zval **arg1, **arg2, **arg3, **arg4; if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &arg1, &arg2, &arg3, &arg4) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); convert_to_string_ex(arg3); convert_to_string_ex(arg4); retval = M_TransKeyVal(conn, (long)Z_LVAL_PP(arg2), Z_STRVAL_PP(arg3), Z_STRVAL_PP(arg4)); RETURN_LONG(retval); } /* }}} */ #endif /* {{{ proto int m_transparam(resource conn, long identifier, int key, ...) Add a parameter to a transaction (deprecated) */ PHP_FUNCTION(m_transparam) { MCVE_CONN *conn; int retval; int key; zval **arg1, **arg2, **arg3, **arg4, **arg5; if (ZEND_NUM_ARGS() == 4) { if (zend_get_parameters_ex(4, &arg1, &arg2, &arg3, &arg4) == FAILURE) WRONG_PARAM_COUNT; } else if (ZEND_NUM_ARGS() == 5) { if (zend_get_parameters_ex(5, &arg1, &arg2, &arg3, &arg4, &arg5) == FAILURE) WRONG_PARAM_COUNT; } else { WRONG_PARAM_COUNT; } convert_to_long_ex(arg3); key = Z_LVAL_PP(arg3); if (key == MC_CUSTOM && ZEND_NUM_ARGS() != 5) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); switch (key) { /* Typecast to MCVE_int64 */ case MC_TTID: convert_to_long_ex(arg4); retval = MCVE_TransParam(conn, (long)Z_LVAL_PP(arg2), key, (MCVE_int64)Z_LVAL_PP(arg4)); break; /* Typecast to long */ case MC_PTRANNUM: case MC_TIMESTAMP: case MC_MARKER: convert_to_long_ex(arg4); retval = MCVE_TransParam(conn, (long)Z_LVAL_PP(arg2), key, (long)Z_LVAL_PP(arg4)); break; /* Typecast to int */ case MC_ADMIN: case MC_SUB: case MC_TRANTYPE: case MC_AUDITTYPE: case MC_EXCHARGES: case MC_INQUIRY: case MC_PRIORITY: case MC_CARDTYPES: case MC_ORIGTYPE: case MC_VOIDORIGTYPE: convert_to_long_ex(arg4); retval = MCVE_TransParam(conn, (long)Z_LVAL_PP(arg2), key, (int)Z_LVAL_PP(arg4)); break; /* Typecast to double */ case MC_AMOUNT: case MC_EXAMOUNT: case MC_RATE: convert_to_double_ex(arg4); retval = MCVE_TransParam(conn, (long)Z_LVAL_PP(arg2), key, (double)Z_DVAL_PP(arg4)); break; case MC_CUSTOM: convert_to_string_ex(arg4); convert_to_string_ex(arg5); retval = MCVE_TransParam(conn, (long)Z_LVAL_PP(arg2), key, Z_STRVAL_PP(arg4), Z_STRVAL_PP(arg5)); break; default: convert_to_string_ex(arg4); retval = MCVE_TransParam(conn, (long)Z_LVAL_PP(arg2), key, Z_STRVAL_PP(arg4)); break; } RETURN_LONG(retval); } /* }}} */ /* {{{ proto int m_transsend(resource conn, long identifier) Finalize and send the transaction */ PHP_FUNCTION(m_transsend) { MCVE_CONN *conn; int retval; zval **arg1, **arg2; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); retval = MCVE_TransSend(conn, Z_LVAL_PP(arg2)); RETURN_LONG(retval); } /* }}} */ /* {{{ proto string m_responseparam(resource conn, long identifier, string key) Get a custom response parameter */ PHP_FUNCTION(m_responseparam) { MCVE_CONN *conn; const char *retval; zval **arg1, **arg2, **arg3; if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &arg1, &arg2, &arg3) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); convert_to_string_ex(arg3); retval = MCVE_ResponseParam(conn, Z_LVAL_PP(arg2), Z_STRVAL_PP(arg3)); if (retval == NULL) { RETVAL_STRING("",1); } else { RETVAL_STRING(estrdup(retval), 0); } } /* }}} */ #if BRAD_0 #if LIBMONETRA_VERSION >= 050000 /* {{{ proto array m_responsekeys(resource conn, long identifier) Returns array of strings which represents the keys that can be used for response parameters on this transaction */ PHP_FUNCTION(m_responsekeys) { MCVE_CONN *conn; char **retval; int num_keys, i; zval **arg1, **arg2; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; ZEND_FETCH_RESOURCE(conn, MCVE_CONN *, arg1, -1, "mcve connection", le_conn); convert_to_long_ex(arg2); array_init(return_value); retval=M_ResponseKeys(conn, Z_LVAL_PP(arg2), &num_keys); if (retval != NULL) { for (i=0; i