2014-02-09 2 views
0

Я достаточно стучал головой:Проверить Paypal Adaptative Payment

Я пишу приложение для Android, которое получит платежи PayPal. Поэтому я использую this.

В Java-код для Android приложение, которое вы хотите найти:

intent.putExtra(PaymentActivity.EXTRA_PAYPAL_ENVIRONMENT, PaymentActivity.ENVIRONMENT_NO_NETWORK); 
intent.putExtra(PaymentActivity.EXTRA_CLIENT_ID, "LARGE STRING AKA Client ID"); 
intent.putExtra(PaymentActivity.EXTRA_PAYER_ID, "The email of the paying girl"); 
intent.putExtra(PaymentActivity.EXTRA_RECEIVER_EMAIL, "The email I registered at PayPal"); 
intent.putExtra(PaymentActivity.EXTRA_PAYMENT, payment); 

в onActivityResult Я получаю JSON:

{ 
    "payment": { 
    "short_description": "Donation to Saving The Amazon", 
    "amount": "5", 
    "currency_code": "USD" 
    }, 
    "client": { 
    "platform": "Android", 
    "paypal_sdk_version": "1.2.5", 
    "product_name": "PayPal Android SDK; ", 
    "environment": "mock" 
    }, 
    "proof_of_payment": { 
    "adaptive_payment": { 
     "timestamp": "2014-02-09T22:44:45+0000", 
     "payment_exec_status": "COMPLETED", 
     "app_id": "_FAKE_APPLICATION_ID_", 
     "pay_key": "AP-70M68096ML426802W" 
    } 
    } 
} 

Теперь мне нужно проверить компенсацию. Я должен сделать запрос (от моего сервера), который выглядит следующим образом:

curl https://svcs.sandbox.paypal.com/AdaptivePayments/PaymentDetails \ 
-H "X-PAYPAL-SECURITY-USERID: {userId}" \ 
-H "X-PAYPAL-SECURITY-PASSWORD: {password}" \ 
-H "X-PAYPAL-SECURITY-SIGNATURE: {signature}" \ 
-H "X-PAYPAL-APPLICATION-ID: {appId}" \ 
-H "X-PAYPAL-REQUEST-DATA-FORMAT: NV" \ 
-H "X-PAYPAL-RESPONSE-DATA-FORMAT: NV" \ 
-d "payKey={payKey} 
    &requestEnvelope.errorLanguage=en_US" 

PayPal page говорит, что я могу найти userId в password и тому signaturehere, тогда как я только найти API Username, API Password и signature. Я заменил userId на значение API Username и password со значением в API Password (и, очевидно, signature со значением). payKey Я беру его с proof_of_payment и appId из приложения, которое мне нужно было создать here. Что отличает тот, который я создал here. Правильно ли это?

Edit: Мой запрос теперь выглядит следующим образом: (опуская некоторые части значений)

curl https://svcs.sandbox.paypal.com/AdaptivePayments/PaymentDetails \ 
-H "X-PAYPAL-SECURITY-USERID: info_api1.test.com" \ 
-H "X-PAYPAL-SECURITY-PASSWORD: XXNXXXA6XXX3PGXX" \ 
-H "X-PAYPAL-SECURITY-SIGNATURE: XXXXXvXXXXXqXXXXXm1XXXXXg3fOAuds4mc3XXXXXXXXJdy4XXXXXXqX" \ 
-H "X-PAYPAL-APPLICATION-ID: APP-80W284485P519543T" \ 
-H "X-PAYPAL-REQUEST-DATA-FORMAT: NV" \ 
-H "X-PAYPAL-RESPONSE-DATA-FORMAT: NV" \ 
-d "payKey=AP-70M68096ML426802W 
    &requestEnvelope.errorLanguage=en_US" 

После всего этого, PayPal счастлив сказать мне:

responseEnvelope. timestamp = 2014-02-09T15% 3A37% 3A37.559-08% 3A00 & responseEnvelope.ack = Сбой & responseEnvelope.correlationId = 33628be038bc5 & responseEnvelope.build = 9641252ошибка (0) .errorId = 520003 & ошибка (0) .domain = ПЛАТФОРМА & ошибка (0) = .subdomain Применение & ошибок (0) .severity = Ошибка & ошибка (0) = .category Применение & ошибок (0) .message = Authentication + не удалось. + API + полномочия + являются + некорректным.

Я просто не могу получить информацию, необходимую для подтверждения этого платежа. Что я делаю неправильно?

ответ

1

Я вытащил журналы для вашей ошибки, и вы не используете правильные учетные данные API. Похоже, что вы используете учетные данные своей учетной записи Live, поскольку имя пользователя API, которое вы используете, отсутствует в Sandbox. Учетные данные API, которые вы должны использовать, будут получены из вашей учетной записи sandbox, которую вы использовали в качестве приемника в Android SDK. Это, скорее всего, адрес электронной почты -facilitator. Вы можете найти учетные данные API для этой учетной записи с помощью следующих шагов:

  1. входа в developer.paypal.com Вкладки
  2. выберите Приложения
  3. счетов песочницы
  4. нажмите на меню слева
  5. щелчок треугольника, чтобы расширить счет раздел для -facilitator адрес электронной почты
  6. профиль
  7. нажмите ссылку
  8. выберите вкладку API Credentials
+0

Благодарим вас! что решило мою проблему. Хотя я думаю, что руководства PayPal немного вводят в заблуждение относительно этой маленькой вещи. – edpaez

0

Идентификатор PayKey и App - это разные вещи. Идентификатор приложения - это то, что вы получаете, когда подаете заявку на приложение Adaptive Payments и одобряете его. Он отправляется в заголовке вместе с вашим именем API, паролем API и подписями API. У вас даже есть местозаполнитель для этого в предоставленном вами образце.

PayKey будет ключом, который вы вернетесь после получения запроса на оплату. Это похоже на идентификатор транзакции. Обычно это что-то, что возвращается в ответ, но если вы звоните в ExecutePayment, например, вы включили бы его в запрос ... но как параметр PayKey ... не app id.

Ошибка, которую вы получаете, просто означает, что ваши значения API un/pw/sig неверны.Во многих случаях это просто означает, что вы отправляете учетные данные в виде песочницы на конечную точку в реальном времени PayPal или на визовую версию. Дважды проверьте это и дважды проверьте сами фактические значения. Кроме того, убедитесь, что идентификатор приложения включен в заголовок вместо тела запроса.

+0

Привет! Спасибо за помощь. Я думаю, вы неправильно поняли часть моего вопроса. Я отредактировал его немного, чтобы быть более ясным. Я также уверен, что не испортил значения Sanbox/Live – edpaez

+0

Одна вещь, которую я замечаю, это то, что вы используете JSON, но ваши заголовки запросов имеют NV как формат данных. Необходимо изменить это на JSON. Возможно, их система ожидает строку NVP, поэтому она ищет USER = whatever & PWD = что угодно и т. Д., Но это не получается, поэтому он рассматривает их как пробелы и не выполняет аутентификацию. –

+0

Фактически, если вы используете NV в качестве формата данных запроса, вы получаете '580001 Неверный запрос: {0}' (после проверки). Оказывается, вы были правы, я не использовал правильные учетные данные. Учетные записи Sandbox находятся здесь. Спасибо! https://developer.paypal.com/webapps/developer/applications/accounts – edpaez

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