How to integrate 3D (PSD2) secure payment authentication with PayPal in PHP - php

I have a PayPal payment gateway like this,
<form action="https://secure.paypal.com/uk/cgi-bin/webscr" method="post" name="paypal" id="paypal">
<!-- Prepopulate the PayPal checkout page with customer details, -->
<input type="hidden" name="first_name" value="<?php echo Firstname?>">
<input type="hidden" name="last_name" value="<?php echo Lastname?>">
<input type="hidden" name="email" value="<?php echo Email?>">
<input type="hidden" name="address1" value="<?php echo Address?>">
<input type="hidden" name="address2" value="<?php echo Address2?>">
<input type="hidden" name="city" value="<?php echo City?>">
<input type="hidden" name="zip" value="<?php echo Postcode?>">
<input type="hidden" name="day_phone_a" value="">
<input type="hidden" name="day_phone_b" value="<?php echo Mobile?>">
<!-- We don't need to use _ext-enter anymore to prepopulate pages -->
<!-- cmd = _xclick will automatically pre populate pages -->
<!-- More information: https://www.x.com/docs/DOC-1332 -->
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="paypal#email.com" />
<input type="hidden" name="cbt" value="Return to Your Business Name" />
<input type="hidden" name="currency_code" value="GBP" />
<!-- Allow the customer to enter the desired quantity -->
<input type="hidden" name="quantity" value="1" />
<input type="hidden" name="item_name" value="Name of Item" />
<!-- Custom value you want to send and process back in the IPN -->
<input type="hidden" name="custom" value="<?php echo session_id().?>" />
<input type="hidden" name="shipping" value="<?php echo $shipping_price; ?>" />
<input type="hidden" name="invoice" value="<?php echo $invoice_id ?>" />
<input type="hidden" name="amount" value="<?php echo $total_order_price; ?>" />
<input type="hidden" name="return" value="http://<?php echo $_SERVER['SERVER_NAME']?>/shop/paypal/thankyou"/>
<input type="hidden" name="cancel_return" value="http://<?php echo $_SERVER['SERVER_NAME']?>/shop/paypal/cancelled" />
<!-- Where to send the PayPal IPN to. -->
<input type="hidden" name="notify_url" value="http://<?php echo $_SERVER['SERVER_NAME']?>/shop/paypal/process" />
</form>
Can I upgrade this to PSD2?
https://www.paypal.com/uk/webapps/mpp/psd2-new
If so, how do I integrate it?

Related

PayPal recurring payment code integration

I am new in PayPal integration. I need monthly PayPal recurring payment for users. I already have instant payment working with this method:
<form method="post" action="https://www.paypal.com/cgi-bin/webscr" name="form_paypal" id="paypal_form">
<input type="hidden" name="amount" value="<?php echo $amount; ?>" />
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="no_note" value="1" />
<input type="hidden" name="lc" value="USA" />
<input type="hidden" name="currency_code" value="USD" />
<input type="hidden" name="business" value="test#gmail.com">
<input type="hidden" name="custom" value='<?php echo $custom;?>' />
<input type="hidden" name="first_name" value= "Anonymous" />
<input type="hidden" name="last_name" value="User" />
<input type="hidden" name="payer_email" value="customer#example.com" />
<input type="hidden" name="item_number" value="123" / >
<input type="hidden" name="item_name" value="test.co Services" / >
<input type="hidden" name="notify_url" value="http://test.co/pg_return.php" / >
<input type="submit" value="Pay" name="pay" id="paypal_submit">
</form>
What do I need to change to integrate recurring payment in my panel? Please help me! If needed I will provide more info!
Based on your example, here's how to set up subscription/recurring payment using the same method:
<form method="post" action="https://www.paypal.com/cgi-bin/webscr" name="form_paypal" id="paypal_form">
<input type="hidden" name="cmd" value="_xclick-subscriptions" />
<input type="hidden" name="business" value="test#gmail.com">
<input type="hidden" name="a3" value="<?php echo $amount; ?>" />
<input type="hidden" name="t3" value="M" >
<input type="hidden" name="p3" value="1" >
<input type="hidden" name="src" value="1" >
<input type="hidden" name="no_note" value="1" />
<input type="hidden" name="lc" value="US" />
<input type="hidden" name="currency_code" value="USD" />
<input type="hidden" name="custom" value="<?php echo $custom;?>"/>
<input type="hidden" name="first_name" value= "Anonymous" />
<input type="hidden" name="last_name" value="User" />
<input type="hidden" name="item_number" value="123" / >
<input type="hidden" name="item_name" value="test.co Services" / >
<input type="hidden" name="notify_url" value="http://test.co/pg_return.php" / >
<input type="submit" value="Pay" name="pay" id="paypal_submit">
</form>
Note that I have made several changes. "a3" denotes the amount of subscription and "p3" indicates the unit of duration (that is, M = monthly, D = daily and so on). To make the subscription recurs indefinitely, set "src" and "p3" to 1.
For reference, you can read on PayPal documentation link here: https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/#id08A6HI00JQU

