кто работал с paypal-ом ?
Я делаю запрос paypal-а с "SetExpressCheckout" method, используя статью
http://habrahabr.ru/post/128198/.
Я посылаю следующие параметры:
ArrayСо следующими настройками curl-а:
(
[RETURNURL] => http://site/paypal_payment_success
[CANCELURL] => http://site/paypal_payment_cancelled
[PAYMENTREQUEST_0_AMT] => 45
[PAYMENTREQUEST_0_SHIPPINGAMT] => 10
[PAYMENTREQUEST_0_CURRENCYCODE] => USD
[PAYMENTREQUEST_0_ITEMAMT] => 35.00
[L_PAYMENTREQUEST_0_NAME0] => iPhone
[L_PAYMENTREQUEST_0_DESC0] => White iPhone, 16GB
[L_PAYMENTREQUEST_0_AMT0] => 35.00
[L_PAYMENTREQUEST_0_QTY0] => 1
)
$curlOptions = array (
CURLOPT_URL => $this -> _endPoint,
CURLOPT_VERBOSE => 1,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
//CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem',
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $request
);
И я получаю следующий response:
ArrayНо делаю редирект по urlу вида:
(
[TOKEN] => EC-19B45407EE698120B
[TIMESTAMP] => 2012-09-26T06:56:01Z
[CORRELATIONID] => a92fb02c16e60
[ACK] => Success
[VERSION] => 74.0
[BUILD] => 3719653
)
https://www.paypal.com/webscr?cmd=_express-...=EC-19B45407EE6
Я получаю в браузере следующую ошибку:
This transaction is invalid. Please return to the recipient's website to complete your transaction using their regular checkout flow.
Return to merchant
At this time, we are unable to process your request. Please return to and try another option.
Никто не знает, что это за ошибка и какой " another option" имеется в виду?
Если неправильно заполнен один из параметров PAYMENTREQUEST_0_SHIPPINGAMT, [L_PAYMENTREQUEST_0_NAME0, L_PAYMENTREQUEST_0_DESC0, L_PAYMENTREQUEST_0_AMT0, L_PAYMENTREQUEST_0_QTY0,
то в возврате [ACK] равен FAILURE и нормальное описание ошибки... Также выводится нормально описание ошибки если задать неправильные параметры логина.
несколько дней назад спросил на форуме paypal-а ( https://www.x.com/developers/paypal/forums/...-authentication )- молчат.
Может ли причиной быть то, что запрос идет с украниского IP?
Спустя 11 дней, 2 часа, 59 минут, 58 секунд (11.10.2012 - 13:29) Guest написал(а):
Ап автору и задам свой вопрос, на ту же тему:
Использую ту же статью. http://habrahabr.ru/post/128198/
Всё грубый копипаст с сайта.
Задача стоит совершить оплату через paypal посредством карточки Visa/Mastercard через песочницу.
Ввожу данные, но не уверен те ли данные ввожу.
http://goo.gl/jOp5h
Сертификат взял, как было описано в статье с сайта. Подозрение, что с ним какая-то проблема (не знаю как точно он должен выглядеть, могу запостить где-нибудь)...
Подключил его. Пробовал удалять эту строку, выдает на var_dump (curl_exec($ch)); результат bool(false)
Вобщем сейчас вот так:
Тестовую кредитку взял отсюда:
http://support.microsoft.com/kb/258255/en-us
Вылетает ошибка:
Использую ту же статью. http://habrahabr.ru/post/128198/
Всё грубый копипаст с сайта.
Задача стоит совершить оплату через paypal посредством карточки Visa/Mastercard через песочницу.
Ввожу данные, но не уверен те ли данные ввожу.
http://goo.gl/jOp5h
protected $_credentials = array(
'USER' => 'seller_1297608781_biz_api1.lionite.com',
'PWD' => '1297608792',
'SIGNATURE' => 'A3g66.FS3NAf4mkHn3BDQdpo6JD.ACcPc4wMrInvUEqO3Uapovity47p'
);
Сертификат взял, как было описано в статье с сайта. Подозрение, что с ним какая-то проблема (не знаю как точно он должен выглядеть, могу запостить где-нибудь)...
Подключил его. Пробовал удалять эту строку, выдает на var_dump (curl_exec($ch)); результат bool(false)
Вобщем сейчас вот так:
$curlOptions = array (
CURLOPT_URL => $this -> _endPoint,
CURLOPT_VERBOSE => 1,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem', // Файл сертификата
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $request
);
Тестовую кредитку взял отсюда:
http://support.microsoft.com/kb/258255/en-us
$creditCardDetails = array(
'CREDITCARDTYPE' => 'Visa',
'ACCT' => '4111111111111111',
'EXPDATE' => '122012',
'CVV2' => ''
);
Вылетает ошибка:
Array
(
[TIMESTAMP] => 2012-10-11T10:21:04Z
[CORRELATIONID] => a3a8e9cfba5a2
[ACK] => Failure
[VERSION] => 74.0
[BUILD] => 3719653
[L_ERRORCODE0] => 10501
[L_SHORTMESSAGE0] => Invalid Configuration
[L_LONGMESSAGE0] => This transaction cannot be processed due to an invalid merchant configuration.
[L_SEVERITYCODE0] => Error
[AMT] => 500.00
[CURRENCYCODE] => GBP
)
Спустя 51 минута, 48 секунд (11.10.2012 - 14:21) Guest написал(а):
<?php
require_once('paypal.php');
$requestParams = array(
'IPADDRESS' => $_SERVER['REMOTE_ADDR'],
'PAYMENTACTION' => 'Sale'
);
$creditCardDetails = array(
'CREDITCARDTYPE' => 'Visa',
'ACCT' => '5576425206495089',
'EXPDATE' => '102017',
'CVV2' => '123'
);
$payerDetails = array(
'FIRSTNAME' => 'John1',
'LASTNAME' => 'Doe2',
'COUNTRYCODE' => 'US',
'STATE' => 'NY',
'CITY' => 'New York',
'STREET' => '14 Argyle Rd.',
'ZIP' => '10010'
);
$orderParams = array(
'AMT' => '500',
'ITEMAMT' => '496',
'SHIPPINGAMT' => '4',
'CURRENCYCODE' => 'GBP'
);
$item = array(
'L_NAME0' => 'iPhone 4S dsa',
'L_DESC0' => 'White iPhone, 16GB11111',
'L_AMT0' => '496',
'L_QTY0' => '1'
);
$paypal = new Paypal();
$response = $paypal -> request('DoDirectPayment',
$requestParams + $creditCardDetails + $payerDetails + $orderParams + $item
);
echo '<pre>';
print_r($response);
echo '</pre>';
if( is_array($response) && $response['ACK'] == 'Success') {
$transactionId = $response['TRANSACTIONID'];
}
?>
<?php
class Paypal {
/**
* Последние сообщения об ошибках
* @var array
*/
//appid APP-80W284485P519543T
protected $_errors = array();
/**
* Данные API
* Обратите внимание на то, что для песочницы нужно использовать соответствующие данные
* @var array
*/
protected $_credentials = array(
'USER' => 'seller_1297608781_biz_api1.lionite.com',
'PWD' => '1297608792',
'SIGNATURE' => 'A3g66.FS3NAf4mkHn3BDQdpo6JD.ACcPc4wMrInvUEqO3Uapovity47p'
);
/**
* Указываем, куда будет отправляться запрос
* Реальные условия - https://api-3t.paypal.com/nvp
* Песочница - https://api-3t.sandbox.paypal.com/nvp
* @var string
*/
protected $_endPoint = 'https://api-3t.sandbox.paypal.com/nvp';
/**
* Версия API
* @var string
*/
protected $_version = '74.0';
/**
* Сформировываем запрос
*
* @param string $method Данные о вызываемом методе перевода
* @param array $params Дополнительные параметры
* @return array / boolean Response array / boolean false on failure
*/
public function request($method,$params = array()) {
$this -> _errors = array();
if( empty($method) ) { // Проверяем, указан ли способ платежа
$this -> _errors = array('Не указан метод перевода средств');
return false;
}
// Параметры нашего запроса
$requestParams = array(
'METHOD' => $method,
'VERSION' => $this -> _version
) + $this -> _credentials;
// Сформировываем данные для NVP
$request = http_build_query($requestParams + $params);
// Настраиваем cURL
$curlOptions = array (
CURLOPT_URL => $this -> _endPoint,
CURLOPT_VERBOSE => 1,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => dirname(__FILE__) . '/cacert.pem', // Файл сертификата
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $request
);
$ch = curl_init();
curl_setopt_array($ch,$curlOptions);
// Отправляем наш запрос, $response будет содержать ответ от API
$response = curl_exec($ch);
// Проверяем, нету ли ошибок в инициализации cURL
if (curl_errno($ch)) {
$this -> _errors = curl_error($ch);
curl_close($ch);
return false;
} else {
curl_close($ch);
$responseArray = array();
parse_str($response,$responseArray); // Разбиваем данные, полученные от NVP в массив
return $responseArray;
}
}
}
?>