Foros del Web » Programando para Internet » PHP »

Codigo PHP de un API de Paypal

Estas en el tema de Codigo PHP de un API de Paypal en el foro de PHP en Foros del Web. Estoy implementando un sistema de Paypal de donaciones que funciona con Mysql, PHP y css de esta página (http://tutorialzine.com/2010/05/donation-center-php-mysql-paypal-api/) Todo esta perfecto, el problema es ...
  #1 (permalink)  
Antiguo 22/04/2011, 02:52
 
Fecha de Ingreso: diciembre-2009
Mensajes: 42
Antigüedad: 14 años, 10 meses
Puntos: 0
Codigo PHP de un API de Paypal

Estoy implementando un sistema de Paypal de donaciones que funciona con Mysql, PHP y css de esta página (http://tutorialzine.com/2010/05/donation-center-php-mysql-paypal-api/)

Todo esta perfecto, el problema es que este script se divide en diferentes partes, en el index, connect, config, api (paypal) y el thankyou.html. De manera que quiero que del codigo api se copie el amount osea la cantidad de dinero que se dono al thankyou para de ahi enviarla a la pagina de los comentarios, aqui estan los codigos.

API.php
Código PHP:
01    require "paypal_integration_class/paypal.class.php";
02    require "config.php";
03    require "connect.php";
04     
05    $p 
= new paypal_class;
06    $p->paypal_url $payPalURL// $payPalURL is defined in config.php
07     
08    
if ($p->validate_ipn()) {
09        if($p->ipn_data['payment_status']=='Completed')
10        {
11            $amount $p->ipn_data['mc_gross'] - $p->ipn_data['mc_fee'];
12     
13            mysql_query
("   INSERT INTO dc_donations (transaction_id,donor_email,amount,original_request)
14                            VALUES (
15                                '"
.esc($p->ipn_data['txn_id'])."',
16                                '"
.esc($p->ipn_data['payer_email'])."',
17                                "
.(float)$amount.",
18                                '"
.esc(http_build_query($_POST))."'
19                            )"
);
20        }
21    }
22     
23    
function esc($str)
24    {
25        global $link;
26        return mysql_real_escape_string($str,$link);
27    
En pocas palabras yo quiero que el $amount pase a la siguiente pagina que es la de verificacion o agradecimiento

Thankyou.php
Código PHP:
require "config.php";
require 
"connect.php";

if(isset(
$_POST['submitform']) && isset($_POST['txn_id']))
{
    
$_POST['nameField'] = esc($_POST['nameField']);
    
$_POST['websiteField'] =  esc($_POST['websiteField']);
    
$_POST['messageField'] = esc($_POST['messageField']);

    
$error = array();

    if(
mb_strlen($_POST['nameField'],"utf-8")<2)
    {
        
$error[] = 'Please fill in a valid name.';
    }

    if(
mb_strlen($_POST['messageField'],"utf-8")<2)
    {
        
$error[] = 'Please fill in a longer message.';
    }

    if(!
validateURL($_POST['websiteField']))
    {
        
$error[] = 'The URL you entered is invalid.';
    }

    
$errorString '';
    if(
count($error))
    {
        
$errorString join('<br />',$error);
    }
    else
    {
        
mysql_query("    INSERT INTO dc_comments (transaction_id, name, url, message)
                        VALUES (
                            '"
.esc($_POST['txn_id'])."',
                            '"
.$_POST['nameField']."',
                            '"
.$_POST['websiteField']."',
                            '"
.$_POST['messageField']."'
                        )"
);

        if(
mysql_affected_rows($link)==1)
        {
            
$messageString '<a href="donate.php">You were added to our donor section!</a>';
        }
    }

En esta página llamada thankyou.php quiero que el amount del API de paypal se guarde para ser posteada la cantidad que dono ese usuario.

Espero que haya puesto la suficiente, sinceramente soy muy novato en este tema, si falta mas información al empezar deje la pagina de donde saque todo el codigo, les pido que me echen una mano.
  #2 (permalink)  
Antiguo 22/04/2011, 06:52
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Codigo PHP de un API de Paypal

en Thankyou.php hace un var_dump($_POST)
a ver que datso te devuelve, no es muy claro el codigo
  #3 (permalink)  
Antiguo 22/04/2011, 11:55
 
Fecha de Ingreso: diciembre-2009
Mensajes: 42
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Codigo PHP de un API de Paypal

Ok tratare de poner ese codigo pero que no necesito ponerle otro para que ademas de que se postee se visualize o se haga fisico el dato?

La verdad no se mucho de PHP, a la mejor me pueden estar faltando mas codigos que complementan este script de Paypal pero di la página al principio de mi post donde estan todos los codigos.
  #4 (permalink)  
Antiguo 22/04/2011, 12:22
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Codigo PHP de un API de Paypal

te lo digo de inda, por que no se si alguien se va a poner a leer todo el codigo.
te recomiendo encuentres donde esta el error y apartir de ahy
vamos arreglando el resto, queres
  #5 (permalink)  
Antiguo 22/04/2011, 12:24
 
Fecha de Ingreso: diciembre-2009
Mensajes: 42
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Codigo PHP de un API de Paypal

El codigo no tiene ningun error ...
Simplemente queria ver la posibilidad de mostrar la cantidad que dono la persona por medio de algun codigo en el thankyou.php :(
  #6 (permalink)  
Antiguo 22/04/2011, 12:27
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Codigo PHP de un API de Paypal

entonces no me hiciste caso con esto
Cita:
Iniciado por Patriarka Ver Mensaje
en Thankyou.php hace un var_dump($_POST)
a ver que te devuelve
  #7 (permalink)  
Antiguo 22/04/2011, 12:36
 
Fecha de Ingreso: diciembre-2009
Mensajes: 42
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Codigo PHP de un API de Paypal

Me podrias decir especificamente en que parte del codigo lo pongo, porque he intentado ponerlo pero me tira error al cargar la pagina
  #8 (permalink)  
Antiguo 22/04/2011, 12:56
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Codigo PHP de un API de Paypal

en el archivo Thankyou.php
hace un

var_dump($_POST);
  #9 (permalink)  
Antiguo 22/04/2011, 14:14
 
Fecha de Ingreso: diciembre-2009
Mensajes: 42
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Codigo PHP de un API de Paypal

Creo que ya me puedo dar mejor a entender.
Yo tengo el index.php el cual esta conformado por el boton de paypal y hasta abajo por la zona comentarios que son creados del thankyou.php por medio de una base de datos llamada dc_comments el cual no tenia en la estructura el "amount" para que se añadiera a la base datos el dato de la cantidad que dono por medio del API.
El punto es que no se como configurar bien el thankyou.php para que cuando el API de paypal redireccione al usuario a esta pagina, se guarde el "amount" y de ahi proceder a enviar el formulario para que se postee un comentario y que de esa manera salga la cifra que dono.

No se si tenga que ver esto:
Código PHP:
       mysql_query("    INSERT INTO dc_comments (transaction_id, amount, name, url, message)
                        VALUES (
                            '"
.esc($_POST['txn_id'])."',
                            '"
.$_POST['nameField']."',
                            '"
.$_POST['websiteField']."',
                            '"
.$_POST['messageField']."'
                        )"
); 
¿Qué _POST le falta para que se inserte el amount a la base de datos? por sigue saliendo como 0 en la base de datos la tabla de amount cada vez que alguien manda el formulario de thankyou.php
  #10 (permalink)  
Antiguo 22/04/2011, 14:37
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: Codigo PHP de un API de Paypal

Por dios ya te lo han repetido dos veces!
pone esto


Código PHP:
Ver original
  1. var_dump($_POST);
  2. exit();
  3.  
  4. mysql_query("    INSERT INTO dc_c..........
__________________
Drupal Argentina
  #11 (permalink)  
Antiguo 22/04/2011, 17:49
 
Fecha de Ingreso: diciembre-2009
Mensajes: 42
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Codigo PHP de un API de Paypal

Disculpa pero no entendia en que parte poner el codigo, gracias por aclararlo ;) ...

Ahora ya puesto el codigo al darle submit al thankyou.php me tira el siguiente error:
Código PHP:
array(5) { ["nameField"]=> string(3"asd" ["messageField"]=> string(6"123123" ["submitform"]=> string(1"1" ["txn_id"]=> string(32"52367c9234d8708b52eb15b62c8944b9" ["websiteField"]=> string(0"" 
  #12 (permalink)  
Antiguo 22/04/2011, 20:24
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: Codigo PHP de un API de Paypal

Cita:
Iniciado por macquero Ver Mensaje
Disculpa pero no entendia en que parte poner el codigo, gracias por aclararlo ;) ...

Ahora ya puesto el codigo al darle submit al thankyou.php me tira el siguiente error:
Código PHP:
array(5) { ["nameField"]=> string(3"asd" ["messageField"]=> string(6"123123" ["submitform"]=> string(1"1" ["txn_id"]=> string(32"52367c9234d8708b52eb15b62c8944b9" ["websiteField"]=> string(0"" 
Eso no es un error es el resultado del var_dump que has hecho. Y como ves no te esta devolviendo el amount(supongo que ya te has dado cuenta no?)

Una pregunta. Como estas haciendo el autoreturn, si lo estas haciendo cancelando la operacion es logico de que no recibas el amount. Para hecer pruebas reales debes crearte una cuenta y trabajar con el sandbox, a menos de que te sobren los dolares y trabajes con dinero verdadero
__________________
Drupal Argentina
  #13 (permalink)  
Antiguo 22/04/2011, 20:49
 
Fecha de Ingreso: diciembre-2009
Mensajes: 42
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Codigo PHP de un API de Paypal

No, este donation center tiene un demomode.php (Para esto mismo, hacer pruebas) que se activa en el config.php que simula que ya terminaste la donacion para que el thankyou.php se mande y se postee como comentario dandole a entender al thankyou.php que paso por paypal, esta es la condicion para que se mande el thankyou.php:
Código PHP:
if(isset($_POST['submitform']) && isset($_POST['txn_id'])) 
El problema es que por lo que veo el thankyou.php solo copia lo que es el txn_id que viene siendo el ID de la transaccion a la base de datos MYSQL, ahora yo quiero que tambien el amount se agrege en la Base de datos de (Ya tengo la tabla de 'amount' hecha) aqui te dejo el IPN para ver si me podrias ayudar que ademas del txn_id tambien copie el amount. El thankyou.php esta al principio del tema.

ipn.php
Código PHP:
<?php

require "paypal_integration_class/paypal.class.php";
require 
"config.php";
require 
"connect.php";

$p = new paypal_class;
$p->paypal_url $payPalURL// $payPalURL is defined in config.php

if ($p->validate_ipn()) {
    if(
$p->ipn_data['payment_status']=='Completed')
    {
        
$amount $p->ipn_data['mc_gross'] - $p->ipn_data['mc_fee'];

        
mysql_query("    INSERT INTO dc_donations (transaction_id,donor_email,amount,original_request)
                        VALUES (
                            '"
.esc($p->ipn_data['txn_id'])."',
                            '"
.esc($p->ipn_data['payer_email'])."',
                            "
.(float)$amount.",
                            '"
.esc(http_build_query($_POST))."'
                        )"
);
    }
}

function 
esc($str)
{
    global 
$link;
    return 
mysql_real_escape_string($str,$link);
}

?>
Gracias.

Etiquetas: api, paypal
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:18.