Hi, I am working on a paypal plugin that adds a responder, adds products.
I am working on a sandbox for testing.
I answer, not add related defendants. On the front side, when I click the Buy button, it goes to sandbox.paypal, and here I complete the payment procedure, and on my fictitious trading account I accept payments and know that the letter was sent to the buyer upon completion, but I wonβt send the letter read the code 10 times, but I do not understand.
Here is my code:
Paypal Form:
<form name="_xclick" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="'.$paypalID.'">
<input type="hidden" name="return" value="'.$return_url.'">
<input type="hidden" name="currency_code" value="'.$currency.'">
<input type="hidden" name="item_name" value="'.$product_name.'">
<input type="hidden" name="amount" id="p'.$product_id.'" value="'.$product_price.'">
<input type="hidden" name="custom" value="'.$responderID.'">
<input name="notify_url" value="'.plugin_dir_url( __FILE__ ).'ipn_sandbox.php" type="hidden">
<input type="image" src="'.$upload_image.'" border="0" name="submit" alt="Make payments with PayPal - its fast, free and secure!">
</form>
And here is my ipn_sandbox.php code:
<?php
$raw_post_data = file_get_contents('php://input');
$raw_post_array = explode('&', $raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) {
$keyval = explode ('=', $keyval);
if (count($keyval) == 2)
$myPost[$keyval[0]] = urldecode($keyval[1]);
}
$req = 'cmd=_notify-validate';
if(function_exists('get_magic_quotes_gpc')) {
$get_magic_quotes_exists = true;
}
foreach ($myPost as $key => $value) {
if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
$value = urlencode(stripslashes($value));
} else {
$value = urlencode($value);
}
$req .= "&$key=$value";
}
$ch = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
if( !($res = curl_exec($ch)) ) {
curl_close($ch);
exit;
}
curl_close($ch);
$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-config.php';
include_once $path . '/wp-load.php';
include_once $path . '/wp-includes/wp-db.php';
include_once $path . '/wp-includes/pluggable.php';
global $wpdb;
if (strcmp ($res, "VERIFIED") == 0) {
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
$responderID = $_POST['custom'];
$name = $_POST['first_name'];
$payment_status = $_POST['payment_status'];
$site_url = get_bloginfo('wpurl');
$table_resp = $wpdb->prefix.'paypal_responders';
$responder_to_use = $wpdb->get_row("SELECT * FROM $table_resp WHERE id ='$responderID'");
$subject = $responder_to_use->subject;
$from = $responder_to_use->from_email;
$attachment = $responder_to_use->attachment;
$att_secure = $responder_to_use->att_secure;
$message .= $responder_to_use->message_body;
$message .= '<br /><br />
<a title="Click here to download Attachment" href="'.plugin_dir_url(__FILE__).'responders/download.php?filename='.$att_secure.'" width="150" height="150" target="_blank">Click here to download Attachment</a>';
if($message){
$message = str_replace('[item_name]',$item_name,$message);
$message = str_replace('[txn_id]',$txn_id,$message);
$message = str_replace(' [mc_gross]',$payment_amount,$message);
$message = str_replace('[mc_currency]',$payment_currency,$message);
$message = str_replace('[receiver_email]',$receiver_email,$message);
$message = str_replace('[payer_email]',$payer_email,$message);
$message = str_replace('[name]',$name,$message);
$message = str_replace('[site_url]',$site_url,$message);
$message = str_replace('[payment_status]',$payment_status,$message);
}else{
$message = 'Dear '.$name.',
Thank you for your purchase from '.$site_url.'. The details of your purchase are below.
Transaction ID: '.$txn_id.'
Item Name: '.$item_name.'
Payment Amount: '.$payment_amount.'
Payment Amount: '.$payment_status.'
Paid to: '.$receiver_email.'
Thanks and Enjoy!
~Enigma Digital <br />
<br />
<a title="Click here to download Attachment" href="'.plugin_dir_url(__FILE__).'responders/download.php?filename='.$att_secure.'" width="150" height="150" target="_blank">Click here to download Attachment</a>';
}
$table = $wpdb->prefix . "paypal_transactions";
$txn_id_check = $wpdb->get_results("SELECT * FROM $table WHERE txn_id ='$txn_id'");
if(!$txn_id_check){
$data = array(
'txn_id' => $txn_id,
'product_name' => $item_name,
'product_price' => $payment_amount,
'payer_email' => $payer_email,
);
$wpdb->insert($table,$data) or die(mysql_error());
$num = md5(time());
$headers .= 'From: ' .$from. "\r\n" .'Reply-To: ' .$from . "\r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= "Content-Type: text/html; charset=iso-8859-1 ";
$headers .= "--".$num."--";
mail( $payer_email , $subject, $message, $headers );
}
}
?>
I also use wp_mail()except mail(), but nothing happens.
Please help someone help what the problem is.