What's new

PHP [GESIOR ACC] Obs?uga p?atno?ci SMS - SimPay.pl

Status
Not open for further replies.

Simpay

New User
Joined
Apr 16, 2015
Messages
1
Reaction score
1
Drodzy gracze,

Udost?pniamy kod php umo?liwiaj?cy wsp??prac? z nasz? firm?

Kilka s??w o nas:
  • Codzienne wyp?aty uzyskanej prowizji (Nie musisz ju? czeka? do ko?ca okresu rozliczeniowego)
  • 50% na start
  • Pe?ne rozliczenie z Urz?dem Skarbowym
Wi?ksz? ilo?? informacji na nasz temat znajd? Pa?stwa na naszej , oraz w

Poni?ej udost?pniamy gotowy modu?, kt?ry umo?liwi prost? i bezproblemow? implementacje naszego systemu p?atno?ci.

Niezb?dnym warunkiem do rozpocz?cia wsp??pracy jest za?o?enie konta, oraz zdefiniowanie nowej us?ugi. Nast?pnie nale?y uzupe?ni? skrypt o przydzielony przez Simpay API_KEY, oraz API_SECRET.

W service_id wprowadzamy ID us?ugi, sms_number numer pod kt?ry ma by? wys?any SMS oraz sms_text - tre?? wiadomo?ci.

Poni?ej prezentujemy kod php ( ):

simpay.php
PHP:
<?PHP

/*
 * Wymagania skryptu:
 * Aktywny modu? cURL w modu?ach PHP
 * Poprawnie dostosowana podstrona wczytuj?ca plik simpay.php
 * (Powinna zawiera? zmienn? $_GET['subtopic'] = 'simpay')
 * Plik SimPay.class.php powinien by? w tym samym folderze co plik simpay.php 
 * (w razie problem?w nale?y samemu debugowa? lub poda? ?cie?k? bezwzgl?dn? do pliku na serwerze)
 * 
 *  */


error_reporting(E_ALL);
define('API_KEY', 'W Panelu Parntera > API');
define('API_SECRET', 'W Panelu Parntera > API');
define('API_VERSION', 1);
$SimPayLibs = 'SimPay.class.php'; //?cie?ka do klasy Simpay API

require_once($SimPayLibs);

####################       CONFIG      ###################################################


#SimPay
	$config['simpay'] = array();
	$config['simpay_active'] = 1; //czy system p?atno?ci Simpay ma by? aktywny?

        //Przyk?ad konfiguracji jednego SMS (w razie dodania nast?pnych nale?y zwi?kszy? klucz o 1
        ///////////////// V - ww. KLUCZ tablicy z konfiguracj? SMS
	$config['simpay'][0]['service_id'] = 339; //ID us?ugi z SimPay`a
	$config['simpay'][0]['addpoints'] = 10; //ilo?? pkt. jakie ma do?adowa? SMS
	$config['simpay'][0]['sms_number'] = "7636"; //numer telefonu do wys?ania SMS
	$config['simpay'][0]['sms_text'] = "SIM."; //tre?? wysy?anego SMS
	$config['simpay'][0]['usluga'] = "TIBIA";
	$config['simpay'][0]['sms_cost'] = "6,15 z? brutto"; //Koszt wysy?anego SMS (funkcja jedynie informacyjna dla klienta)
	//KONIEC PRZYK?ADU KONFIGURACJI SMS
        
	$config['simpay'][1]['service_id'] = 339;
	$config['simpay'][1]['addpoints'] = 30;
	$config['simpay'][1]['sms_number'] = "7936";
	$config['simpay'][1]['sms_text'] = "SIM.";
	$config['simpay'][1]['usluga'] = "TIBIA";
	$config['simpay'][1]['sms_cost'] = "10,23 z? brutto";

	$config['simpay'][2]['service_id'] = 339;
	$config['simpay'][2]['addpoints'] = 80;
	$config['simpay'][2]['sms_number'] = "92555";
	$config['simpay'][2]['sms_text'] = "SIM.";
	$config['simpay'][2]['usluga'] = "TIBIA";
	$config['simpay'][2]['sms_cost'] = "24,60 z? brutto";
#################################################################################
function check_code_simpay($code, $usluga, $nick)
{
	global $config;

	$rodzaj_uslugi = $config['simpay'][$usluga]['usluga'];
	if(!preg_match("/^[A-Za-z0-9]{6}$/",$code)) return 0;
		$code=urlencode($code);

	$api = new SimPay(API_KEY, API_SECRET, API_VERSION);
	$api->getStatus(array(
		'service_id' => (int)($config['simpay'][$usluga]['service_id']),
		'number' => (int)($config['simpay'][$usluga]['sms_number']),
		'code' => $code,
	));
        

	if ($api->check())
		{

			//kod poprawny
			return 1;
		}
	else
	if ($api->error())
		{

			// niepoprawny kod
			// podczas rozwoju aplikacji system mo?e wy?wietli? b??d
			return 0;
			//print_r($api->showError());
		}
}

