昨日もこの質問がありましたが、サンドボックスについてですが、サンドボックスにはバグがあり、ライブペイパルでテストする必要があると誰かが提案したためです。
条件はこちら --
私はいくつかのデータを収集しているDrupalフォームを持っています。そこからクエリを作成し、次のようなURLでpaypalに送信します-
$form_state['redirect'] = 'https://www.paypal.com/cgi-bin/webscr?' .$query;
クエリ変数の結果がキャリーされる場所 -
cmd=_xclick&business=ctaep.austin%40gmail.com&page_style=Primary&bn=PP-DonationsBF&item_name=Membership¤cy_code=USD&no_shipping=1&tax=0&lc=US&rm=1&return=http%3A%2F%2Fctaep-test.kr001.us%2F%3Fq%3Dpaypal%2Fpayment&cancel_return=http%3A%2F%2Fctaep-test.kr001.us%2F%3Fq%3Duser%2Fregister&uname=Raj_vm&email=rajeevkr.dei%40gmail.com&user_type=General&first_name=Rajeev&last_name=Kumar&comp_name=&address1=sector+27&address2=&city=noida&state=ca&zip=201301&phone=9650361380&mobile=&fax=&amount=0.01&item_number=1
フォームに入力して送信した後、ペイパルに転送され、そこで支払い、リターンボタンを押す必要がありました(クエリでリターンパスも送信しましたが)、
IPN を処理するために呼び出される関数の状態は常に INVALID 状態になるため、状態は INVALID です。これがコードです--
function paypal_payment_paypal_ipn_callback(){
header("Content-type: text/html");
header("Expires: Wed, 29 Jan 1975 04:15:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
watchdog('paypal', '1');
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
$header = '';
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Host: www.paypal.com\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
if (!$fp) {
watchdog('paypal', 'HTTP error');
}
else
{
fputs ($fp, $header . $req);
watchdog('paypal-fp-else-', $header . $req);
dpm($_POST['uname']);
dpm($_POST['user_type']);
while (!feof($fp)) {
watchdog('paypal', '3');
watchdog('pay_status',$res);
if (strcmp ($res, "VERIFIED") == 0) {
watchdog("verified");
watchdog('paypal', '4');
//Information about you:
$receiver_email = $_POST['business'];
//Information about the transaction:
$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'];
$user_name = $_POST['uname'];
$user_email = $_POST['email'];
$user_type = $_POST['user_type'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$company_name = $_POST['comp_name'];
$address_address_line_1 = $_POST['address1'];
$address_address_line_2 = $_POST['address2'];
$address_city = $_POST['city'];
$address_state = $_POST['state'];
$address_zip = $_POST['zip'];
$user_phone = $_POST['phone'];
$user_mobile = $_POST['mobile'];
$user_fax = $_POST['fax'];
// process payment
$password = user_password(8);
$fields = array(
'name' => $user_name,
'mail' => $user_email,
'pass' => $password,
'status' => 1,
'init' => $user_email,
'roles' => array(
DRUPAL_AUTHENTICATED_RID => $user_type,),
'field_first_name' => array(
LANGUAGE_NONE => array(
array('value' => $first_name))),
'field_last_name' => array(
LANGUAGE_NONE => array(
array('value' => $last_name))),
'field_company_name' => array(
LANGUAGE_NONE => array(
array('value' => $company_name))),
'field_address_line_1' => array(
LANGUAGE_NONE => array(
array('value' => $address_address_line_1))),
'field_address_line_2' => array(
LANGUAGE_NONE => array(
array('value' => $address_address_line_2))),
'field_user_city' => array(
LANGUAGE_NONE => array(
array('value' => $address_city))),
'field_user_state' => array(
LANGUAGE_NONE => array(
array('value' => $address_state))),
'field_user_zip' => array(
LANGUAGE_NONE => array(
array('value' => $address_zip))),
'field_phone_number_' => array(
LANGUAGE_NONE => array(
array('value' => $user_phone))),
'field_mobile_number_' => array(
LANGUAGE_NONE => array(
array('value' => $user_mobile))),
'field_fax_number_' => array(
LANGUAGE_NONE => array(
array('value' => $user_fax))),
);
$account = user_save('', $fields);
watchdog("user registered");
}
elseif (stripos($res, "INVALID") == 0) {
watchdog('Res value--', stripos($res, "INVALID"));
watchdog('paypal', 'INVALID');
}
else{
watchdog("Not Verified nor Invalid");
}
}
fclose ($fp);
}
return 'Transaction Complete';
}
ステータスがINVALIDであっても、そこに送信したデータを取得する必要があると信じていましたが、取得しようとすると**$_POST**
(else部分のwhileループの前に表示されるように)、「未定義」というエラーが発生します索引"。
編集 - -
$_POST 変数をダンプしようとしましたが、14 文字の配列でリターン パスを返すだけです。
どうすればいいのかわからない..
これについて誰かから助けを得ることができますか?