Paypal IPN status "autochange"? - php

i have a question about Paypal IPN (or other methods) to buy in a webpage.
Actually I use the IPN "background" method setting a form like this:
<form id="TPVFORM" name='formTpv' method='post' action='https://www.sandbox.paypal.com/cgi-bin/webscr'>
<input type='hidden' name='cmd' value='_xclick'>
<input type='hidden' name='business' value='xxxxxx#gmail.com'>
<input type='hidden' name='item_name' value='MORE THINGS'>
<input type='hidden' name='item_number' value='99.00'>
<input type='hidden' name='amount' value='23.00'>
<input type='hidden' name='page_style' value='paypal'>
<input type='hidden' name='no_shipping' value='1'>
<input type='hidden' name='return' value='http://www.xxxx.com/web/payOrder'>
<input type='hidden' name='cancel_return' value='http://www.xxxx.com/web/payFail'>
<input type='hidden' name='rm' value='2'>
<input type='hidden' name='no_note' value='1'>
<input type='hidden' name='currency_code' value='EUR'>
<input type='hidden' name='cn' value='PP-BuyNowBF'>
<input type='hidden' name='custom' value=''>
<input type='hidden' name='lc' value='es'>
<input type='hidden' name='country' value='ES'>
<input type="submit" />
</form>
And configure in my Paypal account the address of the IPN check .PHP file.
OK, to this point, all work correctly, but one question break me: Paypal have more "payment" status, "completed", "pending", "in revision".
If the pay status its "completed", I verify the other params, and SAVE the order in my DB, but if the status is, for example "pending", i DONT SAVE the order, if Paypal send a notificacion via IPN when the status is "pending", and "later" send other when the status is "completed" I no have problem, but if ONLY send the first status "pending" or "whaiting" or other think, ¿how i can check the payment status? ¿Paypal send one IPN call to my script when the status change?
Im lost..

YES. Paypal will make a call to your IPN script when the payment is Completed, even if at the initial time of purchase, it is Pending or similar.
Question asked in the PayPal Developer Network

Related

How to process Paypal Checkout to paypal app instead of web browser

Okay, so I have a unique issue with Paypal. I have a payment form that is working just fine. But I want something like, when people hit the payment button from their mobile it would take them straightly to their installed Paypal app to process the payment. For desktop, the browser is okay.
Can anybody help me anyhow with this? I don't even know if this is possible without SDK. I am using simple payment form
<?php
$paypalData = getPaypalData($userid);
$paypalurl = 'https://www.paypal.com/cgi-bin/webscr';
$paypalSandboxurl = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
?>
<form action="<?=$paypalurl;?>" method="post" target="_top">
<input type='hidden' name='business' value='<?=$paypalData['paypal_email'];?>'>
<input type='hidden' name='item_name' value='Booking'>
<input type='hidden' name='item_number' value='12345'>
<input type='hidden' name='user_id' value='<?=$userid;?>'>
<input type="hidden" name='amount' id="depositAmountform" value="">
<input type='hidden' name='no_shipping' value='1'>
<input type='hidden' name='currency_code' value='USD'>
<input type='hidden' name='notify_url' value='<?=$notifyURL;?>'>
<input type='hidden' name='cancel_return' value='<?=$cancelReturnURL;?>'>
<input type='hidden' name='return' value='<?=$successReturnURL;?>'>
<input type="hidden" name="cmd" value="_xclick">
<button type="submit" name=" " id="pay_now">PayPal</button>
</form>

Paypal Checkout with extra info

First of all, good job on the community for being so helpfull :D
So i have a webshop, with easy paypal checkout:
echo
"<form action='https://www.paypal.com/cgi-bin/webscr' method='post'>
<input type='hidden' name='business' value='MYMAILYEAH'>
<input type='hidden' name='cmd' value='_xclick'>
<input type='hidden' name='itemdesc' value='".$row['Description']."' />
<input type='hidden' name='item_name' value='".$row['name']."'>
<input type='hidden' name='amount' value='".$pricee."'>
<input type='hidden' name='currency_code' value='EUR'>
<input type='hidden' name='quantity' value='".$_POST['iamount']."'>
<input type='image' name='submit' border='0' src='https://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif' alt='PayPal - The safer, easier way to pay online'>
<input type='hidden' name='address_override' value='1'>
<input type='hidden' name='first_name' value='".$_SESSION['username']."'>
</form>";
At the moment, when someone buys anything it shows only the price and the name of the object, is it also possible to send any extra notes/item description with it? Because i found out that alot of people didnt have their invoice adres set correctly in paypal...
A huge thanks in advance!
EDIT:
I found a part of the problem and solution:
I am getting an error at the CITY input;
<input type='hidden' name='first_name' value='".$_SESSION['username']."'>
<input type='hidden' name='last_name' value='".$_SESSION['username']."'>
<input type='hidden' name='country' value='NL'>
<input type='hidden' name='city' value='Arnhem'>
What the error says is:
There is a problem with the sendingadres. We marked this RED (the white arrow)
Change the adress and continue paying with paypal.
And under that it says:
This webshop told us to use the sendingadres input from the webshop, and theres a problem with this adres, go back to the webshop to change it.
First of all don't use a post variable directly in your code since the user sets it and can therefore easily manipulate the form.
It doesn't seem to work with the simple form. Here you can find all possible variables.
Solution was;
adding
<input type='hidden' name='address_override' value='1'>
<input type='hidden' name='first_name' value='".$_SESSION['username']."'>
<input type='hidden' name='last_name' value='".$_SESSION['username']."'>
<input type='hidden' name='country' value='NL'>
<input type='hidden' name='city' value='Arnhem'>
To override the paypal sendingadres.