function add_points(Account $account, $number_of_points)
{
	if($account->isLoaded())
	{
		$account->setCustomField('premium_points', ($account->getCustomField('premium_points')+$number_of_points));
		return true;
	}
	else
		return false;
}

if ($_REQUEST['subtopic'] == 'simpay' && $config['simpay_active'])
{

	#################################################################################
	$sms_type = (int)$_POST['sms_type'];
	$posted_code = trim($_POST['code']);
	$to_user = trim($_POST['to_user']);
	$verify_code = trim($_POST['verify_code']);
	#################################################################################
	if(!empty($to_user))
	{
		if(is_numeric($to_user))
		{
			$account = new Account();
			$account->find($to_user);
		}
		else
		{
			$player = new Player();
			$player->find($to_user);
			if($player->isLoaded())
				$account = $player->getAccount();
			else
				$account = new Account();
		}
		if(!$account->isLoaded()){
                    $errors[] = 'Konto lub nick postaci nie istnieje.';
                }
			
		if(empty($posted_code)){
                    $errors[] = 'Prosze wpisac kod z SMSa/przelewu.';
                }
                
			if(count($errors) == 0)
			{
				   $code_info = check_code_simpay($posted_code,$sms_type,$to_user);
                                   
				if($code_info != 1)
					$errors[] = 'Podany kod z SMSa/przelewu jest niepoprawny lub wybrano zla opcje SMSa/przelewu.';
				else
				{
					if(add_points($account, $config['simpay'][$sms_type]['addpoints']))
					{
						$main_content .= '<h1><font color="red">Dodano '.$config['simpay'][$sms_type]['addpoints'].' punktow premium do konta: '.$to_user.' !</font></h1>';
					}
					else
					 $errors[] = 'Wystapil blad podczas dodawania punktow do konta, sproboj ponownie.';
				}
			}
	} elseif ($_POST) {
		$errors[] = 'Prosz? uzupe?ni? wszystkie pola.';
	}
	if(count($errors) > 0)
	{

			$main_content .= '<div class="SmallBox" ><div class="MessageContainer" ><div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div>    <div class="BoxFrameEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>    <div class="BoxFrameEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>    <div class="ErrorMessage" >      <div class="BoxFrameVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div>      <div class="BoxFrameVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);" /></div>      <div class="AttentionSign" style="background-image:url('.$layout_name.'/images/content/attentionsign.gif);" /></div><b>Wyst?pi?y problemy:</b><br/>';
			foreach($errors as $error) {
			$main_content .= '<li>* '.$error.'</li>';
			}
		    $main_content .= '</div>    <div class="BoxFrameHorizontal" style="background-image:url('.$layout_name.'/images/content/box-frame-horizontal.gif);" /></div>    <div class="BoxFrameEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>    <div class="BoxFrameEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);" /></div>  </div></div><br/>';
		$main_content .= '<hr />';
}

		$main_content .= '<table width="100%"><tr><td><h2 align="center">SMS</h2>Prosimy zapozna? si? z regulaminem ?wiadczonych us?ug zamieszczonym na dole tej strony.<br/><br/></td></tr></table><b> Aby zakupi? punkty premium skorzystaj z jednej wybranej przez Ciebie opcji znajduj?cych si? poni?ej wysy?aj?c smsa:</b><br/><br/>';

		foreach($config['simpay'] as $typ)
				$main_content .= '<b>* Na numer <font color="green">'.$typ['sms_number'].'</font> o tre?ci <font color="green"><b>'.$typ['sms_text'].'</b></font> za <font color="green"><b>'.$typ['sms_cost'].'</b></font>, a za kod dostaniesz <font color="green"><b>'.$typ['addpoints'].'</b></font> punktow premium.</b><br/><br />';
	
	$main_content .= '<table><tr><td><form action="?subtopic=simpay" method="POST"><table>';
	$main_content .= '<tr><td><b>Nick postaci: </b></td><td><input type="text" size="20" value="'.$to_user.'" name="to_user" /></td></tr>
	<tr><td><b>Kod z SMSa: </b></td><td><input type="text" size="20" value="'.$posted_code.'" name="code" /></td></tr><tr><td><b>Typ wys?anego SMSa: </b></td><td><select name="sms_type">';
	foreach($config['simpay'] as $id => $typ)
		$main_content .= '<option value="'.$id.'">numer '.$typ['sms_number'].' - kod '.$typ['sms_text'].' - SMS za '.$typ['sms_cost'].'</option>';
		
	$main_content .= '</select></td></tr><tr><td></td><td><input type="submit" value="Sprawd?" /></td></tr></table></form></td></tr></table><br />
	<table><tr><td>
	<hr>
	Serwis SMS obslugiwany przez serwis SimPay.pl.<br/>
	Regulamin serwisu dost?pny jest pod linkiem:<br/>
	<font color=red>W przypadku wi?kszych kwot prosz? zachowa? 1 min. odst?p pomi?dzy SMSami!</font>
	<hr>
	<b>Regulamin us?ug dostepnych na tej stronie:</b><br/>
	<b>1.</b> Kiedy Tw?j poprawnie wys?any SMS zostanie dostarczony otrzymasz SMS zwrotny z kodem.<br/>
	<b>2.</b> Po otrzymaniu kodu SMS i wpisaniu go wraz z nazw? konta w powy?szym formularzu, na serwerze '.$config['server']['serverName'].' podane konto zostanie automatycznie do?adowane o okre?lona ilo?? <b>punkt?w premium</b> kt?re nast?pnie mog? by? zamienione na wirtualne przedmioty w grze Tibia na prywatnym serwerze zwanym <b>'.$config['server']['serverName'].'</b>.<br/>
	<b>3.</b> Do pelnego skozystania z uslugi wymagana jest przegladarka internetowa oraz polaczenie z siecia Internet.<br/>
	<b>4.</b> Administracja serwera <b>'.$config['server']['serverName'].'</b> nie odpowiada za ?le wpisane tre?ci SMS.<br/>
	<b>5.</b> W razie problem?w z dzia?aniem us?ugi nale?y kontaktowa? si? z <a href="mailto:xxx@gmail.com">xxx@gmail.com</a>
	</td></tr></table>';
}