How can i use paypal api for transfer money to bank account in php?

I have no any idea about it. I serched my sites but i can't find solutions.
My requirement is that, my query fetches bank account number from database,
For example, there r one record given by my query then i want to send money to this bank account.
what should i do??? Which api use for me??
My code is given below:
$queryOperator = "SELECT * FROM operatortransaction AS ot LEFT JOIN paymenttransaction AS pt ON
ot.OperatorID != pt.OperatorID WHERE ot.IsPaymentRequest = 1 AND ot.Amount != pt.Amount ";
$arrOperator = $obj->select($queryOperator);
$count = 0;
if(!empty($dataOperator))
{
foreach($arrOperator as $operator)
{
if($arrOperator[$count]['Amount'] >= $arrOperator[$count]['RequestAmount'])
{
$queryDetail = "SELECT * FROM operatorprofile WHERE UserID = '$arrOperator[$count]['OperatorID']' ";
$Data = $obj->select($queryDetail);
// i want to put api code here......//
}
}
}
Thanks.
Hi you can try to use PayPal Xclick
<form action="https://secure.paypal.com/uk/cgi-bin/webscr" method="post" name="paypal" id="paypal">
<!-- Pre Populate the Paypal Checkout Page With Customer Details, -->
<input type="hidden" name="first_name" value="<?php echo Firstname?>">
<input type="hidden" name="last_name" value="<?php echo Lastname?>">
<input type="hidden" name="email" value="<?php echo Email?>">
<input type="hidden" name="address1" value="<?php echo Address?>">
<input type="hidden" name="address2" value="<?php echo Address2?>">
<input type="hidden" name="city" value="<?php echo City?>">
<input type="hidden" name="zip" value="<?php echo Postcode?>">
<input type="hidden" name="day_phone_a" value="">
<input type="hidden" name="day_phone_b" value="<?php echo Mobile?>">
<!-- We dont need to use _ext-enter anymore to prepopulate pages -->
<!-- cmd = _xclick will automatically pre populate pages -->
<!-- More Info: https://www.x.com/docs/DOC-1332 -->
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="paypal#email.com" />
<input type="hidden" name="cbt" value="Return to Your Business Name" />
<input type="hidden" name="currency_code" value="GBP" />
<!-- Allow customer to enter desired quantity -->
<input type="hidden" name="quantity" value="1" />
<input type="hidden" name="item_name" value="Name of Item" />
<!-- Custom Value You want to send and process back in the IPN -->
<input type="hidden" name="custom" value="<?php echo session_id().?>" />
<input type="hidden" name="shipping" value="<?php echo $shipping_price; ?>" />
<input type="hidden" name="invoice" value="<?php echo $invoice_id ?>" />
<input type="hidden" name="amount" value="<?php echo $total_order_price; ?>" />
<input type="hidden" name="return" value="http://<?php echo $_SERVER['SERVER_NAME']?>/shop/paypal/thankyou"/>
<input type="hidden" name="cancel_return" value="http://<?php echo $_SERVER['SERVER_NAME']?>/shop/paypal/cancelled" />
<!-- Where to send the paypal IPN to. -->
<input type="hidden" name="notify_url" value="http://<?php echo $_SERVER['SERVER_NAME']?>/shop/paypal/process" />
NOTICE
Do remember to make a very strong VALIDATION!!!

