Ganar dinero con PHP y Fortumo (SMS Premiums)

Iniciado por hksck, 4 Diciembre 2015, 22:29 PM

0 Miembros y 1 Visitante están viendo este tema.

hksck

Hola chi@s.

He redactado este pdf y me gustaría compartirlo sobre Fortumo y PHP. Os dejo el código PHP y este, el pdf https://drive.google.com/file/d/0B0T63NuiX4qFUnhQaVVBVWxlNzA/view?usp=sharing.

Código (php) [Seleccionar]

<?php

/*
Script para procesar las peticiones de Fortumo.

Estructura del código:
1. Primero comprobamos que la petición provenga de una IP de Fortumo.
2. Comprobamos que la firma sea la misma que la que obtenemos al crear nuestro servicio
de Fortumo.
3. Comprobamos el estado del pago (leerse los guidelines en ) y solo si este es
satisfactorio continuamos.
4. Creamos un array con los links de los programas que enviaremos a las personas que soliciten
nuestro servicio.
5. Comprobamos que el programa que nos pide el cliente este entre los que ofrecemos y además
nos aseguramos de que aunque escriba el nombre del programa en minúscula o deje espacios
sea igual de válido el mensaje.
6. Enviamos el link al teléfono desde el cual podrá descargar lo solicitado.

Las funciones están al final del código.

Dado que no es un foro Warez, al probar mi servicio el enlace que te llegará
no será de la descarga de estos programas sino de una imagen en concreto.

Para probarlo (si quereis gastar 1,45 :P) podeis enviar un mensaje al 27992 con TXT DOWN PHOTOSHOP
o TXT DOWN VEGAS o TXT DOWN OFFICE32 o TXT DOWN OFFICE64 solo para España dado que estaba probando.

*/


//Comprobar si la IP viene de Fortumo
$ips_fortumo = array(
'54.72.6.126',
'54.72.6.27',
'54.72.6.17',
'54.72.6.23',
'79.125.125.1',
'79.125.5.95',
'79.125.5.205'
);
if(!in_array($_SERVER['REMOTE_ADDR'], $ips_fortumo)) {
die("Unknow IP");
}


//Comprobar la firma con nuestro secreto.
$sig_fortumo ''// Introducir vuestra firma aquí.
if(empty($sig_fortumo) || !check_signature($_GET$sig_fortumo)) {
    die(
"Error: Invalid signature");
  }

//Los enlaces que enviaremos a las personas.
$keys_message = array(
'PHOTOSHOP',
'VEGAS',
'OFFICE32',
'OFFICE64',
);
$download_Links = array(
'PHOTOSHOP' => 'https://goo.gl/lxqs5Q',
'VEGAS' => 'https://goo.gl/hrCU67',
'OFFICE32' => 'https://goo.gl/oVmijS',
'OFFICE64' => 'https://goo.gl/oVmijs',
);


//Comprobar el estado del pago, solo continuará si el pago ha sido efectivo.

  
if(preg_match("/OK/i"$_GET['status']) 
    || (
preg_match("/MO/i"$_GET['billing_type']) && preg_match("/pending/i"$_GET['status']))) 
 {
  
 
//Apartir de aquí, do whatever you want

/* Comprobar si el programa que el cliente solicita lo tenemos disponible y corregir
posibles errores de espacios o letras minúsculas*/
$keyword $_GET['message']; //Obtener la keyword del programa a descargar.
  
str_replace(' '''$keyword); //Quitar espacios en blanco si los hay
$keyword strtoupper($keyword);//Convertir todo a mayúsculas si es que se ha escrito en minúsculas.

if(!in_array($keyword$keys_message)) {
echo("No se reconoce el programa solicitado. Por favor, escribirlo 
tal como se muestra en la imagen del anuncio."
);
die;
}


//Enviar el link del programa al teléfono del cliente

  
echo("Gracias por descargar $keyword.
   Este es el enlace de descarga: 
{$download_Links[$keyword]}.");

}else{
die;
//Fin de la comprobación de pago

//Función -  check_signature()
function check_signature($params_array$sig_fortumo) {
    
ksort($params_array);
 
    
$str '';
    foreach (
$params_array as $k=>$v) {
      if(
$k != 'sig') {
        
$str .= "$k=$v";
      }
    }
    
$str .= $sig_fortumo;
    
$signature md5($str);
 
    return (
$params_array['sig'] == $signature);
  }



?>




Espero que os sea buena y amena la lectura y cualquier sugerencia o duda, feel free to comment :D

gAb1

¿Quieres cobrar a la gente por descargar contenido pirata?

Diría que va en contra de las normas del foro.

Yo que tú lo cambiaria y ofreceria solo contenido del que seas dueño/autor... O cualquier otra cosa que no infrinja ninguna ley, ya que hacer eso es un delito, pero mucho mayor que simplemente compartir contenido pirata gratis.

Esta bastante bien el servicio para empezar a vender tus productos o servicios onnline de manera facil y rápida.

hksck

Hola gAb1.

Te equivocas!
Porfavor, revisa el post de manera correcta.
No doy enlaces a ningún programa (copia y pega en el navegador los links de google que hay en el código y verás que
no los lleva al programa sino a una PRUEBA DE CONCEPTO de lo que sería el programa.

Es un ejemplp práctico quizá para donaciones pero lo ejemplifiqué mal quizá en el pdf.

Saludos!!

gAb1

#3
Ya, en ningún momento dije nada de enlaces. De igual modo no puedes pedir "donaciones" a cambio de contenido pirata, de hecho no se debería pedir nada a cambio de contenido pirata, seria una doble infracción xD

Está muy bien hacer un sistema de donaciones o de micropagos pero para contenido no pirata.

Que conste, lo que no me gusta es el ejemplo no la idea.

¿Has probado el script? ¿No debería ir el código dentro del segundo if? Y esa url nada más cerrarlo... Arreglalo un poco xD (configura tu editor para usar 4 espacios)

hksck

Hola nuevamente gAb1

Si, el código funciona, ya está arreglado lo de la url, fue un error sin querer.
El code que tengo alojado en mi server en este caso una máquina de uso casera que rara vez recuerdo encender XAMPP ya que por defecto no lo inicio con el PC si funciona correctamente.


gAb1

No sé si soy yo que ando espeso, pero diria que falla algo en tu código:

Código (php) [Seleccionar]
//Comprobar el estado del pago, solo continuará si el pago ha sido efectivo.

  if(preg_match("/OK/i", $_GET['status'])
    || (preg_match("/MO/i", $_GET['billing_type']) && preg_match("/pending/i", $_GET['status']))) {
        // esto es lo que hace si el pago es efectivo
  }

// Aquí continua el código sin tener en cuenta ese if, tanto si es o no efectivo...


Estás poniendo el código que envia el enlace fuera del if que comprueba si se ha pagado. Nno tendrías que poner "continue" en el if para que hiciera lo que quieres?

hksck

Del todo cierto !!

Acabo de hacer una prueba alocada del if y si, es cierto, envia los enlaces se haya o no hecho el pago correctamente.

Editando nuevamente (no había testeado si el pago no se realizaba).