Foros del Web » Programando para Internet » PHP »

Problemas al introducir gastos de envío en paypal

Estas en el tema de Problemas al introducir gastos de envío en paypal en el foro de PHP en Foros del Web. Hola a todos, Tengo un problema, mi nivel de php es bajo, pero he conseguido que me funcione una tienda online según las exigencias de ...
  #1 (permalink)  
Antiguo 10/06/2016, 00:42
Avatar de jors_11  
Fecha de Ingreso: marzo-2011
Ubicación: Granollers
Mensajes: 79
Antigüedad: 13 años
Puntos: 2
Problemas al introducir gastos de envío en paypal

Hola a todos,

Tengo un problema, mi nivel de php es bajo, pero he conseguido que me funcione una tienda online según las exigencias de google shopping, pero cuando tengo que pasar los gastos de envió a paypal lo que ocurre es que si el cliente escoge un producto pues los gastos se introducen bien, pero si escoge dos productos los gastos se duplican el paypal,
Os agradecería que me echeis una mano voy un poco perdido,
Gracias de antemano, Saludos!

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     include './conexion.php';
  4.     if(isset($_SESSION['carrito'])){
  5.         if(isset($_GET['id'])){
  6.                     $arreglo=$_SESSION['carrito'];
  7.                     $encontro=false;
  8.                     $numero=0;
  9.                     for($i=0;$i<count($arreglo);$i++){
  10.                         if($arreglo[$i]['Id']==$_GET['id']){
  11.                             $encontro=true;
  12.                             $numero=$i;
  13.                         }
  14.                     }
  15.                     if($encontro==true){
  16.                         $arreglo[$numero]['Cantidad']=$arreglo[$numero]['Cantidad']+1;
  17.                         $_SESSION['carrito']=$arreglo;
  18.                     }else{
  19.                         $nombre="";
  20.                         $precio=0;
  21.                         $imagen="";
  22.                         $re=mysql_query("select * from productos where id=".$_GET['id']);
  23.                         while ($f=mysql_fetch_array($re)) {
  24.                             $nombre=$f['nombre'];
  25.                             $precio=$f['precio'];
  26.                             $imagen=$f['imagen'];
  27.                         }
  28.                         $datosNuevos=array('Id'=>$_GET['id'],
  29.                                         'Nombre'=>$nombre,
  30.                                         'Precio'=>$precio,
  31.                                         'Imagen'=>$imagen,
  32.                                         'Cantidad'=>1);
  33.  
  34.                         array_push($arreglo, $datosNuevos);
  35.                         $_SESSION['carrito']=$arreglo;
  36.  
  37.                     }
  38.         }
  39.  
  40.  
  41.  
  42.  
  43.     }else{
  44.         if(isset($_GET['id'])){
  45.             $nombre="";
  46.             $precio=0;
  47.             $imagen="";
  48.             $re=mysql_query("select * from productos where id=".$_GET['id']);
  49.             while ($f=mysql_fetch_array($re)) {
  50.                 $nombre=$f['nombre'];
  51.                 $precio=$f['precio'];
  52.                 $imagen=$f['imagen'];
  53.             }
  54.             $arreglo[]=array('Id'=>$_GET['id'],
  55.                             'Nombre'=>$nombre,
  56.                             'Precio'=>$precio,
  57.                             'Imagen'=>$imagen,
  58.                             'Cantidad'=>1);
  59.             $_SESSION['carrito']=$arreglo;
  60.         }
  61.     }
  62. ?>
  63. <!DOCTYPE html>
  64. <html lang="es">
  65. <head>
  66.     <meta charset="utf-8"/>
  67.     <title>Carrito de Compras</title>
  68.     <link rel="icon" type="image/png" href="/images/favicon.png" />
  69.     <link rel="stylesheet" type="text/css" href="./css/estilos2.css">
  70.     <script type="text/javascript" src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
  71.     <script type="text/javascript"  src="./js/scripts.js"></script>
  72.     <style type="text/css">
  73. <!--
  74. .Estilo1 {font-family: Arial, Helvetica, sans-serif}
  75. -->
  76.     </style>
  77. </head>
  78. <body>
  79.     <header>
  80.         <img src="./imagenes/LOGO-DEFINITIU.png" id="logo">
  81.         <a href="./carritodecompras.php" title="ver carrito de compras">
  82.             <img src="./imagenes/carrito.png">
  83.         </a>
  84.     </header>
  85.     <section>
  86.     <?php
  87. ?>
  88. <?php
  89. if (isset($_SESSION['k_username'])) {
  90.     echo '<center><h3>Usuario: '.$_SESSION['k_username']."</h3></center>";
  91.     echo '<p><center><a href="http://www.miweb.com/registro-usuario/logout.php" class="aceptar" style="width:330px"> Cerrar sesión y salir</a></center></p>';
  92. }
  93. ?>
  94.         <?php
  95.             $total=0;
  96.             if(isset($_SESSION['carrito'])){
  97.             $datos=$_SESSION['carrito'];
  98.            
  99.             $total=0;
  100.             for($i=0;$i<count($datos);$i++){
  101.                
  102.     ?>
  103.                 <div class="producto">
  104.                     <center>
  105.                         <img src="./productos/<?php echo $datos[$i]['Imagen'];?>"><br>
  106.                         <span ><?php echo $datos[$i]['Nombre'];?></span><br>
  107.                         <span>Precio: <?php echo $datos[$i]['Precio'];?></span><br>
  108.                         <span class="subtotal">Subtotal:<?php echo $datos[$i]['Cantidad']*$datos[$i]['Precio'];?></span><br>
  109.                     </center>
  110.                 </div>
  111.             <?php
  112.                 $total=($datos[$i]['Cantidad']*$datos[$i]['Precio'])+$total;
  113.             }
  114.  
  115.             if($total > 0) {
  116.             $sumar = 9;
  117.             }
  118.             if($total < 100) {
  119.             $sumar = 9;
  120.             }
  121.             if($total > 100) {
  122.             $sumar = 25;
  123.             }
  124.             if($total > 150) {
  125.             $sumar = 25;
  126.             }
  127.             if($total > 600) {
  128.             $sumar = 35;
  129.             }
  130.             if($total > 1000) {
  131.             $sumar = 65;
  132.             }
  133.             if($total > 3000) {
  134.             $sumar = 120;
  135.             }
  136.             if($total > 5000) {
  137.             $sumar = 160;
  138.             }
  139.             if($total > 6000) {
  140.             $sumar = 200;
  141.             }      
  142.                  
  143.             $total2 = $sumar;
  144.            
  145.             $total3 = $total+$total2;
  146.             echo '<center><h2 id="total">Gastos de transporte: '.$total2.' €</h2></center>';
  147.             echo '<center><h2 id="total">Total: '.$total3.' €</h2></center>';
  148.             if($total!=0){
  149.                 }else{
  150.                 echo '<center><h2>No has añadido ningun producto</h2></center>';
  151.             }
  152.                    
  153.             ?>
  154.                 <form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="formulario">
  155.                     <input type="hidden" name="cmd" value="_cart">
  156.                     <input type="hidden" name="upload" value="1">
  157.                     <input type="hidden" name="business" value="[email protected]">
  158.                     <input type="hidden" name="currency_code" value="EUR">
  159.                    
  160.                     <?php
  161.                         for($i=0;$i<count($datos);$i++){
  162.                     ?>
  163.                         <input type="hidden" name="item_name_<?php echo $i+1;?>" value="<?php echo $datos[$i]['Nombre'];?>">
  164.                         <input type="hidden" name="amount_<?php echo $i+1;?>" value="<?php echo $datos[$i]['Precio'];?>">
  165.                         <input  type="hidden" name="quantity_<?php echo $i+1;?>" value="<?php echo $datos[$i]['Cantidad'];?>">
  166.                         <input type="hidden" name="shipping_<?php echo $i+1;?>" value="<?php echo $total2;?>"> 
  167.                         <?php
  168.                         }
  169.                     ?>
  170.                        
  171.  
  172.                 <center>
  173.                 <input type="submit" value="Pago mediante PayPal" class="aceptar" style="width:330px">
  174.                 </center>
  175.             </form>
  176.             <?php
  177.             }
  178.            
  179.         ?>
  180.        
  181.         <br>
  182.         <center>
  183.         <form action="https://www.miweb.com/carrito2/pago2.php"><input type="submit" value="Pago mediante transferencia" class="aceptar" style="width:330px">
  184.         </form>
  185.         </center>  
  186.     </section>
  187. </body>
  188. </html>
  #2 (permalink)  
