Php 贝宝:错误-返回商户

Php 贝宝:错误-返回商户,php,paypal,drupal-7,Php,Paypal,Drupal 7,以下代码基于上的示例 它是自定义模块代码的一部分,实现了hook\u webform\u submission\u insert()。提交表单时,$url变量从$paypal数组构建,然后用户的浏览器重定向到,例如 https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_xclick&business=pete27_11_94-facilitator%40hotmail.com&;收件人电子邮件=pete27\u11\u94-facil

以下代码基于上的示例

它是自定义模块代码的一部分,实现了
hook\u webform\u submission\u insert()
。提交表单时,
$url
变量从
$paypal
数组构建,然后用户的浏览器重定向到,例如

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_xclick&business=pete27_11_94-facilitator%40hotmail.com&;收件人电子邮件=pete27\u11\u94-facilitator%40hotmail.com&;页面样式=黄色签出&;金额=0.01&;货币代码=英镑&;项目名称=测试+事件+注册和;税=0&;自定义=24&;return=http%3A%2F%2Fwww.pitmart.com%2Fformulak%2Ftest%2fThank&;notify_url=http%3A%2F%2Fwww.pitmart.com%2Fformulak%2Ftest%2fThank&;取消返回=http%3A%2F%2Fwww.pitmart.com%2Fformulak&;first_name=sdfgsdfg&;国家=英国

在我的paypal开发者帐户中,有一个用户的电子邮件地址与url中的相同,类型为business pro,但每次我提交时都会收到错误消息

我们无法处理此交易,因为卖家提供的PayPal电子邮件地址存在问题。请联系卖家解决问题。如果此付款用于易趣登录,您可以通过登录页面上的“向卖家提问”链接与卖家联系。如果您有正确的电子邮件地址,可以在www.paypal.com上付款。

我正在一台实时服务器上测试,而不是无法访问的本地服务器

我本以为会被带到paypal登录表单,但只是得到了一个错误

是否可以通过这种方式将数据传递给paypal?(直接在url中,而不是通过表单“发布”)

我是否缺少一些可能导致此故障的变量/数据?是否有文档列出了此类paypal请求的最低配置


编辑-缺少
货币\u代码
。自从在中添加了它之后,仍然收到错误。

问题在于您正在对所有内容进行URL编码,包括应该分隔这些值的符号

也就是说,这很好:


顺便说一下,“英国”不是一个有效的国家。PayPal国家代码紧随其后,因此应该是“GB”。

drupal_goto()
函数的进一步研究让我注意到,查询字符串可以在不使用
http_build_query()的情况下生成。
。使用这种新方法使我进入表格。不确定我是否理解其中的区别,但它似乎有效。。。
$paypal = array();
$paypal['cmd'] = '_xclick';
$paypal['business'] = variable_get('event_reg_paypal_address');
$paypal['receiver_email'] = $paypal['business'];
$paypal['page_style'] = 'huang_checkout';
$paypal['amount'] = variable_get('event_reg_paypal_cost');
$paypal['currency_code'] = 'GBP';
$paypal['item_name'] = 'Test Event Registration';
$paypal['tax'] = 0;
$paypal['custom'] = $submission->sid;
$paypal['return'] = $base_url.'/test/thanks';
$paypal['notify_url'] = $base_url.'/test/thanks';
$paypal['cancel_return'] = $base_url;
$paypal['first_name'] = //first name from submission
$paypal['country'] = 'UK';

$query = http_build_query($paypal, '', '&');
$url = $paypal_host . $query;

drupal_goto($url);