2013-03-16 18 views
1

Используя python и django, я пытаюсь создать платеж на paypal, используя ресурс для оплаты аккаунта REST API. Все работает, когда я использую завиток. В представлении Django я получаю токен в порядке, но когда я пытаюсь сделать платеж с его помощью, я получаю сообщение об ошибке «Ошибка HTTP 401: Несанкционированное».API Paypal Rest - создание платежа с использованием платежного ресурса PayPal

Вот мой локон, который работает:

curl -v https://api.sandbox.paypal.com/v1/payments/payment -H 'Content-Type:application/json' -H 'Authorization:Bearer ***my_token***' -d '{ "intent":"sale", "redirect_urls":{ "return_url":"http://www.myurl.com", "cancel_url":"http://www.myurl.com"}, "payer":{ "payment_method":"paypal" },"transactions":[{"amount":{ "total":"0.10", "currency":"USD"},"description":"This is the Test payment transaction description."}]}' 

Вот мой взгляд Django, что есть проблема, когда:

import urllib2, base64 

token = "***my_token***" 
values = { 
      "intent":"sale", 
      "redirect_urls":{ 
      "return_url":"http://www.myurl.com", 
      "cancel_url":"http://www.myurl.com" 
      }, 
      "payer":{ 
      "payment_method":"paypal" 
      }, 
      "transactions":[ 
      { 
       "amount":{ 
       "total":"0.10", 
       "currency":"USD" 
       }, 
       "description":"This is the Test payment transaction description." 
      } 
      ]} 

data = urllib.urlencode(values) 

request1 = urllib2.Request("https://api.sandbox.paypal.com/v1/payments/payment") 
base64string = base64.encodestring('%s' % token).replace('\n', '') 
request1.add_header("Content-Type", "application/json") 
request1.add_header("Authorization", "Bearer %s" % base64string) 

result1 = urllib2.urlopen(request1 , data) 
response = result1.read() 

Другими словами, я пытаюсь сделать завиток работу в моем Посмотреть.

Спасибо.

+0

'request1 = urllib2.Request ("https://www.sandbox.paypal.com/cgi-bin/webscr")' – catherine

+0

@catherine. Я ожидал, что данные json имеют токен, но использование вашего адреса приведет меня к экрану PayPal без какой-либо формы. – user1783848

+0

У меня такая же проблема, любое решение, которое вы нашли? –

ответ

-2

Сначала сделайте запрос к https://api.sandbox.paypal.com/v1/oauth2/token с базовым auth, чтобы получить токен-носитель, а затем введите REST-вызов (https://api.sandbox.paypal.com/v1/payments/payment) с маркером-носителем.

https://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/

Использование PayPal SDK paypalrestsdk для упрощения кода Python.

  1. https://github.com/paypal/rest-api-sdk-python - README
  2. https://github.com/paypal/rest-api-sdk-python/tree/master/samples - Образцы
+0

Я могу получить токен носителя, как я указал. Моя проблема заключается в использовании этого платежа. – user1783848

+0

Замените строку 'request1.add_header (« Авторизация »,« Основные% s »% base64string)' с 'request1.add_header (« Авторизация »,« Перенос% s »% bearer_token)' – siddick

+0

Я получаю ту же ошибку, используя (" Authorization "," Bearer% s "% bearer_token) – user1783848

0

Не уверен, что если вы работаете в одно и то же я был, но я пытался создать платежи за счет Paypal третьей стороны, которая Я не запросил разрешения. Оказывается, мне нужно было использовать API разрешений для запроса правильных разрешений.

Смотрите эту ссылку: https://developer.paypal.com/webapps/developer/docs/classic/permissions-service/integration-guide/PermissionsAbout/

Смежные вопросы