Antiguo 11/06/2016, 15:00
Avatar de jors_11  
Fecha de Ingreso: marzo-2011
Ubicación: Granollers
Mensajes: 79
Antigüedad: 13 años
Puntos: 2
Respuesta: Problemas al introducir gastos de envío en paypal

Le estoy dando vueltas para que me aparezca en Paypal el mismo precio de transporte que en la tienda online,

Para que me entendáis, si en el carrito de compras hay tres productos diferentes y el precio de transporte por ejemplo son 10€ para el envío de los tres productos, lo que ocurre es que cuando pasan los datos a paypal el precio de transporte son 30 €, es decir que Paypal suma 10€ por cada producto diferente que hay en el carrito.

Ya que no le veo como solucionarlo, y agradecería si alguien sabe como, he pensado en hacer lo siguiente; intentar sacar el numero de productos que hay en el carrito, y dividirlo por el precio del transporte, entonces enviando el resultado de la división a paypal, cuando este haga la suma, saldrá el precio correcto.

Mi pregunta es como puedo sacar el número de productos? no me refiero a la cantidad de cada producto sino cuantos tipos de productos con id diferente hay en el carrito
que código me podría dar esta cifra? Gracias de antemano y saludos,
  #3 (permalink)  
Antiguo 12/06/2016, 02:03
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Problemas al introducir gastos de envío en paypal

