2013-07-02 27 views
0

我試圖使用「數字商品付款」工作流程,因爲我需要獲得一個「付款鍵」,我將使用PayPal燈箱,但該方法沒有接受我的要求。數字商品付款:我一直收到無效請求

這是我使用的代碼(我只是隱藏了真正的API鍵):

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' 

這有什麼錯我的碼?

+0

請注意:我也試過用捲曲,我得到同樣的錯誤。 –

回答

1

貝寶文檔中的代碼示例錯誤和/或不完整。我必須自己猜測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'} 
+0

非常感謝 - 在將它傳遞給POST之前對Python字典進行了json化,爲我節省了一筆花費了大量時間修復的問題!爲此+1! –

相關問題