Sagepay form submit parameters in PHP

How many parameters I need to pass the in form ULR ,It can interact with sagepay payment gateway. Following parameters are I have passed in the form url but I ma getting the following error:
Error:
Error number:
5068
Error message:
The encryption method is not supported by this protocol version.
I am unable to connect the sagepay server payment.I am completly new about the configuration of sagepay payment.
Some one can please tell me how many parameter I need to pass and What are they are?
How to encrypt the values and then pass the values?
Code:
<form name='sagepay' action='{$pm_sagepay_url}' method='post' onsubmit='this.submit.disabled=true;return true;'>
<input type='hidden' name='VPSProtocol' value='3.00'>
<input type='hidden' name='TxType' value= 'PAYMENT'>
<input type='hidden' name='Vendor' value= 'protxross'>
<input type='hidden' name='Crypt' value= 'TPjs72eMz5qBnaTa'>
<input type='hidden' name='cmd' value='_xclick'>
<input type='hidden' name='business' value='{$this->pm_sagepay_business}'>
<input type='hidden' name='item_name' value='".$order->order_description()."'>
<input type='hidden' name='amount' value='".sprintf("%01.2F", ($order->order_total_price-$order->order_fee))."'>
<input type='hidden' name='handling' value='".($order->order_fee)."'>
<input type='hidden' name='return' value='".$_SHOP->root_secured. 'checkout_accept.php?'.$order->EncodeSecureCode()."'>
<input type='hidden' name='notify_url' value='".$_SHOP->root_secured. 'checkout_notify.php?'.$order->EncodeSecureCode()."&setlang={$_SHOP->lang}'>
<input type='hidden' name='cancel_return' value='".$_SHOP->root_secured. 'checkout_cancel.php?'.$order->EncodeSecureCode()."'>
<input type='hidden' name='currency_code' value='{$_SHOP->organizer_currency}'>
<input type='hidden' name='undefined_quantity' value='0'>
<input type='hidden' name='no_shipping' value='1'>
<input type='hidden' name='no_note' value='1'>
<input type='hidden' name='rm' value='2'>
<input type='hidden' name='invoice' value='{$order->order_id}'>
<div align='right'>
<input type='submit' value='{!pay!}' name='submit2' alt='{!sagepay_pay!}' >
</div>
</form>";
The info added to the form needs to be encrypted you be better off using the guide found here:
http://www.sagepay.co.uk/file/12241/download-document/FORM_Integration_and_Protocol_Guidelines_010814.pdf?token=gMABp5MzTV1BevfFpoTFkrofFWwHXySRM5tzGIdKj3Q
Also this guy has made a basic script for the form i got the main form to send it was the success page i could not get to work but i have now so if you get stuck give me a shout..
https://github.com/tolzhabayev/sagepayForm-php

PayPal response not coming in PHP

I am create my sandbox account for testing. I can perform payment successful but and I am also redirect to my success page but I cannot get TX parameter when success page is loaded.
I am pass return url in my form and I am also setting return URL in my PayPal account and also turn Payment Data Transfer, but I cannot get any parameter when success page is loaded.
BUY.PHP
<?php
$paypal_url='https://www.sandbox.paypal.com/cgi-bin/webscr'; // Test Paypal API URL
$paypal_id='my-id-facilitator#gmail.com'; // Business email ID
?>
<form action='https://www.sandbox.paypal.com/cgi-bin/webscr' method='post' name='form1'>
<input type='hidden' name='business' value='Demo for paypal'>
<input type='hidden' name='cmd' value='_xclick'>
<input type='hidden' name='item_name' value='demo'>
<input type='hidden' name='item_number' value='1'>
<input type='hidden' name='amount' value='1'>
<input type='hidden' name='rm' value='1'>
<input type='hidden' name='no_shipping' value='1'>
<input type='hidden' name='currency_code' value='USD'>
<input type='hidden' name='cancel_return' value='http://my-site.com/cancel.php'>
<input type='hidden' name='return' value='http://my-site.com/success.php'>
<input type="image" src="https://paypal.com/en_US/i/btn/btn_buynowCC_LG.gif" name="submit">
</form>
SUCCESS.PHP
<?php
$item_transaction = $_GET['tx']; // Paypal transaction ID
$item_price = $_GET['amt']; // Paypal received amount
$item_currency = $_GET['cc']; // Paypal received currency type
echo $item_transaction;
echo "<br>".$item_price;
echo "<br>".$item_currency;
?>

Why is Paypal displaying SUCCESS and $_POST variables Paypal's site instead of returning to my return_url

Please help me. I'm at a total loss. After more than 2 days of Googling everything I can think of, I still have no answers. This DID work in the Sandbox. My code for sending the tx and token to Paypal.
<form name='verification' action='https://www.paypal.com/cgi-bin/webscr' method='post'>
<input type='hidden' name='at' value='$atoken' />
<input type='hidden' name='tx' value='$tx' />
<input type='hidden' name='rm' value='2' />
<input type='hidden' name='cmd' value='_notify-synch' />");
print("<input type='hidden' name='return' value='$returnUrl' />");
print("<input type='submit' name='submit' value='PDT'>");
print("</form>");
The variable for return url is return_url not return. It should also be an account in your Paypal account.
your amount and tax variables are not being parsed
<input type='hidden' name='at' value='<?=$atoken?>' />
<input type='hidden' name='tx' value='<?=$tx?>' />

Categories