Web Scripts

Scripts web-sided in PHP, JS, MYSQL...

384
0

I would like to present new online payment system for polish users.

Below this text you can see two scripts named buypoints.php, first includes homepay online payment system and the other one includes both homepay and daopay systems.

Script first - homepay version

Create a file

buypoints.php

<?PHP 
####################       CONFIG      ################################################### 
#aktywacja homepay, wartosci: true / false 
$config['homepay'] = array(); 
$config['homepay_active'] = true; 
$config['homepay_active_sms'] = true; #active homepay sms system? 
$config['homepay_active_transfer'] = true; #active homepay transfer system? 
# przykladowy konfig dla SMS 
$config['homepay'][2]['acc_id']=2; 
$config['homepay'][2]['addpoints']=10; 
$config['homepay'][2]['sms_number']="79550"; 
$config['homepay'][2]['type']="sms"; 
$config['homepay'][2]['sms_text']="HPAY.NASZAUSLUGA"; 
$config['homepay'][2]['sms_cost']="10.98 zl brutto"; 

# przykladowy konfig dla przelewu 
$config['homepay'][1]['acc_id']=1; 
$config['homepay'][1]['addpoints']=10; 
$config['homepay'][1]['link']="https://ssl.homepay.pl/wplata/1-NASZAUSLUGA"; 
$config['homepay'][1]['type']="przelew"; 
$config['homepay'][1]['przelew_text']="NASZAUSLUGA"; 
$config['homepay'][1]['przelew_cost']="10.00 zl brutto"; 
################################################################################# 
# aktywacja uslugi daopay 
$config['daopay'] = array(); 
$config['daopay_active'] = true; #true/false 
# przykład configu dla daopay 
$config['daopay'][21]['appcode'] = 12345; # 
$config['daopay'][21]['prodcode'] = 'NAZWAUSLUGI'; # 
$config['daopay'][21]['addpoints'] = '100'; # 
$config['daopay'][21]['cost'] = "1 euro inc. VAT"; # 
################################################################################# 
function save_trans($file, $acc, $code) 
{ 
     $hak = fopen($file, "a"); 
     fwrite($hak, $code.'='.$acc.' 
'); 
     fclose($hak); 
} 

function check_code_homepay($code,$usluga) 
{ 
global $config; 
if(!preg_match("/^[A-Za-z0-9]{8}$/",$code)) return 0; 
$code=urlencode($code); 
$handle=fopen("http://homepay.pl/sms/check_code.php?acc_id=".(int)($config['homepay'][$usluga]['acc_id'])."&code=".$code,'r'); 

$status=fgets($handle,8); 
fclose($handle); 
return $status; 
} 

function check_tcode_homepay($code,$usluga) 
{ 
global $config; 
if(!preg_match("/^[A-Za-z0-9]{8}$/",$code)) return 0; 
$code=urlencode($code); 
$handle=fopen("http://homepay.pl/API/check_tcode.php?acc_id=".(int)($config['homepay'][$usluga]['acc_id'])."&code=".$code,'r'); 

$status=fgets($handle,8); 
fclose($handle); 
return $status; 
} 

function add_points(OTS_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['system'] == 'homepay' && $config['homepay_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 OTS_Account(); 
          $account->find($to_user); 
     } 
     else 
     { 
          $player = new OTS_Player(); 
          $player->find($to_user); 
          if($player->isLoaded()) 
               $account = $player->getAccount(); 
          else 
               $account = new OTS_Account(); 
     } 

     if(empty($posted_code)) 
          $errors[] = 'Prosze wpisac kod z SMSa/przelewu.'; 

     if(!$account->isLoaded()) 
          $errors[] = 'Konto/konto postaci o podanym nicku nie istnieje.'; 

     if(count($errors) == 0) 
     { 

          if(count($errors) == 0) 
          { 
          if($config['homepay'][$sms_type]['type']=="sms") 
               $code_info = check_code_homepay($posted_code,$sms_type); 
               else 
               $code_info = check_tcode_homepay($posted_code,$sms_type); 


               if($code_info != "1") 
                    $errors[] = 'Podany kod z SMSa/przelewu jest niepoprawny lub wybrano zla opcje SMSa/przelewu.'; 
               else 
               { 
                    if(add_points($account, $config['homepay'][$sms_type]['addpoints'])) 
                    { 
                         save_trans('trans/homepay.log', $account->getId(), $posted_code);                          

                         $main_content .= '<h1><font color="red">Dodano '.$config['homepay'][$sms_type]['addpoints'].' punktow premium do konta: '.$to_user.' !</font></h1>'; 
                    } 
                    else 
                         $errors[] = 'Wystapil blad podczas dodawania punktow do konta, sproboj ponownie.'; 
               } 
          } 
     } 
} 
if(count($errors) > 0) 
{ 
     $main_content .= 'Wystapily bledy:'; 
     foreach($errors as $error) 
          $main_content .= '<br />* '.$error; 
     $main_content .= '<hr /><hr />'; 
} 
if($config['homepay_active_sms']) 
{ 
     $main_content .= '<table><tr><td><h2 align="center">SMS</h2>Prosimy zapoznać się z regulaminem świadczonych usług zamieszczonym na dole tej strony.<br/><br/>'; 
     foreach($config['homepay'] as $typ) 
          if($typ['type'] == 'sms') 
               $main_content .= '<b>* Na numer <font color="green">'.$typ['sms_number'].'</font> o tresci <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/>'; 
     $main_content .= '</td></tr></table><br />'; 
} 
if($config['homepay_active_transfer']) 
{ 
     $main_content .= '<table><tr><td><h2 align="center">Przelew</h2>Prosimy zapoznać się z regulaminem świadczonych usług zamieszczonym na dole tej strony.<br/><br/>'; 
     foreach($config['homepay'] as $typ) 
          if($typ['type'] == 'przelew') 
               $main_content .= '<b>* Adres - <a href="'.$typ['link'].'"><font color="green">'.$typ['link'].'</font></a> - koszt <font color="green"><b>'.$typ['przelew_cost'].'</b></font>, a za kod dostaniesz <font color="green"><b>'.$typ['addpoints'].'</b></font> punktow premium.</b><br/>'; 
     $main_content .= '</td></tr></table><br /> 
     '; 
} 

$main_content .= '<table><tr><td><form action="?subtopic=buypoints&system=homepay" method="POST"><table>'; 
$main_content .= '<tr><td><b>Nick postaci lub numer konta: </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 wyslanego SMSa: </b></td><td><select name="sms_type">'; 
foreach($config['homepay'] as $id => $typ) 
     if($typ['type'] == 'sms') 
          $main_content .= '<option value="'.$id.'">numer '.$typ['sms_number'].' - kod '.$typ['sms_text'].' - SMS za '.$typ['sms_cost'].'</option>'; 
     elseif($typ['type'] == 'przelew') 
          $main_content .= '<option value="'.$id.'">przelew - kod '.$typ['przelew_text'].' - za '.$typ['przelew_cost'].'</option>'; 
$main_content .= '</select></td></tr>'; 

$main_content .= '<tr><td></td><td><input type="submit" value="Sprawdz" /></td></tr></table></form> 
<h2 align="center"><font color="green">Po zakupie itemków proszę przelogować postać, aby zapobiec utracie rzeczy.</font></h2></td></tr></table><br /> 
<table><tr><td> 
<center><img border="0" src="http://homepay.pl/theme/default/image/logo/homepay_logo26.png"></center><br /> 
<hr> 
Serwis SMS obslugiwany przez <a href="http://www.homepay.pl" target="_blank">Homepay.pl</a><br /> 

     Regulamin: <a href="http://homepay.pl/regulamin/regulamin_sms_premium/" target="_blank">http://homepay.pl/regulamin/regulamin_sms_premium/</a><br /> 
     Usluga dostepna w sieciach: Era, Orange, Play, Plus GSM.<br/> 
<hr> 
<b>Regulamin usług dostępnych na stronie:</b> 
<br/> 
<b>1.a)</b> Kiedy Twój poprawnie wysłany SMS zostanie dostarczony otrzymasz SMS zwrotny z kodem. 
<br/> 
<b>1.b)</b> Kiedy Twój przelew zostanie zaksięgowany (z kart kredytowych i bankow internetowych z listy, jest to kwestia paru sekund) na e-mail który podałeś w formularzu otrzymasz kod. 
<br/> 
<b>2.</b> Po otrzymaniu kodu SMS/przelewu i wpisaniu go wraz z nazwą konta w powyższym formularzu, na serwerze '.$config['server']['serverName'].' podane konto zostanie automatycznie doładowane o okresloną ilość <b>punktów premium</b> które nastepnie moga byc zamienione na wirtualne przedmioty w grze Open Tibia Serwer zwaną <b>'.$config['server']['serverName'].'</b>. 
<br/> 
<b>3.</b> Do pełnego skozystania z usługi wymagana jest przeglądarka internetowa oraz połączenie z siecią Internet. 
<br/> 
<b>4.</b> <b>'.$config['server']['serverName'].'</b> nie odpowiada za źle wpisane tresci SMS. 
<br/> 
<b>5.</b> W razie problemów z działaniem usługi należy kontaktować się z <a href="mailto:[email protected]">[email protected]</a> 
</td></tr></table> 
'; 

} 
else 
{ 
     if($config['homepay_active']) 
          $main_content .= '<br /><br /><a href="?subtopic=buypoints&system=homepay"><h2>Homepay - LINK</h2><img border="0" src="http://homepay.pl/theme/default/image/logo/homepay_logo26.png"></a><h3>Zaplac SMS lub przelewem bankowym.</h3>'; 
} 
?>

Next, add to index.php the following

 case "buypoints"; 
        $subtopic = "buypoints"; 
        $topic = "Buy Points"; 
        include("buypoints.php"); 
    break;

To use homepay system you have to register on the website and choose if you are a private person or a company. Link to registration . After filling required fields you will receive an e-mail with link needed to activate your account. Now you are allowed to use Homepay. Login and choose interesting services:

ENG: 1. TRANSFERS, enter Accounts, click add new account fill up required fields. service type we will use this time is service CODE send to e-mail. Name your service, choose cost and URL of your internet service which will use the service. Click add account and right after Homepay worker accepts our service we are able to use it.

PL: 1. TRANSFERY, wchodzimy w Konta, klikamy dodaj nowe konto i wypełniamy wymagane dane. Typ usługi którego będziemy używać, to w tym przypadku usługa KOD wysyłany na e-mail. Podajemy nazwę usługi, jej kwotę oraz URL naszej strony internetowej która obsługiwać będzie powyższą usługę. Klikamy dodaj konto i zaraz po aktywacji konta przez pracownika Homepay możemy korzystać z danej usługi.

Instalacja usługi TRANSFERY:
Aby móc skorzystać z tej usługi oprócz utworzenia konta będzie potrzeba zaimplementowania go w skrypcie buypoints.php. Wypełniamy następujące pola:
acc_id - czyli ID usługi, które znajdziemy w panelu partnera na stronie internetowej Homepay - Twoje mikropłatności i płatności internetowe przy nazwie usługi którą właśnie stworzyliśmy np. 1
addpoints - liczba punktów które otrzyma gracz po użyciu kodu.
link - jest to link do usługi w postaci https://ssl.homepay.pl/wplata/acc_id-nazwa_uslugi np. https://ssl.homepay.pl/wplata/1-NASZAUSLUGA
type - typ usługi, w tym wypadku to "przelew"
przelew_text - jest to nazwa usługi z panelu partnera zaraz przy ID np. NASZAUSLUGA
przelew_cost - informacja dla klienta chcącego wykupić punkty o cenie usługi np. 10.00 zl brutto

So our config for transfers should look like this/A więc nasza konfiguracja dla przelewu w pliku powinna wyglądać

$config['homepay'][1]['acc_id']=1; 
$config['homepay'][1]['addpoints']=10; 
$config['homepay'][1]['link']="https://ssl.homepay.pl/wplata/1-NASZAUSLUGA"; 
$config['homepay'][1]['type']="przelew"; 
$config['homepay'][1]['przelew_text']="NASZAUSLUGA"; 
$config['homepay'][1]['przelew_cost']="10.00 zl brutto";

ENG: 2. SMS, enter Accounts, click add new account fill up required fields. service type we will use this time is service CODE send to e-mail. Name your service, choose cost and URL of your internet service which will use the service. Click add account and right after Homepay worker accepts our service we are able to use it.

PL: 2. SMS, wchodzimy w Konta, klikamy dodaj nowe konto i wypełniamy wymagane dane. Typ usługi którego będziemy używać, to w tym przypadku sms z kodem zwrotnym. Podajemy nazwę usługi, identyfikator usługi czyli prefix który gracz będzie wpisywał w SMSie, określamy wartość danego kodu, przewidywalną miesięczną ilość kodów dla tej usługi, nie jest to istotne, ale najlepiej zostawić 1000. Dodajemy adres URL do serwisu i wybieramy czy to kod jednorazowy czy czasowy. Klikamy dodaj konto i zaraz po aktywacji konta przez pracownika Homepay możemy korzystać z danej usługi.

PL: Instalacja usługi SMS:
Aby móc skorzystać z tej usługi oprócz utworzenia konta będzie potrzeba zaimplementowania go w skrypcie buypoints.php. Wypełniamy następujące pola:
acc_id - czyli ID usługi, które znajdziemy w panelu partnera na stronie internetowej Homepay - Twoje mikropłatności i płatności internetowe przy nazwie usługi którą właśnie stworzyliśmy np. 2
addpoints - liczba punktów które otrzyma gracz po użyciu kodu.
sms_number - numer na który wysyłamy daną treść.
type - typ usługi, w tym wypadku to "sms"
sms_text - jest to nazwa usługi z panelu partnera zaraz przy ID np. NASZAUSLUGA
sms_cost - informacja dla klienta chcącego wykupić punkty o cenie usługi np. 10.98 zl brutto

So our config for SMS should look like this/A więc nasza konfiguracja dla SMS w pliku powinna wyglądać tak:

$config['homepay'][2]['acc_id']=2; 
$config['homepay'][2]['addpoints']=10; 
$config['homepay'][2]['sms_number']="79550"; 
$config['homepay'][2]['type']="sms"; 
$config['homepay'][2]['sms_text']="HPAY.NASZAUSLUGA"; 
$config['homepay'][2]['sms_cost']="10.98 zl brutto";

ENG: To add next services just copy all that config but remember about changing the number of config x $config['homepay'][x] as specified above in the script.

PL: Aby dodać kolejne usługi sms lub przelewu po prostu kopiujemy cały config danej usługi i zmieniamy dane. Pamiętajmy, aby usługi działały poprawnie, należy wpisać dla każdej inna cyfrę x $config['homepay'][x] tak jak w powyższym przykładzie.

1.3k
0

This script is pretty straight forward, easy to configure, future changes and automated payment.

gesior site folder structure
============================
    pages folder
        paypal.php
ipn folder
    ipn.php
custom_scripts folder
    paypal
        config.php

ipn.php

<?php
if ($_REQUEST['debug']) {
ini_set("display_errors", true);
error_reporting(E_ALL);
}

// GIVE HERE YOUR DB INFO

$mysql_host = 'localhost'; //Leave at localhost
$mysql_user = '-----'; //DB User
$mysql_pass = '-------'; //DB Pass
$mysql_db = '-------'; //DB Name

$file = 'paypal.log'; //Paypal Log Name will be placed in the same location as your ipn.php file
$payer_email = $_REQUEST['payer_email'];
$ip = $_SERVER['REMOTE_ADDR'];
if($ip != "66.211.170.66" && $ip != "216.113.188.202" && $ip != "216.113.188.203" && $ip != "216.113.188.202" && $ip != "173.0.81.1" && $ip != "notify.paypal.com" && $ip != "73.0.81.33" && $ip != "173.0.81.33" ) {
    print "Acess restricted";
$hak = fopen("scammer.log", "a");
fwrite($hak, "$ip \r\n");
fclose($hak);
die(0);
}
$time = date("F j, Y, g:i a");
// REMEBER THERE ARE DOTS AND TWO ZEROS
$paylist = array("0.01" => 500, "10.20" => 1000, "20.70" => 2000, "40.80" => 3000);

// connect db

$db = mysql_connect($mysql_host, $mysql_user, $mysql_pass);

$custom = stripslashes(ucwords(strtolower(trim($_REQUEST['custom']))));
$receiver_email = $_REQUEST['receiver_email'];
$payment_status = $_REQUEST['payment_status'];

// currency

$currency =  $_REQUEST['mc_currency'];

$mc_gross = $_REQUEST['mc_gross'];
mysql_select_db($mysql_db, $db);
if ($_REQUEST['debug']){
print $payment_status . '\n';
print (isset($paylist[$mc_gross])) ? 1 : 0 . '\n';
print (isset($paylist[$mc_gross])) ? 1 : 0 . '\n';
print $receiver_email . '\n';
print $custom . '\n';
}
// GIVE HERE YOUR MAIL
if ($payment_status == "Completed" && $receiver_email == "PUT YOUR EMAIL" && $currency == "EUR" && isset($paylist[$mc_gross]))
{

    $query = "SELECT premium_points FROM accounts WHERE accounts.id = '$custom'";

    $result = mysql_query($query);

    $prem = mysql_fetch_array($result);
    $somecode = "'$time' '$custom' '$payer_email' '$mc_gross' '$ip'\r\n";

    // figure out how much to give
    $give = $paylist[$mc_gross];
    $points = $prem['premium_points'] + $give;
    // $points = mysql_query($prem)
    $qry2 = "UPDATE accounts SET premium_points = '$points' WHERE accounts.id = '$custom'";
    // Log Paypal Transaction
    $hak = fopen($file, "a");
    fwrite($hak, $somecode);
    fclose($hak);
    $result2 = mysql_query($qry2);

}

else
{
echo("Error.");
}
?>

config.php

<?php
$paypal_report_url = 'http://pennumbra.ddns.net/ipn/ipn.php'; // <-- url to ipn
$paypal_return_url = 'http://pennumbra.ddns.net/?subtopic=shopsystem'; // shop
$paypal_image = 'https://www.paypalobjects.com/en_US/i/btn/btn_paynow_LG.gif';
$paypal_payment_type = '_xclick'; // '_xclick' (Buy Now) or '_donations'

$paypals[0]['mail'] = 'MAIL'; // your paypal MAIL
$paypals[0]['name'] = '50 Premium points 1,20 EUR';
$paypals[0]['money_amount'] = '1.2';
$paypals[0]['money_currency'] = 'EUR'; // USD, EUR, more codes: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_currency_codes
$paypals[0]['premium_points'] = 50;

$paypals[1]['mail'] = 'MAIL'; // your paypal MAIL
$paypals[1]['name'] = '100 Premium points 2,40 EUR';
$paypals[1]['money_amount'] = '2.4';
$paypals[1]['money_currency'] = 'EUR'; // USD, EUR, more codes: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_currency_codes
$paypals[1]['premium_points'] = 100;

$paypals[2]['mail'] = 'MAIL'; // your paypal login
$paypals[2]['name'] = '200 Premium points 4,40 EUR';
$paypals[2]['money_amount'] = '4.4';
$paypals[2]['money_currency'] = 'EUR'; // USD, EUR, more codes: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_currency_codes
$paypals[2]['premium_points'] = 200;

$paypals[3]['mail'] = 'MAIL'; // your paypal MAIL
$paypals[3]['name'] = '400 Premium points 8,00 EUR';
$paypals[3]['money_amount'] = '8';
$paypals[3]['money_currency'] = 'EUR'; // USD, EUR, more codes: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_currency_codes
$paypals[3]['premium_points'] = 400;

paypal.php

<?php
if(!defined('INITIALIZED'))
    exit;

if($logged)
{
    require_once('./custom_scripts/paypal/config.php');


    echo '<style>
    table
    {
    border-collapse:collapse;
    }
    table, td, th
    {
    border:1px solid black;
    }
    </style>';

    echo '<table class="tabelapaypal" text-align="center" cellpadding="15" >

<tr><td colspan="2"><h2>Automatic PayPal shop system</h2><br><b>Here are the steps you need to make:</b><br>
    1. You need a valid creditcard <b>or</b> a PayPal <a href="https://www.paypal.com/signup/account">Create Paypal account</a>account with a required amount of money.<br>
    2. Choose how many points you want buy.<br />
    3. Click on the donate/buy button.<br>
    4. Make a transaction on PayPal.<br>
    5. After the transaction points will be automatically added to your account.<br>
    6. Go to Item shop Shop and use your points.</b><br /><br /><br /><br /></td></tr>



    <tr><td style="width:100%; table-layout: fixed; height: 50px;" colspan="2" ><b>Select offer:</b></td></tr>



    ';
    foreach($paypals as $paypal)
    {
        echo '<tr "><td>Buy ' . $paypal['premium_points'] . ' premium points for ' . $paypal['money_amount'] . ' ' . $paypal['money_currency'] . '</td><td style="text-align:center"><form action="https://www.paypal.com/cgi-bin/webscr" method="post">
        <input type="hidden" name="cmd" value="' . $paypal_payment_type . '">
        <input type="hidden" name="business" value="' . $paypal['mail'] . '">
        <input type="hidden" name="item_name" value="' . htmlspecialchars($paypal['name']) . '">
        <input type="hidden" name="custom" value="' . $account_logged->getID() . '">
        <input type="hidden" name="amount" value="' . htmlspecialchars($paypal['money_amount']) . '">
        <input type="hidden" name="currency_code" value="' . htmlspecialchars($paypal['money_currency']) . '">
        <input type="hidden" name="no_note" value="0">
        <input type="hidden" name="no_shipping" value="1">
        <input type="hidden" name="notify_url" value="' . $paypal_report_url . '">
        <input type="hidden" name="return" value="' . $paypal_return_url . '">
        <input type="hidden" name="rm" value="0">
        <input type="image" src="' . $paypal_image . '" border="0" name="submit" alt="PayPal - The safer, easier way to pay online.">
        </form></td></tr> ';


    }
    echo '</table> <br><br><br><br>';
}
else
    echo 'You are not logged in. Login first to buy points.';

Now login on page. goto

http://YOUR_DOMAIN/?subtopic=paypal

2
2
0
Actions
Hide topic messages
Enable infinite scrolling
All posts under this topic will be deleted ?
Pending draft ... Click to resume editing
Discard draft