PayPal沙箱IPN验证始终返回INVALID

亚历山大·普拉夫丁

我用谷歌搜索了这个问题,并尝试了所有建议,但没有任何效果。

我尝试了以下代码:https : //developer.paypal.com/docs/classic/ipn/ht_ipn/,但是它不起作用。只需将其复制粘贴并删除旧的magick_quotes路由即可。

我尝试了以下代码:http : //samples.geekality.net/view-source.php?file=ipn/ipn_handler.class.php,它也无法正常工作。

在所有情况下,我都尝试执行以下操作:

$req = 'cmd=_notify-validate&' . file_get_contents('php://input');

为确保我向IPN发送的邮件与发送给我的邮件完全相同另外,我使用了调试代理(Fiddler),并保存了IPN发送给我的内容以及我发送给IPN的内容。请求主体在字节之间是相同的,除了我的请求以cmd=_notify-validate&字符串为前缀

是的,我检查了我使用的沙箱网址是否正确。以下是整个请求正文:

IPN发送给我的信息:(我只是将个人数据替换为XXX)

POST http://localhost.loc/en/payment/success/1 HTTP/1.1
Host: localhost.loc
Connection: keep-alive
Content-Length: 921
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4

mc_gross=1.00&protection_eligibility=Ineligible&payer_id=5XNKM66NSDKC4&tax=0.00&payment_date=05%3A34%3A11+Jun+01%2C+2015+PDT&payment_status=Completed&charset=utf-8&first_name=XXX&mc_fee=0.33&notify_version=3.8&custom=topup%3A262262%3A1%3A1433162020&payer_status=verified&business=XXX&quantity=1&payer_email=XXX&verify_sign=AG58dBsn5g2z8O8NEjotbuJGP14PAIpZ4k26VL8IyhaDPkcDRj002Keq&memo=hmgvjgjhgfjhfggjhfjtfgjh&txn_id=4CN141026K278934Y&payment_type=instant&last_name=XXX&receiver_email=XXX&payment_fee=0.33&receiver_id=DCMXPXGX4QX6J&txn_type=web_accept&item_name=Account+top+up&mc_currency=USD&item_number=Account+262262+top+up&residence_country=US&test_ipn=1&handling_amount=0.00&transaction_subject=topup%3A262262%3A1%3A1433162020&payment_gross=1.00&shipping=0.00&auth=ANSTBwT3znll-gJQZO2cLoV5QJFW9v8W.FqyWxffdtI0L-9mfsoe2xRL44M86Sn2XtYGtcqG4Fjjel1kdYZyxpQ

我发送给IPN的内容:

POST https://www.sandbox.paypal.com/cgi-bin/webscr HTTP/1.1
Host: www.sandbox.paypal.com
Accept: */*
Content-Length: 942
Content-Type: application/x-www-form-urlencoded

cmd=_notify-validate&mc_gross=1.00&protection_eligibility=Ineligible&payer_id=5XNKM66NSDKC4&tax=0.00&payment_date=05%3A34%3A11+Jun+01%2C+2015+PDT&payment_status=Completed&charset=utf-8&first_name=XXX&mc_fee=0.33&notify_version=3.8&custom=topup%3A262262%3A1%3A1433162020&payer_status=verified&business=XXX&quantity=1&payer_email=XXX&verify_sign=AG58dBsn5g2z8O8NEjotbuJGP14PAIpZ4k26VL8IyhaDPkcDRj002Keq&memo=hmgvjgjhgfjhfggjhfjtfgjh&txn_id=4CN141026K278934Y&payment_type=instant&last_name=XXX&receiver_email=XXX&payment_fee=0.33&receiver_id=DCMXPXGX4QX6J&txn_type=web_accept&item_name=Account+top+up&mc_currency=USD&item_number=Account+262262+top+up&residence_country=US&test_ipn=1&handling_amount=0.00&transaction_subject=topup%3A262262%3A1%3A1433162020&payment_gross=1.00&shipping=0.00&auth=ANSTBwT3znll-gJQZO2cLoV5QJFW9v8W.FqyWxffdtI0L-9mfsoe2xRL44M86Sn2XtYGtcqG4Fjjel1kdYZyxpQ

谁能帮我我做错了什么?谢谢。

亚历山大·普拉夫丁

AARRRRGH !!!!!!!! 我对贝宝只有脏话!!!!!!! 问题出在……(鼓……塔达姆!)在charset野外!不,它的值必须与IPN发送给您的值相同,但是...大写!IPN以小写形式发送它!因此,无论手册告诉我们“按原样”返回数据,您都必须修改IPN数据以成功验证它。PayPal错误?

所以我的最终工作代码是:(使用HTTP_Request2)

protected function verifyPostData() {
    $this->request->setBody('cmd=_notify-validate&' . str_replace('=utf-8', '=UTF-8', file_get_contents('php://input')));
    $response = $this->request->send();
    if ($response->getStatus() != 200) {
        throw new \RuntimeException("Transaction data verification request failed with code {$response->getStatus()}");
    }
    $content = trim($response->getBody());
    return ($content == 'VERIFIED');
}

我是如何做到的:我发送了此交易的PDT请求并获得了交易数据。然后,我对PDT和IPN数据进行了字段到字段的比较。PDT有没有一些IPN领域,如authverify_signtest_ipn但是所有其他字段似乎必须相同。唯一的区别在于该charset字段的字符情况然后,我尝试验证修改后的数据,但意外地成功了!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PayPal IPN在沙箱中返回无效

来自分类Dev

PayPal IPN沙箱返回HTTP 302

来自分类Dev

PayPal IPN始终返回“无效”

来自分类Dev

在Paypal沙箱中未收到IPN

来自分类Dev

PayPal IPN返回302

来自分类Dev

Paypal IPN使用“立即购买”按钮返回“无效”,但已通过IPN Simulator验证

来自分类Dev

Paypal订阅IPN返回无效

来自分类Dev

PayPal IPN无法从沙箱发送到网站

来自分类Dev

尽管回传正确,但贝宝IPN模拟器始终返回INVALID

来自分类Dev

Paypal IPN现在返回INVALID-以前可以正常工作的PHP代码

来自分类Dev

为什么paypal-ipn仍将INVALID返回到我的POST?

来自分类Dev

(Laravel) 无法从 PayPal IPN 获得响应,但模拟响应返回已验证

来自分类Dev

使用IPN验证PayPal上的成功付款

来自分类Dev

贝宝IPN沙箱-IPN侦听器-没有经过验证或无效

来自分类Dev

PayPal IPN返回“卖方注意”字段

来自分类Dev

由于PayPal在POST中向IPN侦听器发送了不正确的字符集,因此IPN验证返回了无效

来自分类Dev

收据编号未在Paypal沙箱响应中返回

来自分类Dev

Paypal IPN已验证,但未运行我的INSERT

来自分类Dev

如何使用PayPal REST API和IPN验证销售

来自分类Dev

密码验证始终返回true

来自分类Dev

PHP-贝宝IPN始终返回无效

来自分类Dev

批量付款沙箱(IPN)响应

来自分类Dev

通知网址和返回网址在PayPal IPN中的区别

来自分类Dev

通知网址和返回网址之间在PayPal IPN中的区别

来自分类Dev

PayPal 沙盒 IPN URL 返回“安全连接失败”

来自分类Dev

paypal ipn 不会返回 item_name 和数量

来自分类Dev

套接字始终返回INVALID_SOCKET

来自分类Dev

PHP密码验证始终返回false

来自分类Dev

URL验证IsWellFormedUriString始终返回true

Related 相关文章

热门标签

归档