以下代码基于 Webform PayPal Integration in Drupal 7 处的示例
$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);
它是自定义模块代码的一部分并实现了 hook_webform_submission_insert()
。当提交表单时,$url
变量是从 $paypal
数组构建的,然后用户的浏览器被重定向到,例如,
https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_xclick&business=pete27_11_94-facilitator%40hotmail.com&receiver_email=pete27_11_94-facilitator%40hotmail.com&page_style= huang_checkout&amount=0.01¤cy_code=GBP&item_name=Test+Event+Registration&tax=0&custom=24&return=http%3A%2F%2Fwww.pitmart.com%2Fformulak%2Ftest%2Fthanks¬ify_url=http %3A%2F%2Fwww.pitmart.com%2Fformulak%2Ftest%2Fthanks&cancel_return=http%3A%2F%2Fwww.pitmart.com%2Fformulak&first_name=sdfgsdfg&country=UK
在我的 paypal 开发者帐户中,有一个用户使用 url 中的电子邮件地址,类型为 business-pro,但每次我提交时都会收到错误消息
我们无法处理此交易,因为卖家提供的 PayPal 电子邮件地址有问题。请联系卖家解决问题。如果此付款用于 eBay 列表,您可以通过列表页面上的“向卖家提问”链接联系卖家。当您有正确的电子邮件地址时,可以在 www.paypal.com 上付款。
我正在实时服务器上进行测试,而不是在本地无法访问。
我原以为会被带到 Paypal 登录表单,但只是收到错误消息。
是否可以通过这种方式将数据传递给paypal? (直接在 url 中而不是通过表单“发布”)
我是否遗漏了一些会导致此失败的变量/数据?是否有列出此类 paypal 请求的最低配置的文档?
编辑 - 缺少currency_code
。自从添加了它之后仍然收到错误。
最佳答案
问题是您要对所有内容进行 URL 编码,包括用于分隔值的 & 符号。
顺便说一下,“英国”不是一个有效的国家/地区。 Paypal 国家代码遵循 ISO 3166-2 , 所以应该是 'GB'。
关于php - PayPal:错误 - 返回给商家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228196/