Ciao, ho effettuato dei test su sandbox paypal in modalità di simulazione per configurare varie procedure di pagamento con relativa trasmissione e registrazione di dati sul mio sito.
Non ho mai incontrato alcun problema, tutto, funziona alla grande (tuttora), ma solo in modalità test!!! Perché su Paypal, con soldi reali, perdo tutte le variabili che devono essere inviate a pagamento avvenuto!
Ed è una bella rogna questa, perché ciò che funziona con la sandbox non funziona con paypal. Non posso di certo pagare ad ogni tentativo commissioni di paypal su transazioni anche se di piccola entità per capire come configurarmi!!!
Questo è il bottone:
Codice PHP:
<form class="paypal" action="shop/payments.php" method="post" id="paypal_form" target="_blank">
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="rm" value="2" />
<input type="hidden" name="currency_code" value="EUR" />
<input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynow_LG.gif:NonHostedGuest" />
<input type="hidden" name="item_name" value="$prodotto" />
<input type="hidden" name="amount" value="$price" />
<input type="hidden" name="custom" value="$sigla" />
<input type="image" src="shop/PPButton.png" width="530" height="164" border="0"
name="submit" alt="PayPal è il metodo rapido e sicuro per pagare e farsi pagare online.">
</form>
Questo è la pagina shop/payments.php
Codice PHP:
// PayPal settings
$paypal_email = 'info@MioSito.com';
$return_url = 'http://MioSito.com/shop/payment-successful.php';
$cancel_url = 'http://MioSito.com/shop/payment-cancelled.html';
$notify_url = 'http://MioSito.com/shop/payments.php';
// Check if paypal request or response
if (!isset($_POST["txn_id"]) && !isset($_POST["txn_type"])){
$querystring = '';
// Firstly Append paypal account to querystring
$querystring .= "?business=".urlencode($paypal_email)."&";
//The item name and amount can be brought in dynamically by querying the $_POST['item_number'] variable.
$querystring .= "item_name=".urlencode($item_name)."&";
$querystring .= "amount=".urlencode($item_amount)."&";
//loop for posted values and append to querystring
foreach($_POST as $key => $value){
$value = urlencode(stripslashes($value));
$querystring .= "$key=$value&";
}
// Append paypal return addresses
$querystring .= "return=".urlencode(stripslashes($return_url))."&";
$querystring .= "cancel_return=".urlencode(stripslashes($cancel_url))."&";
header('location:https://www.paypal.com/cgi-bin/webscr'.$querystring);
exit();
}
Qui la pagina di atterraggio a pagamento effettuato con successo.
Come potete vedere recupero solo le variabile in post
per scriverle su db
Codice PHP:
$txn_id = filter_var($_POST['txn_id'], FILTER_SANITIZE_STRING);
$name_prodotto = $_POST['item_name'];
$payment_currency = $_POST['mc_currency'];
$payment_date = $_POST['payment_date'];
$receiver_email = filter_var($_POST['receiver_email'], FILTER_SANITIZE_EMAIL);
$payer_email = filter_var($_POST['payer_email'], FILTER_SANITIZE_EMAIL);
$payment_status = $_POST['payment_status'];
echo "txn_id: $txn_id<br>
name_prodotto: $name_prodotto<br>
payment_currency: $payment_currency<br>
payment_date: $payment_date<br>
receiver_email: $receiver_email<br>
payer_email: $payer_email<br>
payment_status: $payment_status<br>";
In modalità simulazione tutto lavora alla grande su paypal no. E mo'!??!
Che faccio?? Soluzioni, consigli?
Grazie!