lainard Posted July 18, 2007 Share Posted July 18, 2007 Please create SMS user for their Order uisng this Clickatell sms API <?php /** * CLICKATELL SMS API * * This class is meant to send SMS messages (with unicode support) via * the Clickatell gateway and provides support to authenticate to this service, * spending an vouchers and also query for the current account balance. This class * use the fopen or CURL module to communicate with the gateway via HTTP/S. * * For more information about CLICKATELL service visit [url]http://www.clickatell.com[/url] * * @version 1.6 * @package sms_api * @author Aleksandar Markovic <mikikg@gmail.com> * @copyright Copyright (c) 2004 - 2007 Aleksandar Markovic * @link [url]http://sourceforge.net/projects/sms-api/[/url] SMS-API Sourceforge project page * @license [url]http://opensource.org/licenses/gpl-license.php[/url] GNU Public License * */ /** * Main SMS-API class * * Example: * <code> * <?php * require_once ("sms_api.php"); * $mysms = new sms(); * echo $mysms->session; * echo $mysms->getbalance(); * // $mysms->token_pay("1234567890123456"); //spend voucher with SMS credits * $mysms->send ("38160123", "netsector", "TEST MESSAGE"); * ?> * </code> * @package sms_api */ class sms { /** * Clickatell API-ID * @link [url]http://sourceforge.net/forum/forum.php?thread_id=1005106&forum_id=344522[/url] How to get CLICKATELL API ID? * @var integer */ var $api_id = "YOUR_CLICKATELL_API_NUMBER"; /** * Clickatell username * @var mixed */ var $user = "YOUR_CLICKATELL_USERNAME"; /** * Clickatell password * @var mixed */ var $password = "YOUR_CLICKATELL_PASSWORD"; /** * Use SSL (HTTPS) protocol * @var bool */ var $use_ssl = false; /** * Define SMS balance limit below class will not work * @var integer */ var $balace_limit = 0; /** * Gateway command sending method (curl,fopen) * @var mixed */ var $sending_method = "fopen"; /** * Does to use facility for delivering Unicode messages * @var bool */ var $unicode = false; /** * Optional CURL Proxy * @var bool */ var $curl_use_proxy = false; /** * Proxy URL and PORT * @var mixed */ var $curl_proxy = "http://127.0.0.1:8080"; /** * Proxy username and password * @var mixed */ var $curl_proxyuserpwd = "login:secretpass"; /** * Callback * 0 - Off * 1 - Returns only intermediate statuses * 2 - Returns only final statuses * 3 - Returns both intermediate and final statuses * @var integer */ var $callback = 0; /** * Session variable * @var mixed */ var $session; /** * Class constructor * Create SMS object and authenticate SMS gateway * @return object New SMS object. * @access public */ function sms () { if ($this->use_ssl) { $this->base = "http://api.clickatell.com/http"; $this->base_s = "https://api.clickatell.com/http"; } else { $this->base = "http://api.clickatell.com/http"; $this->base_s = $this->base; } $this->_auth(); } /** * Authenticate SMS gateway * @return mixed "OK" or script die * @access private */ function _auth() { $comm = sprintf ("%s/auth?api_id=%s&user=%s&password=%s", $this->base_s, $this->api_id, $this->user, $this->password); $this->session = $this->_parse_auth ($this->_execgw($comm)); } /** * Query SMS credis balance * @return integer number of SMS credits * @access public */ function getbalance() { $comm = sprintf ("%s/getbalance?session_id=%s", $this->base, $this->session); return $this->_parse_getbalance ($this->_execgw($comm)); } /** * Send SMS message * @param to mixed The destination address. * @param from mixed The source/sender address * @param text mixed The text content of the message * @return mixed "OK" or script die * @access public */ function send($to=null, $from=null, $text=null) { /* Check SMS credits balance */ if ($this->getbalance() < $this->balace_limit) { die ("You have reach the SMS credit limit!"); }; /* Check SMS $text length */ if ($this->unicode == true) { $this->_chk_mbstring(); if (mb_strlen ($text) > 210) { die ("Your unicode message is too long! (Current lenght=".mb_strlen ($text).")"); } /* Does message need to be concatenate */ if (mb_strlen ($text) > 70) { $concat = "&concat=3"; } else { $concat = ""; } } else { if (strlen ($text) > 459) { die ("Your message is too long! (Current lenght=".strlen ($text).")"); } /* Does message need to be concatenate */ if (strlen ($text) > 160) { $concat = "&concat=3"; } else { $concat = ""; } } /* Check $to and $from is not empty */ if (empty ($to)) { die ("You not specify destination address (TO)!"); } if (empty ($from)) { die ("You not specify source address (FROM)!"); } /* Reformat $to number */ $cleanup_chr = array ("+", " ", "(", ")", "\r", "\n", "\r\n"); $to = str_replace($cleanup_chr, "", $to); /* Send SMS now */ $comm = sprintf ("%s/sendmsg?session_id=%s&to=%s&from=%s&text=%s&callback=%s&unicode=%s%s", $this->base, $this->session, rawurlencode($to), rawurlencode($from), $this->encode_message($text), $this->callback, $this->unicode, $concat ); return $this->_parse_send ($this->_execgw($comm)); } /** * Encode message text according to required standard * @param text mixed Input text of message. * @return mixed Return encoded text of message. * @access public */ function encode_message ($text) { if ($this->unicode != true) { //standard encoding return rawurlencode($text); } else { //unicode encoding $uni_text_len = mb_strlen ($text, "UTF-8"); $out_text = ""; //encode each character in text for ($i=0; $i<$uni_text_len; $i++) { $out_text .= $this->uniord(mb_substr ($text, $i, 1, "UTF-8")); } return $out_text; } } /** * Unicode function replacement for ord() * @param c mixed Unicode character. * @return mixed Return HEX value (with leading zero) of unicode character. * @access public */ function uniord($c) { $ud = 0; if (ord($c{0})>=0 && ord($c{0})<=127) $ud = ord($c{0}); if (ord($c{0})>=192 && ord($c{0})<=223) $ud = (ord($c{0})-192)*64 + (ord($c{1})-128); if (ord($c{0})>=224 && ord($c{0})<=239) $ud = (ord($c{0})-224)*4096 + (ord($c{1})-128)*64 + (ord($c{2})-128); if (ord($c{0})>=240 && ord($c{0})<=247) $ud = (ord($c{0})-240)*262144 + (ord($c{1})-128)*4096 + (ord($c{2})-128)*64 + (ord($c{3})-128); if (ord($c{0})>=248 && ord($c{0})<=251) $ud = (ord($c{0})-248)*16777216 + (ord($c{1})-128)*262144 + (ord($c{2})-128)*4096 + (ord($c{3})-128)*64 + (ord($c{4})-128); if (ord($c{0})>=252 && ord($c{0})<=253) $ud = (ord($c{0})-252)*1073741824 + (ord($c{1})-128)*16777216 + (ord($c{2})-128)*262144 + (ord($c{3})-128)*4096 + (ord($c{4})-128)*64 + (ord($c{5})-128); if (ord($c{0})>=254 && ord($c{0})<=255) //error $ud = false; return sprintf("%04x", $ud); } /** * Spend voucher with sms credits * @param token mixed The 16 character voucher number. * @return mixed Status code * @access public */ function token_pay ($token) { $comm = sprintf ("%s/http/token_pay?session_id=%s&token=%s", $this->base, $this->session, $token); return $this->_execgw($comm); } /** * Execute gateway commands * @access private */ function _execgw($command) { if ($this->sending_method == "curl") return $this->_curl($command); if ($this->sending_method == "fopen") return $this->_fopen($command); die ("Unsupported sending method!"); } /** * CURL sending method * @access private */ function _curl($command) { $this->_chk_curl(); $ch = curl_init ($command); curl_setopt ($ch, CURLOPT_HEADER, 0); curl_setopt ($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER,0); if ($this->curl_use_proxy) { curl_setopt ($ch, CURLOPT_PROXY, $this->curl_proxy); curl_setopt ($ch, CURLOPT_PROXYUSERPWD, $this->curl_proxyuserpwd); } $result=curl_exec ($ch); curl_close ($ch); return $result; } /** * fopen sending method * @access private */ function _fopen($command) { $result = ''; $handler = @fopen ($command, 'r'); if ($handler) { while ($line = @fgets($handler,1024)) { $result .= $line; } fclose ($handler); return $result; } else { die ("Error while executing fopen sending method! Please check does PHP have OpenSSL support and check does PHP version is greater than 4.3.0."); } } /** * Parse authentication command response text * @access private */ function _parse_auth ($result) { $session = substr($result, 4); $code = substr($result, 0, 2); if ($code!="OK") { die ("Error in SMS authorization! ($result)"); } return $session; } /** * Parse send command response text * @access private */ function _parse_send ($result) { $code = substr($result, 0, 2); if ($code!="ID") { die ("Error sending SMS! ($result)"); } else { $code = "OK"; } return $code; } /** * Parse getbalance command response text * @access private */ function _parse_getbalance ($result) { $result = substr($result, ; return (int)$result; } /** * Check for CURL PHP module * @access private */ function _chk_curl() { if (!extension_loaded('curl')) { die ("This SMS API class can not work without CURL PHP module! Try using fopen sending method."); } } /** * Check for Multibyte String Functions PHP module - mbstring * @access private */ function _chk_mbstring() { if (!extension_loaded('mbstring')) { die ("Error. This SMS API class is setup to use Multibyte String Functions module - mbstring, but module not found. Please try to set unicode=false in class or install mbstring module into PHP."); } } } ?> 0 Quote Link to comment Share on other sites More sharing options...
othellotech Posted July 20, 2007 Share Posted July 20, 2007 why not just put the code to do it in your checkout script if getting an SMS when you get an order is so life changing 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.