PayPal IPN 在沙箱中返回无效 [英] PayPal IPN returns invalid in sandbox

查看:72
本文介绍了PayPal IPN 在沙箱中返回无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 PayPal IPN 创建支付网关.提交付款后,我检索了 PayPal 的回复.这是我收到的(PHP var_dump):

I'm creating a payment gateway using PayPal IPN. After submitting the payment, I retrieve PayPal's response. Here is what I receive (PHP var_dump):

    array(45) {
    ["mc_gross"]                    => string(4)  "1.00"
    ["protection_eligibility"]      => string(10) "Ineligible"
    ["address_status"]              => string(9)  "confirmed"
    ["item_number1"]                => string(1)  "1"
    ["payer_id"]                    => string(13) "KUN39T5E6UA3W"
    ["tax"]                         => string(4)  "0.00"
    ["address_street"]              => string(14) "1 Main Terrace"
    ["payment_date"]                => string(25) "14:01:20 Oct 24, 2015 PDT"
    ["payment_status"]              => string(7)  "Pending"
    ["charset"]                     => string(12) "Windows-1252"
    ["mc_tax1"]                     => string(4)  "0.00"
    ["address_zip"]                 => string(7)  "W12 4LQ"
    ["mc_shipping"]                 => string(4)  "0.00"
    ["mc_handling"]                 => string(4)  "0.00"
    ["first_name"]                  => string(4)  "test"
    ["address_country_code"]        => string(2)  "GB"
    ["address_name"]                => string(10) "test buyer"
    ["notify_version"]              => string(3)  "3.8"
    ["custom"]                      => string(13) "562bf19083b11"
    ["payer_status"]                => string(8)  "verified"
    ["address_country"]             => string(14) "United Kingdom"
    ["num_cart_items"]              => string(1)  "1"
    ["mc_handling1"]                => string(4)  "0.00"
    ["address_city"]                => string(13) "Wolverhampton"
    ["payer_email"]                 => string(44) "[myemail]"
    ["verify_sign"]                 => string(56) "AiPC9BjkCyDFQXbSkoZcgqH3hpacAymQrx4nOnSeR2hKuwHDAUFmNy.-"
    ["mc_shipping1"]                => string(4)  "0.00"
    ["tax1"]                        => string(4)  "0.00"
    ["txn_id"]                      => string(17) "9UV91932BX9643323"
    ["payment_type"]                => string(7)  "instant"
    ["last_name"]                   => string(5)  "buyer"
    ["item_name1"]                  => string(5)  "test1"
    ["address_state"]               => string(13) "West Midlands"
    ["receiver_email"]              => string(38) "[myemail]"
    ["quantity1"]                   => string(1)  "1"
    ["pending_reason"]              => string(10) "unilateral"
    ["txn_type"]                    => string(4)  "cart"
    ["mc_gross_1"]                  => string(4)  "1.00"
    ["mc_currency"]                 => string(3)  "GBP"
    ["residence_country"]           => string(2)  "GB"
    ["test_ipn"]                    => string(1)  "1"
    ["transaction_subject"]         => string(13) "562bf19083b11"
    ["payment_gross"]               => string(0)  ""
    ["merchant_return_link"]        => string(10) "click here"
    ["auth"]                        => string(87) "AkxCT8gKLRplBETrTgj4KrgsPA.1rCwR.lM1EpzTQoW9QR-M0l3-kiwjq0hgNoZUQuJaGRdDHsGnjZ9NsbsRamg"
}

然后我执行以下操作:

$responseURL = "https://sandbox.paypal.com/cgi-bin/webscr?";
$params = "cmd=_notify-validate&" .http_build_query($_REQUEST);

var_dump(file_get_contents($responseURL.$params));

返回:INVALID

有什么建议吗?在沙盒中测试可能不起作用吗?

Any advice? Is testing perhaps not working in Sandbox?

推荐答案

需要发布数据;这是我使用的工作代码:

You need to post the data; here is working code that I use:

$req = 'cmd=_notify-validate';

foreach($_POST as $key => $value) {
    $value = urlencode($value);
    $req .= "&{$key}={$value}";
}

$res = '';
$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'));   
$res = curl_exec($ch);
curl_close($ch);

if(strcmp($res, "VERIFIED") == 0) 
{
    //VALID
}

这篇关于PayPal IPN 在沙箱中返回无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