Passing Hidden Form Data in a session post

I have to submit this form to a payment processing gateway on my PHP page. All the credit card payment information will be taken on the next screen but the gateway needs the "HostedKey" and "Gateway_ID" need to be invisible from public code view as well.
<form action="nextpage.php" method ="POST" target="_blank">
Patient Account Number:
<input type="text" name="CustRefID" id="CustRefID">
<input type="hidden" name="HostedKey" id="HostedKey" value="ZZZZZZ" />
<input type="hidden" name="Gateway_ID" id="Gateway_ID" value="XXXXXX" />
<input type="hidden" name="IndustryCode" id="IndustryCode" value="2" />
<input type="hidden" name="Amount" id="Amount" value="" />
<input type="hidden" name="RecurringType" id="RecurringType" value="N" />
<input type="hidden" name="RecurringAmount" id="RecurringAmount" value="" />
<input type="hidden" name="CURL" id="CURL" value="back to my site" />
<input type="hidden" name="AVSRequired" id="AVSRequired" value="Y"/>
<input type="hidden" name="CVV2Required" id="CVV2Required"value="Y"/>
<input type="hidden" name="EmailRequired" id="EmailRequired" value="Y"/>
<input type="hidden" name="PostRspMsg" id="PostRspMsg" value="Y"/>
<input type="hidden" name="SECCode" id="SECCode" value="1" />
<input type="hidden" name="Descriptor" id="Descriptor" value="Online" />
<input type="Submit" name="Submit" id="Submit" value="Pay Online Now" />
</form>
I tried something like this. It hid the Key and ID but the form did not pass on the hidden session variables.
<strong>Patient Account Number: </strong>
<form action="nextpage.php" method"post">
<input type="text" name="CustRefID"/>
<input type="hidden" name="HostedKey" id="HostedKey" value="" />
<input type="hidden" name="Gateway_ID" value="<?php ($Gateway_ID); ?>" />
<input type="hidden" name="HostedKey" value="<?php ($HostedKey); ?>" />
<input type="submit" name="Submit" value="Submit" />
</form>
<?php
if (isset($_POST['Submit']))
{ $_session['CustRefID'] = $_POST['CustRefID'];}
{ $_session['HostedKey'] = $_POST['xxxxxx'];}
{ $_session['Gateway_ID'] = "zzzzzz";}
?>
<strong><? echo $_session['CustRefID'];?></strong>
Any help would be great. My programmer is out sick...
You have repetition in your HTML. Change it to this:
<input type="hidden" name="Gateway_ID" value="<?php ($Gateway_ID); ?>" />
<input type="hidden" name="HostedKey" value="<?php ($HostedKey); ?>" />
2. You didn't specify what POST info should go in the SESSION. Change it to this:
{
$_SESSION['CustRefID'] = $_POST['CustRefID'];
$_SESSION['HostedKey'] = $_POST['HostedKey'];
$_SESSION['Gateway_ID'] = $_POST['HostedKey'];
}

custom parameter not getting returned in PAYPAL recursive transaction