Hola jors_11,

Sin analizar tu código muy a fondo porque no me queda tiempo, te diría que pruebes a sacar el campo de shipping del for, ya que al estar dentro, en cada vuelta te añadirá los gastos de envío.

Ya te digo que no he podido analizar el código muy a fondo, si no te sirve, lo siento, pero espero que sí te pueda servir.
  #4 (permalink)  
Antiguo 12/06/2016, 02:59
Avatar de jors_11  
Fecha de Ingreso: marzo-2011
Ubicación: Granollers
Mensajes: 79
Antigüedad: 13 años
Puntos: 2
Respuesta: Problemas al introducir gastos de envío en paypal

No me ha funcionado, si lo saco del for no aparece en el detalle de Paypal, pero se agradece mucho la ayuda, está claro que tiene que ser algún detalle insignificante. he preguntado a Paypal y de momento aun no me han respondido,,,

Sigo pensando que la manera más practica sería sacar el número de productos y dividirlos por el precio de transporte, ¿Como puedo sacar el número de productos que hay en el carrito?
  #5 (permalink)  
Antiguo 12/06/2016, 10:14
Avatar de jors_11  
Fecha de Ingreso: marzo-2011
Ubicación: Granollers
Mensajes: 79
Antigüedad: 13 años
Puntos: 2
Respuesta: Problemas al introducir gastos de envío en paypal

Hola compañeros!!!

Ya lo tengo, al final he hecho una solución a mi manera, y funciona perfectamente aqui dejo el código por si a alguien le pasa lo mismo que a mi, pues con esto se soluciona el problema, quizá es un poco chapuza, pero funciona,

Código PHP:
Ver original
  1. $total4 = ($total2 / $numero=$i);  
  2.             number_format($total4, 2, ',', '.');

he cambiado el total2 de la variable que enviaba a paypal por total4

Gracias y saludos,
Jors
  #6 (permalink)  
Antiguo 12/06/2016, 10:25
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Problemas al introducir gastos de envío en paypal

Intenta poniendo el shipping únicamente al último ítem, para eso debes dejar por fuera del for la línea del shipping y luego de que finalice el ciclo for agregar ese campo hidden al formulario, asegurándose que tenga el mismo índice ($i) del último ítem.

