paypal - 数字商品支付 : I keep getting invalid request

标签 paypal

我正在尝试使用“数字商品支付”工作流程,因为我需要获得将与 PayPal Lightbox 一起使用的“支付 key ”,但该方法不接受我的请求。

这是我使用的代码(我只是隐藏了真正的 API key ):

import requests

h = {'X-PAYPAL-SECURITY-USERID': '******************',
    'X-PAYPAL-SECURITY-PASSWORD': '****************',
    'X-PAYPAL-SECURITY-SIGNATURE': '*************************************',
    'X-PAYPAL-REQUEST-DATA-FORMAT': 'NV',
    'X-PAYPAL-RESPONSE-DATA-FORMAT': 'NV',
    'X-PAYPAL-APPLICATION-ID': 'APP-80W284485P519543T'}

d = """{'requestEnvelope.errorLanguage': 'en_US',
    'actionType': 'PAY',
    'receiverList.receiver(0).amount': '1.00',
    'currencyCode': 'USD',
    'feesPayer': 'EACHRECEIVER',
    'memo': 'Simple payment example.',
    'cancelUrl': 'http://your_cancel_url',
    'returnUrl': 'http://your_return_url',
    'ipnNotificationUrl': 'http://your_ipn_notification_url',
    'receiverList.receiver(0).paymentType': 'DIGITALGOODS'}"""

r = requests.post('https://svcs.sandbox.paypal.com/AdaptivePayments/Pay', headers = h, data = d)

当我执行代码时出现此错误:

In [16]: r.text
Out[16]: u'responseEnvelope.timestamp=2013-07-02T02%3A52%3A53.685-07%3A00&responseEnvelope.ack=Failure&responseEnvelope.correlationId=ea6514b6f51a7&responseEnvelope.build=6520082&error(0).errorId=580001&error(0).domain=PLATFORM&error(0).subdomain=Application&error(0).severity=Error&error(0).category=Application&error(0).message=Invalid+request%3A+%7B0%7D'

我的代码有什么问题?

最佳答案

PayPal 文档中的代码示例错误和/或不完整。我不得不自己猜测 JSON 帖子的结构。

正确的标题是这样的:

h = {'X-PAYPAL-SECURITY-USERID': '***************',
    'X-PAYPAL-SECURITY-PASSWORD': '***********',
    'X-PAYPAL-SECURITY-SIGNATURE': '************************8',
    'X-PAYPAL-REQUEST-DATA-FORMAT': 'JSON',
    'X-PAYPAL-RESPONSE-DATA-FORMAT': 'JSON',
    'X-PAYPAL-APPLICATION-ID': 'APP-80W284485P519543T'}

正确的 Python 字典(在将其传递给 POST 之前进行 jsonize)是这样的:

d = {'requestEnvelope' : {'errorLanguage' : 'en_US'},
    'actionType': 'PAY',
    'receiverList' : {
        'receiver' : [
                        {'email' : '***************', 
                        'amount' : 1.00,
                        'paymentType': 'DIGITALGOODS'}
                ],
    },
    'currencyCode': 'USD',
    'feesPayer': 'EACHRECEIVER',
    'memo': 'Simple payment example.',
    'cancelUrl': 'http://your_cancel_url',
    'returnUrl': 'http://your_return_url',
    'ipnNotificationUrl': 'http://your_ipn_notification_url'}

关于paypal - 数字商品支付 : I keep getting invalid request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17422625/

相关文章:

python - PayPal 不返回授权 ID

paypal - 测试(沙盒?)PayPal 关联结账的信用卡数据

java - 如果 PayPal 的 IPN 服务无法连接到 IPN 目的地会怎样?

php - 如何将 Paypal 与 codeigniter 集成?

javascript - Paypal 期望传递一个订单 ID

php - Paypal IPN,但来自谁(如果注册和 paypal 邮件不同)

javascript - 打开 Paypal 数字商品灯箱

ruby-on-rails - 检索买家结算结束时间

magento - 在 Magento 中禁用 Paypal 自动开票

php - Paypal 沙盒 API 验证错误?