Am going to implement the paypal in the form of user subscription...
Bellow code runs fine...
Transaction also works fine...
But am not getting back the 'custom parameters' which i have send(as shown in following code of form)...
<form name="_xclick" id="_xclick" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<!-- Identify your business so that you can collect the payments. -->
<input type="hidden" name="business" value="xxx#xxx.com">
<!-- Specify a Subscribe button. -->
<input type="hidden" name="cmd" value="_xclick-subscriptions">
<!-- Identify the subscription. -->
<input type="hidden" name="item_name" value="<?php echo $description; ?>">
<!-- Set the terms of the regular subscription. -->
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="a3" value="<?php echo $amount; ?>">
<input type="hidden" name="p3" value="1">
<input type="hidden" name="t3" value="<?php echo $trial_period; ?>">
<!-- Set recurring payments until canceled. -->
<input type="hidden" name="src" value="1">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="notify_url" value="<?php echo $return_domain;?>">
<input type="hidden" name="cancel_return" value="<?php echo $cancel_return;?>">
<input type="hidden" name="return" id="return" value="<?php echo $return_domain;?>" />
<input type="hidden" name="custom" value="<?php echo $serialized_cust_par;?>" />
</form>

Paypal IPN not responding at all

Anybody having this problem? Suddenly paypal is not returning POST data to the notify_url. Array is completely empty and it happens when payment is made through new paypal checkout system.
Below is the final page after payment is made. When I click continue booking, it should have redirected to notify_url with POST data for validation and stuff but data is an empty array.
My request code is listed below. Can anybody please take a look at it and tell me whether some variable is missing or i am doing something wrong?
<form method="post" name="paypal_form" action="http://www.sandbox.paypal.com/cgi-bin/webscr">
<input type="hidden" name="business" value="ayaz.a_1286483626_biz#gmail.com" />
<input type="hidden" name="cmd" value="_xclick" />
<!-- the next three need to be created -->
<input type="hidden" name="return" value="https://system1.smanager.net/SM/lib/booking_system/response.php" />
<input type="hidden" name="cancel_return" value="https://system1.smanager.net/SM/lib/booking_system/paypal_ipn.php?cancelled=true" />
<input type="hidden" name="notify_url" value="https://system1.smanager.net/SM/lib/booking_system/response.php" />
<input type="hidden" name="rm" value="2" />
<input type="hidden" name="currency_code" value="USD" />
<input type="hidden" name="lc" value="US" />
<input type="hidden" name="bn" value="toolkit-php" />
<input type="hidden" name="cbt" value="Continue Back to Booking System" />
<!-- Payment Page Information -->
<input type="hidden" name="no_shipping" value="" />
<input type="hidden" name="no_note" value="1" />
<input type="hidden" name="cn" value="Comments" />
<input type="hidden" name="cs" value="" />
<!-- Product Information -->
<input type="hidden" name="item_name" value="TestProduct" />
<input type="hidden" name="amount" value="10.23" />
<input type="hidden" name="quantity" value="1" />
<input type="hidden" name="item_number" value="1234" />
<input type="hidden" name="undefined_quantity" value="" />
<input type="hidden" name="on0" value="" />
<input type="hidden" name="os0" value="" />
<input type="hidden" name="on1" value="" />
<input type="hidden" name="os1" value="" />
<!-- Shipping and Misc Information -->
<input type="hidden" name="shipping" value="0.0" />
<input type="hidden" name="shipping2" value="" />
<input type="hidden" name="handling" value="" />
<input type="hidden" name="tax" value="6" />
<input type="hidden" name="custom" value="somedata" />
<input type="hidden" name="invoice" value="" />
<!-- Customer Information -->
<input type="hidden" name="first_name" value="ayaz" />
<input type="hidden" name="last_name" value="alavi" />
<input type="hidden" name="address1" value="Address" />
<input type="hidden" name="address2" value="" />
<input type="hidden" name="city" value="" />
<input type="hidden" name="state" value="abc" />
<input type="hidden" name="zip" value="" />
<input type="hidden" name="email" value="ayaz.a_1286483582_per#gmail.com" />
<input type="hidden" name="night_phone_a" value="" />
<input type="hidden" name="night_phone_b" value="" />
<input type="hidden" name="night_phone_c" value="" />
</form>
</body>
Thanks.
I have also face same problem.
Please set the following settings in Your business account.
In Website Payment Preferences
=> Auto Return: On
=> Set Return URL
=> Payment Data Transfer: On.
Please try this, this may help you.
All the best.
Kanji

Categories