4
私はCodeigniter paypal_lib
でカートのチェックアウトをテストしています。私がサンドボックスメッセージから得た結果: "VERIFIED"と関数 "validate_ipn"はtrueを返します。しかし、私がここで直面している問題は、時々、同じデータをpaypalから含むログファイルと注文データです。1つのトランザクションで複数のIPNメッセージ(同じコンテンツ)を受信する方法を解決するには
は私のIPNの検証です:
function validate_ipn(){
$url_parsed = parse_url($this->paypal_url);
$post_string="cmd=_notify-validate";
if ($this->CI->input->post())
{
foreach ($this->CI->input->post() as $field=>$value)
{
$this->ipn_data[$field] = $value;
$post_string .= '&' . $field.'='.urlencode(stripslashes($value));
}
}
//$fp = fsockopen($url_parsed['host'],"80",$err_num,$err_str,30);
$fp = fsockopen('ssl://www.sandbox.paypal.com', 443, $err_num, $err_str, 30);
if(!$fp)
{
$this->last_error = "fsockopen error no. $errnum: $errstr";
$this->log_ipn_results(false);
return false;
}
else
{
fputs($fp, "POST $url_parsed[path] HTTP/1.1\r\n");
fputs($fp, "Host: $url_parsed[host]\r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: ".strlen($post_string)."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $post_string . "\r\n\r\n");
// loop through the response from the server and append to variable
while(!feof($fp))
$this->ipn_response .= fgets($fp, 1024);
fclose($fp); // close connection
}
if (eregi("VERIFIED",$this->ipn_response))
{
// Valid IPN transaction.
$this->log_ipn_results(true);
return true;
}
else
{
$this->last_error = 'IPN Validation Failed.';
$this->log_ipn_results(false);
return false;
}
}
これは私が私のログに得たものである(別の何もない)。だから、このような多くのメッセージ:
[04/24/2012 9:31 AM] - SUCCESS!
IPN POST Vars from Paypal:
mc_gross=11.00, protection_eligibility=Eligible, address_status=confirmed
, item_number1=3, tax=0.00, item_number2=5, payer_id=T4WYEY49NUK4Y, item_number3=6, address_street=1 Maire-Victorin, payment_date=00:28:18 Apr 24,
2012 PDT, payment_status=Pending, charset=windows-1252, address_zip=M5A 1E1, mc_shipping=0.00, mc_handling=0.00, first_name=Test, address_country_code=CA,
address_name=Test User, notify_version=3.4, custom=292aaf2e76b586a80c20f13c5b1d6997, payer_status=verified, [email protected],
address_country=Canada, num_cart_items=3, mc_handling1=0.00, mc_handling2=0.00, mc_handling3=0.00, address_city=Toronto, verify_sign=AQwZI3e5UUeRN1fFRRAZwba0SCKvAK5Jh7SdLhAZdWaitG4t3SzIzk6D,
[email protected], mc_shipping1=0.00, mc_shipping2=0.00, mc_shipping3=0.00, tax1=0.00, tax2=0.00, tax3=0.00, txn_id=19366377KU1661939,
payment_type=instant, last_name=User, address_state=Ontario, item_name1=Test 003 Product, [email protected], item_name2=Test 005 Product,
item_name3=Test 006 Product, quantity1=1, quantity2=1, receiver_id=C7F8469MV6QVN, pending_reason=multi_currency, quantity3=1, txn_type=cart, mc_gross_1=2.00, mc_currency=EUR,
mc_gross_2=4.00, mc_gross_3=5.00, residence_country=CA, test_ipn=1, transaction_subject=292aaf2e76b586a80c20f13c5b1d6997, payment_gross=, ipn_track_id=95d4aa9eb8b34,
IPN Response from Paypal Server:
HTTP/1.1 200 OK
8
VERIFIED
0
[04/24/2012 9:33 AM] - SUCCESS!
IPN POST Vars from Paypal:
mc_gross=11.00, protection_eligibility=Eligible, address_status=confirmed
, item_number1=3, tax=0.00, item_number2=5, payer_id=T4WYEY49NUK4Y, item_number3=6, address_street=1 Maire-Victorin, payment_date=00:28:18 Apr 24,
2012 PDT, payment_status=Pending, charset=windows-1252, address_zip=M5A 1E1, mc_shipping=0.00, mc_handling=0.00, first_name=Test, address_country_code=CA,
address_name=Test User, notify_version=3.4, custom=292aaf2e76b586a80c20f13c5b1d6997, payer_status=verified, [email protected],
address_country=Canada, num_cart_items=3, mc_handling1=0.00, mc_handling2=0.00, mc_handling3=0.00, address_city=Toronto, verify_sign=AQwZI3e5UUeRN1fFRRAZwba0SCKvAK5Jh7SdLhAZdWaitG4t3SzIzk6D,
[email protected], mc_shipping1=0.00, mc_shipping2=0.00, mc_shipping3=0.00, tax1=0.00, tax2=0.00, tax3=0.00, txn_id=19366377KU1661939,
payment_type=instant, last_name=User, address_state=Ontario, item_name1=Test 003 Product, [email protected], item_name2=Test 005 Product,
item_name3=Test 006 Product, quantity1=1, quantity2=1, receiver_id=C7F8469MV6QVN, pending_reason=multi_currency, quantity3=1, txn_type=cart, mc_gross_1=2.00, mc_currency=EUR,
mc_gross_2=4.00, mc_gross_3=5.00, residence_country=CA, test_ipn=1, transaction_subject=292aaf2e76b586a80c20f13c5b1d6997, payment_gross=, ipn_track_id=95d4aa9eb8b34,
IPN Response from Paypal Server:
HTTP/1.1 200 OK
Date: Tue, 24 Apr 2012 07:33:44 GMT
8
VERIFIED
0
私は今まさに同じ問題を抱えています – mclaassen
非常に奇妙です - あなたはどのようにIPN URLをpaypalに渡していますか? IIRCでは、あなたの口座にそれを設定することができ、支払いプロセスでそれを渡すことができます。両方をしているのが2つの通知を引き起こしているのだろうか?また、Paypalのバグを割り引かないでください。私はスタッフと数多くの長い電話を必要とするいくつかの問題に取り組んできました。あなたのアウトバウンドのプロセスとアカウントを確認してから、あなたに連絡することをお勧めします。同じことについての2件の告知、2分間隔で...奇妙なようです。間欠? –