if($config['simpay_active'] && $_REQUEST['subtopic'] != 'simpay') {
	$main_content .= '<table>';
	$main_content .= '<tr><td>';
	$main_content .= '<br /><br /><a href="?subtopic=buypoints&system=simpay"><h2>Do?aduj! - LINK<img src="images/img.png /></h2></a><h3>Zap?ac SMSem.</h3>';
	   $main_content .= '</td>';
	    $main_content .= '<td rowspan="2">';
	$main_content .= '<img src="images/img.png" />';
	$main_content .= '</td></tr>';
	$main_content .= '</table>';
}
?>

SimPay.class.php

PHP:
<?php
class SimPay
{
    protected $auth = array();
    protected $api = '1';
    
    protected $response = array();
    protected $call = array();
    
    public function __construct($key = '', $secret = '', $api = false)
    {
        if(isset($api) and !empty($api)) {
            $this->api = $api;
        } 
        
        $this->auth = array(
            "auth" => array(
                "key" => $key,
                "secret" => $secret, 
            )
        );
    }
    
    public function url($value, $params = array())
    {
        $data = json_encode(array('params'=>array_merge($this->auth, $params)));
        $this->call = $this->request($data, "https://simpay.pl/api/".$this->api."/".$value);
        return $this->call;
    }
    
    public function getStatus($params) 
    {
        $this->response = $this->url('status', $params);
        return $this->response;
    }
    
    public function check() 
    {
        if(isset($this->response) and is_array($this->response)) {
            if(isset($this->response['respond']['status']) and $this->response['respond']['status']=='OK') {
                return true;                
            } else if(isset($this->response['error']) and is_array($this->response['error'])) {
                return false;
            } 
        } else {
            throw new Exception('Brak informacji na temat ostatniego zapytania');
        }
    }
    
    public function error() 
    {
        if(isset($this->response['error']) and is_array($this->response['error'])) {
            return true;
        } else {
            return false;
        }
    }
    
    public function showError() 
    {
        if(isset($this->response['error']) and is_array($this->response['error'])) {
            return $this->response['error'];
        } else {
            throw new Exception('Brak bledu do pokazania');
        }        
    }
    
    private function request($data, $url)
    {       
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_FAILONERROR, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // developer only
        $call = curl_exec($curl);
        $response = json_decode($call, true);
        $error = curl_errno($curl);
        curl_close($curl);
        
        if ($error > 0) {
            throw new RuntimeException('CURL ERROR Code:'.$error);
        }
        return $response;
    }
    
    public function response() {
        return $this->response;
    }
}

Dzi?kujemy i zapraszamy do skorzystania z naszych us?ug.

W razie jakichkolwiek pyta? - prosimy o bezpo?redni kontakt, lub za pomoc? forum.

Pozdrawiamy!
 

pepsi358

User
Joined
Mar 5, 2014
Messages
10
Reaction score
0
Odp: [GESIOR ACC] Obs?uga p?atno?ci SMS - SimPay.pl

Jest mo?liwo?? zrobienia kodu na Znote Acc??
 
Status
Not open for further replies.
Top