PD: no había actualizado la página y no me había dado cuenta que ya habías solucionado tu problema.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #7 (permalink)  
Antiguo 12/06/2016, 13:02
Avatar de jors_11  
Fecha de Ingreso: marzo-2011
Ubicación: Granollers
Mensajes: 79
Antigüedad: 13 años
Puntos: 2
Respuesta: Problemas al introducir gastos de envío en paypal

Ok, ya lo pruebo, porque el invento que he hecho no acaba de funcionar, paypal calcula lo que quiere, voy a ver si me aclaro, gracias!
  #8 (permalink)  
Antiguo 13/06/2016, 07:26
Avatar de jors_11  
Fecha de Ingreso: marzo-2011
Ubicación: Granollers
Mensajes: 79
Antigüedad: 13 años
Puntos: 2
Respuesta: Problemas al introducir gastos de envío en paypal

He puesto el hidden fuera del for como me habéis dicho y parece que funciona bastante bien si compro uno o dos productos, pero si hago una compra de tres productos, al superar los 100 euros, en paypal no aparecen los gastos de envío... a que puede ser debido eso?


Código PHP:
Ver original
  1. <form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="formulario">
  2.                     <input type="hidden" name="cmd" value="_cart">
  3.                     <input type="hidden" name="upload" value="1">
  4.                     <input type="hidden" name="business" value="[email protected]">
  5.                     <input type="hidden" name="currency_code" value="EUR"> 
  6.                     <?php
  7.                         for($i=0;$i<count($datos);$i++){
  8.                     ?>
  9.                         <input type="hidden" name="item_name_<?php echo $i+1;?>" value="<?php echo $datos[$i]['Nombre'];?>">
  10.                         <input type="hidden" name="amount_<?php echo $i+1;?>" value="<?php echo $datos[$i]['Precio'];?>">
  11.                         <input  type="hidden" name="quantity_<?php echo $i+1;?>" value="<?php echo $datos[$i]['Cantidad'];?>">
  12.                         <input type="hidden" name="shipping_<?php echo $i+1;?>" value="<?php echo $total4;?>"> 
  13.                         <?php
  14.                         }
  15.                     ?>
  16.                     <input type="hidden" name="shipping_<?php echo $i+1;?>" value="<?php echo $total2;?>"> 
  17.                 <center>
  18.                 <input type="submit" value="Pago mediante PayPal" class="aceptar" style="width:330px">
  19.                 </center>
  20.             </form>
  #9 (permalink)  
Antiguo 13/06/2016, 09:46
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Problemas al introducir gastos de envío en paypal

Hola jors_11,

Por si te sirve... ¿puede ser por la configuración de Paypal?
  #10 (permalink)  
Antiguo 13/06/2016, 10:11
Avatar de jors_11  
Fecha de Ingreso: marzo-2011
Ubicación: Granollers
Mensajes: 79
Antigüedad: 13 años
Puntos: 2
Respuesta: Problemas al introducir gastos de envío en paypal

Pues como los otros datos han entrado siempre bien, me imaginaba que estaba todo configurado, pero seguramente hay algo que no vemos, me voy a informar, muchas gracias!!!
  #11 (permalink)  
Antiguo 14/06/2016, 08:18
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Problemas al introducir gastos de envío en paypal

Veo que sigues dejando el costo del envío dentro del for y además fuera del mismo. Deja solamente el que está por fuera del for y en el costo del envío coloca la sumatoria de los envíos por cada producto no sólo el del último sino el total del envío completo.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #12 (permalink)  
Antiguo 16/06/2016, 07:19
Avatar de jors_11  
Fecha de Ingreso: marzo-2011
Ubicación: Granollers
Mensajes: 79
Antigüedad: 13 años
Puntos: 2
Respuesta: Problemas al introducir gastos de envío en paypal

Holaa!!! Pues hice tantas pruebas que al final me deje el código dentro del for, de todas maneras he probado de quitar el shipping del for y no me funciona,
A que te refieres cuando dices; "en el costo del envío coloca la sumatoria de los envíos por cada producto no sólo el del último sino el total del envío completo. " me podrías mostrar un código de ejemplo, de momento el código que más se acerca al precio de transporte generado por $total2 es el siguiente;

