📄 mcve.c
字号:
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 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); 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);}/* }}} *//* {{{ 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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -