Jump to content
Sign in to follow this  
GeDox

Blokada fałszywych płatności HomePay PSC API PHP

Recommended Posts

Witam, mam mały problem. Oto on:

DurexLoveSex<3 2.55 PSC 2016-10-31 22:48:53
DurexLoveSex<3 2.55 PSC 2016-10-31 22:47:54 
DurexLoveSex<3 2.55 PSC 2016-10-31 22:46:53 
DurexLoveSex<3 2.55 PSC 2016-10-31 22:45:54 
DurexLoveSex<3 2.55 PSC 2016-10-31 22:44:53 
DurexLoveSex<3 2.55 PSC 2016-10-31 22:43:54 
DurexLoveSex<3 2.55 PSC 2016-10-31 22:42:53 
DurexLoveSex<3 2.55 PSC 2016-10-31 22:41:54 
DurexLoveSex<3 2.55 PSC 2016-10-31 22:40:54 
DurexLoveSex<3 2.55 PSC 2016-10-31 22:39:54

Problem jest w tym, że są to fałszywe płatności, ktoś gdzieś w pewnym momencie podobno odświeża i nabija takie wyniki. Odbiór płatności:

Spoiler

<?php
if(!check_ip()) die; // do testow mozesz zakomentowac ta linijke, pozniej dla zachowania bezpieczenstwa, sprawdzaj czy IP pochodzi od homepay    

if(empty($this->input->post('json'))) die;
$json = json_decode(str_ireplace('\\', '', $this->input->post('json')));

$result = array();
foreach($json as $payment){
  // $payment->psc_id - identyfikator płatności
  // $payment->psc_usr_id - identyfikator użytkownika Homepay
  // $payment->psc_time - znacznik czasu (unix timestamp)
  // $payment->psc_status - status płatności
  // $payment->psc_amount - kwota płatności
  // $payment->psc_provision - prowizja płatności (dla Homepay, prowizja użytkownika = 1 - $payment->provision)
  // $payment->psc_email - adres e-mail płacącego
  // $payment->psc_merchant_label - etykieta płatności
  // $payment->psc_merchant_data - unikalny identyfikator dla płatności nadawany przez partnera 

  // tu powinienes na biezaco obrabiac platnosc, np. dodawac do bazy
  // ten plik nie powinien wypisywac zadnych danych, ewentualne logi zapisuj do pliku

  $amount = round($payment->psc_amount*$config['psc_mnoznik'], 2);

  if($payment->psc_status == '2'){
    $this->db->query("UPDATE `users` SET `portfel`=`portfel`+'$amount' WHERE `id`='...'");
    $this->db->query("INSERT INTO `doladowania` SET `id_usera`='...', `kwota`='$amount', `sposob`='PSC', `czas`=NOW()");
  }

  array_push($result, array(
    'psc_id' => $payment->psc_id,
    'psc_return' => 1 // status płatności, inny niż 1 powoduje ponowienia odpytania przez API Homepay
  ));
}

echo json_encode($result);

 

Wie ktoś co może być nie halo?

Share this post


Link to post

function check_ip(){
        if(empty($_SERVER['REMOTE_ADDR']))
            return false;

        if(ini_get('allow_url_fopen') != 1)
            return gethostbyname("get.homepay.pl") == $_SERVER['REMOTE_ADDR'];

        $handle = fopen('http://get.homepay.pl/index.htm', 'r');
        $data = trim(stream_get_contents($handle));
        fclose($handle);
        return in_array($_SERVER['REMOTE_ADDR'], explode(',', $data));
    }

Problemem może być adres 127.0.0.1?

Edited by GeDox

Share this post


Link to post
4 godziny temu, GeDox napisał:

function check_ip(){
        if(empty($_SERVER['REMOTE_ADDR']))
            return false;

        if(ini_get('allow_url_fopen') != 1)
            return gethostbyname("get.homepay.pl") == $_SERVER['REMOTE_ADDR'];

        $handle = fopen('http://get.homepay.pl/index.htm', 'r');
        $data = trim(stream_get_contents($handle));
        fclose($handle);
        return in_array($_SERVER['REMOTE_ADDR'], explode(',', $data));
    }

Problemem może być adres 127.0.0.1?

najlepiej to zrob tak:

 

function check_ip() {
	return in_array($_SERVER['REMOTE_ADDR'], explode(',', '213.241.52.23,78.11.120.51,78.11.120.52,78.11.120.53,78.11.120.54,78.11.120.55'));
}

 

  • Like 2

Share this post


Link to post
44 minuty temu, TrzyRazyZero napisał:

najlepiej to zrob tak:

 


function check_ip() {
	return in_array($_SERVER['REMOTE_ADDR'], explode(',', '213.241.52.23,78.11.120.51,78.11.120.52,78.11.120.53,78.11.120.54,78.11.120.55'));
}

 

Okej, teraz czekamy

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Create a New Account. It’s free and easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  
×
×
  • Create New...