我一直在尝试一段时间来获得一个简单的PayPal IPN模块工作,但不断从LWP::UserAgent获得400个坏请求错误。我不确定为什么会发生这种情况。PayPal ping我很好(我使用IPN模拟器),我可以看到我的应用程序日志的过程。我可以通过LWP::UserAgent调用PayPal验证URL,没有表单内容,这很好,但是一旦我包含验证的请求内容,我得到错误400。如果有人知道这件事,请告诉我。
-$self->{'_req'}是Plack::Request类型
my $url = $test ? $VERIFY_URL_DEV : $VERIFY_URL;
my $ua = new LWP::UserAgent();
my $req = new HTTP::Request('POST', $url);
my $query = 'cmd=_notify-validate&' . $self->{'_req'}->raw_body;
$req->content_type('application/x-www-form-urlencoded');
$req->content( $query );
my $res = $ua->request($req);
if ($res->is_error)
{
# HTTP error, indicate an invalid notification.
warn "There was an error validating this IPN.";
warn $res->message;
warn $res->error_as_HTML;
return 0;
}
问题出在PayPal这边。当我在沙箱中测试时,而不是在IPN模拟器中,它工作得很好。