Código PHP:
Ver original
  1. <input type="hidden" name="shipping_<?php echo $i+1;?>" value="<?php echo $total2/$numero=$i;?>">

Y colocado dentro del for... El problema de este invento, es que cobra un poco más es decir que si el precio del transporte son 25€, en paypal aparece un coste de 37€ lo bueno es que como mínimo le cobra al cliente unos costes de transp, porque justo ahora google me ha dado el pistoletazo de salida en shopping, me ha costado lo mío, espero que no se den cuenta de este detalle porque sino me suspenderán la cuenta de merchant center otra vez,
Entonces como lo harías? que código pongo fuera del for?
Saludos!
  #13 (permalink)  
Antiguo 16/06/2016, 07:34
Avatar de jors_11  
Fecha de Ingreso: marzo-2011
Ubicación: Granollers
Mensajes: 79
Antigüedad: 13 años
Puntos: 2
Respuesta: Problemas al introducir gastos de envío en paypal

Ahora he recibido este mensaje de la consulta que hice a Paypal, no entiendo muy bien lo que están intentando decir
--------------------------------------------------------------------------------------------------------
En realidad lo mejor es que usted mismo haga el cálculo de envío y pase la variable shipping ,
sin el _1 .... _2 ...

cmd:
_cart
upload:
1
business:
[email protected]
currency_code:
EUR
item_name_1:
Rollo-malla yeso 80gr/m² 5*5mm. Blanca
amount_1:
21.17
quantity_1:
2
shipping_1:
9

Requerira un poco mas de programación..
Deberá contar la cantidad de line items que está pasando, y la cantidad por cada uno de los line items.
------------------------------------------------------------------------------------------------------------
  #14 (permalink)  
Antiguo 18/06/2016, 18:40
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Problemas al introducir gastos de envío en paypal

A eso mismo que te respondieron en Paypal era a lo que me refería. Que sacaras el total del envío y lo dejaras en una sola variable shipping fuera del for.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #15 (permalink)  
Antiguo 19/06/2016, 07:47
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Problemas al introducir gastos de envío en paypal

Y lo mismo que decía yo...
  #16 (permalink)  
Antiguo 20/06/2016, 03:57
Avatar de jors_11  
Fecha de Ingreso: marzo-2011
Ubicación: Granollers
Mensajes: 79
Antigüedad: 13 años
Puntos: 2
Respuesta: Problemas al introducir gastos de envío en paypal

Holaaaa!!! Pues no lo entiendo, me podriais mostrar un ejemplo de como lo puedo hacer?

Si quito el shipping del for no funciona;

Código PHP:
Ver original
  1. <form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="formulario">
  2.                     <input type="hidden" name="cmd" value="_cart">
  3.                     <input type="hidden" name="upload" value="1">
  4.                     <input type="hidden" name="business" value="[email protected]">
  5.                     <input type="hidden" name="currency_code" value="EUR"> 
  6.                     <?php
  7.                         for($i=0;$i<count($datos);$i++){
  8.                     ?>
  9.                         <input type="hidden" name="item_name_<?php echo $i+1;?>" value="<?php echo $datos[$i]['Nombre'];?>">
  10.                         <input type="hidden" name="amount_<?php echo $i+1;?>" value="<?php echo $datos[$i]['Precio'];?>">
  11.                         <input  type="hidden" name="quantity_<?php echo $i+1;?>" value="<?php echo $datos[$i]['Cantidad'];?>">  
  12.                         <?php
  13.                         }
  14.                     ?>
  15.                     <input type="hidden" name="shipping_<?php echo $i+1;?>" value="<?php echo $total2;?>"> 
  16.                 <center>
  17.                 <input type="submit" value="Pago mediante PayPal" class="aceptar" style="width:330px">
  18.                 </center>
  19.             </form>

Etiquetas: formulario, gastos, html, introducir, paypal, select, sql
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 19:38.