안녕하세요. 저는 응답기를 추가하는 페이팔 플러그인을 만들고 있습니다. 제품을 추가하십시오.이메일은 sandox ipn을 사용하여 페이팔로 구매자에게 보내지 않습니다.
테스트를 위해 샌드 박스에서 작업 중입니다.
응답자는 제품 응답자를 추가하는 것보다 응답합니다. 프론트 엔드에서 "Buy"버튼을 클릭하면 sandbox.paypal로 간다. 여기서 나는 지불 절차를 완료하고 돈을받는 가짜 상인 계정에서 이메일을 완료 한 구매자에게 보낸다는 것을 알지만 이메일은 그렇지 않다. 내가 코드를 10 번 읽으면 보내지 만 나는 문제가 없다.
페이팔 양식 : 여기
<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>
그리고 내 ipn_sandbox.php 코드 :
<?php
// STEP 1: Read POST data
// reading posted data from directly from $_POST causes serialization
// issues with array data in POST
// reading raw POST data from input stream instead.
$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]);
}
// read the post from PayPal system and add 'cmd'
$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";
}
// STEP 2: Post IPN data back to paypal to validate
$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 to buyer
mail($payer_email , $subject, $message, $headers);
}
}
?>
나는 또한 mail()
제외 wp_mail()
를 사용하지만 아무것도 일어나지는
여기 내 코드입니다.
누구든지 문제를 해결할 수 있습니다.
로컬 컴퓨터 또는 온라인 서버에서 테스트 중이십니까? 'error_reporting'을 시도해보십시오. 문제를 디버그하는 데 도움이됩니다. –
@SyedQarib sahib 온라인 서버를 사용하고 있습니다. – deemi
오류보고를 시도 했습니까? 로그에서 찾을 수있는 것이 있습니까? –