qiwi-api / bill-payments-php-sdk Goto Github PK
View Code? Open in Web Editor NEWPHP SDK для единого платежного протокола эквайринга и QIWI Кошелька.
License: Other
PHP SDK для единого платежного протокола эквайринга и QIWI Кошелька.
License: Other
[04-Aug-2021 16:38:56 UTC] PHP Fatal error: Uncaught Error: Class 'Curl\Curl' not found in D:\Program Files\MAMP\htdocs\Qiwi\Api\BillPayments.php:146
Привет, сделал форму для оплаты
`
$billPayments = new Qiwi(SECRET_KEY);
$billId = $billPayments->generateId();
$params = [
'billId' => $billId,
'publicKey' => PUBLIC_KEY,
'amount' => 1,
'successUrl' => route('checkout-qiwi', ['billId' => $billId])
];
$link = $billPayments->createPaymentForm($params);
echo "<a href=".$link.">test</a>";`
Перехожу по ссылке, ввожу данные карты, мне выдает ошибку "Операция отклонена", хотя до этого 2 раза нормально оплатилось, что случилось ?
Здравствуйте, возникла ошибка при использовании API. Воспроивожу ситуацию, к примеру сейчас 2021-05-01T14:37 и мне надо чтобы счет был действителен всего 10 минут, то есть это строчка 2021-05-01T14:47. Пишу ее в 'lifetime' и пишется "Счет действителен месяц".
$params = [
'publicKey' => $publicKey,
'amount' => $money,
'billId' => $billId,
'comment' => 'Донат на счет '.$name,
'lifetime' => '2021-05-01T14:47',
'successUrl' => 'site here',
];
Авторизация и т.д. взяты из документации qiwi api
При выставление счёта с помощью PUT запроса https://api.qiwi.com/partner/bill/v1/bills/{billid} - оплата картой проходит примерно в 10% случаях, в остальных получаем ошибку Платеж отклонен. Проверьте введенные реквизиты карты и повторите платеж." и почему он отклоняется"
Установление заголовка no-referrer-when-downgrade не помогло.
body запроса
{
"amount": {
"currency": "RUB",
"value": "1.00"
},
"comment": "test",
"expirationDateTime": "2022-09-30T09:02:00+03:00",
"customFields" : {
"enableLowerCommission" : "true"
}
}
Добрый день.
Недавно платежи перестали формироваться, хотя до этого все работало ОК...
Вылетает Exception при выполнении $response = $billPayments->createBill($orderId, $fields);
[message:protected] => TCP connection reset by peer
[string:Exception:private] =>
[code:protected] => 0
Кошелек не заблокирован. Статус - основной. Счета из ЛК формировать можно...
Меня что - фаервол начал блокировать? Помогите пожалуйста - в бот @qiwi_api_help_bot писал - нет ответа...
$QIWI_SECRET_KEY = env('QIWI_SECRET_KEY') ;
$billPayments = new BillPayments($QIWI_SECRET_KEY);
$billPayments->key = $QIWI_SECRET_KEY;
$billId = $billPayments->generateId();
$fields = [
'amount' => round($price + $delivery_price,2),
'currency' => 'RUB',
'phone' => $form['phone'],
'comment' => 'Заказ №"' . $order->id . '"',
'expirationDateTime' => (new \DateTime(date("Y-m-d H:i:s")))->modify('+7 day')->format('c'),
];
/** @var \Qiwi\Api\BillPayments $billPayments */
$response = $billPayments->createBill($billId, $fields);
Пытаюсь создать счет на оплату таким образом, абсолютно этот же код работает в простом php файле. Сейчас делаю это в Laravel. Секретный ключ точно есть и передается.
Выдает ошибку "HTTP/1.1 401 Unauthorized" в /vendor/qiwi/bill-payments-php-sdk/src/BillPayments.php:592
Trace ведет на строку 463.
Может ли это быть связано с тем что я сейчас тестирую на другом домене(на том же сервере)?
Простите меня за, возможно, тупой вопрос, но как при помощи этой библиотеки передавать средства на QIWI/Карту?
$billId = '772'
$billPayments = new \Qiwi\Api\BillPayments(self::SECRET_KEY);
$response = $billPayments->getBillInfo($billId);
return $response;
При обработке получаю ошибку
HTTP/2 401
При вызове метода cancelBill() получаю
'{ "servlet":"dispatcherServlet", "message":"Unsupported Media Type", "url":"/v1/bills/fe155d50-d30e-4c85-bf96-6c9fa2ad990a-68/reject", "status":"415" }'
Если отправить Postman запрос - то все окей
Всем привет пытаюсь проверить хеш с заголовка
выдает false
$billPayments = new BillPayments(env("QIWI_SECRET"));
$head = getallheaders();
$sha256_hash_header = $head['X-Api-Signature-Sha256'];
$notificationData = [
'bill' => [
'siteId' => $request->input('bill.siteId'),
'billId' => $request->input('bill.billId'),
'amount' => [
'value' => $request->input('bill.amount.value'),
'currency' => $request->input('bill.amount.currency')
],
'status' => [
'value' => $request->input('bill.status.value')
]
],
'version' => $request->input('version')
];
$check = $billPayments->checkNotificationSignature(
$sha256_hash_header, $notificationData, base64_decode(env("QIWI_SECRET"))
);
Результат
$check === false;
При попытке выставить счет, выдается эта ошибка. Не могу понять в чем проблема. Laravel
$billPayments = new \Qiwi\Api\BillPayments(secret_key);
$billId = $billPayments->generateId();
$fields = [
'amount' => '100',
'currency' => 'RUB',
'comment' => 'test',
'expirationDateTime' => '2019-05-05T08:44:07',
'account' => 'Aleksandr-...',
'successUrl' => 'http://test.com/',
];
$response = $billPayments->createBill($billId, $fields);
Помогите пожалуйста решить проблему. Сразу скажу что с composer и Packagist сталкиваюсь впервые.
Проблема собственно в том, что при попытке сделать файл test.php с текстом из первого примера:
<?php
$publicKey = '2tbp1WQvsgQeziGY9vTLe9vDZNg7tmCymb4Lh6STQokqKrpCC6qrUUKEDZAJ7mvFnzr1yTebUiQaBLDnebLMMxL8nc6FF5zfmGQnypdXCbQJqHEJW5RJmKfj8nvgc';
$params = [
'publicKey' => $publicKey,
'amount' => 200,
'billId' => 'cc961e8d-d4d6-4f02-b737-2297e51fb48e',
'successUrl' => 'http://test.ru/',
];
/** @var \Qiwi\Api\BillPayments $billPayments */
$link = $billPayments->createPaymentForm($params);
echo $link;
?>
Выдаёт белый экран и ничего более.
Но если закоментировать строку $link, страница прогружается. PHP в проекте работает.
Мои действия по установке:
Установил nginx
Установил php-fpm
Установил composer в папку проекта
После чего проверил сайт и работу php! Все работает)
После чего в putty перешел в каталог с проектом.
Зашел в github ( qiwi/bill-payments-php-sdk )
Установил репозиторий командой - ( php composer.phar require qiwi/bill-payments-php-sdk ), все встало без ошибок!
Создал файл в корне сайта test.php с примером выше!
В начале скрипта подключил autoload.php (require "vendor/autoload.php";) - прочитал в интернете
После чего выставил права доступа ко всем файлам и папкам 777
Перехожу по пути: мой сайт/test.php
И ничего не работает, даже нет ошибок.
Помогите пожалуйста, заранее спасибо!
Здравствуйте, теперь при попытке создать методом createBill
вылетает исключение: BillPaymentsException
.
Более подробное изучение вопроса показало, что метод PUT https://api.qiwi.com/partner/bill/v1/bills/ теперь отдаёт 405 Method Not Allowed, с таким body
{
"serviceName": "payin-invoicing-api",
"errorCode": "api.method-no-longer-supported",
"description": "Данный метод больше не поддерживается. Если хотите продолжить использование данного API, свяжитесь с нами по адресу электронной почты [email protected]",
"userMessage": "Данный метод больше не поддерживается. Если хотите продолжить использование данного API, свяжитесь с нами по адресу электронной почты [email protected]",
"dateTime": "2022-09-09T14:22:50.811+03:00",
"traceId": "acf705d6f4dc5f72"
}
Я слышал, что у QIWI должны были произойти изменения, но ни на странице API https://developer.qiwi.com/en/bill-payments/?shell#create, ни в инструкции, которая мне пришла, я не нашёл ничего конкретного. Так же не вижу изменений в данной библиотеке, подскажите, стоит ли ждать обновлений или можно уже делать их своими силами?
А может я просто чего-то не понимаю и всё намного проще?
UPD
Дополню, по адресу [email protected] я связался, но пока мне ничего не ответили, решил написать ещё и тут.
Code sample from README.md
$billId = 'cc961e8d-d4d6-4f02-b737-2297e51fb48e';
$fields = [
'amount' => 1.00,
'currency' => 'RUB',
'comment' => 'test',
'expirationDateTime' => '2018-03-02T08:44:07+03:00',
'email' => '[email protected]',
'account' => 'client4563',
];
/** @var \Qiwi\Api\BillPayments $billPayments */
$response = $billPayments->createBill($billId, $fields);
print_r($response);
Response:
A PHP Error was encountered
Severity: Warning
Message: json_decode() expects parameter 1 to be string, object given
Filename: src/BillPayments.php
Line Number: 600
Actually the respond is correct and valid but it is not a string. To avoid any conflicts i replace
json_decode($this->internalCurl->response, true);
with
json_decode(json_encode($this->internalCurl->response), true);
I guess you would consider this solution barbarian so I'm not going to commit it.
If you try to send a comment in Cyrillic, then in response we will receive 400 errors (Bad request). Problem with function JSON_UNESCAPED_UNICODE parameter json_encode. Check out please.
bill-payments-php-sdk/src/BillPayments.php
Line 573 in b9deaea
Следую инстуркциям из документации https://developer.qiwi.com/ru/payments/#api-format -> Авторизация
Отправляю запрос через CURL для тестирования работы
curl -v -X PUT -H "Accept: application/json" \
-H "Authorization: Bearer c2af95eb-xxxx-xxxx-xxxx-29a34fa8d641" \
-H "Content-type: application/json" \
-H "Host: api.qiwi.com" \
-d '{ "amount":{"value":1.00,"currency":"RUB"}, "expirationDateTime":"2023-01-31T23:58:24+03:00", "comment":"f" }' \
https://api.qiwi.com/partner/payin/v1/sites/6jXXX-XX/bills/6452-43412-31
Получаю ответ
{"serviceName":"payin-core",
"errorCode":"auth.unauthorized",
"description":"Wrong authentication data",
"userMessage":"Wrong authentication data","dateTime":"2023-01-31T13:38:45.562324+03:00","traceId":"ff5a2742dca29a40"}
Следовательно до SDK дело даже не доходит потому что непонятно работает ли сам API qiwi . Ни один пример из документации не запустился.
При этом я пробовал в base64 переводить сам токен, т.к в примерах из документации он похож чем-то на base64.
При этом важный момент: заявка на подключении находится в статусе "На рассмотрении"
Может быть с этим связано странное поведение API?
Запрашиваю информацию о чеке и вылетает ошибка
PHP Fatal error: Uncaught Qiwi\Api\BillPaymentsException: HTTP/1.1 401 Unauthorized in /vendor/qiwi/bill-payments-php-sdk/src/BillPayments.php:592
Stack trace:
#0 /vendor/qiwi/bill-payments-php-sdk/src/BillPayments.php(487): Qiwi\Api\BillPayments->requestBuilder('640d989f-3a0f-4...')
#1 test.php(10): Qiwi\Api\BillPayments->getBillInfo('***')
#2 {main}
thrown in /vendor/qiwi/bill-payments-php-sdk/src/BillPayments.php on line 592
Код:
require 'vendor/autoload.php';
$publicKey = '***';
const SECRET_KEY = '***';
$billPayments = new Qiwi\Api\BillPayments(SECRET_KEY);
$billId = '**';
/** @var \Qiwi\Api\BillPayments $billPayments */
$response = $billPayments->getBillInfo($billId);
print_r($response);
Я создаю через $billPayments->createBill($billId, $params);
ссылку на оплату товара. После успешной оплаты, пользователя переводит на сайт site.domain/success.php
. (На сайте qiwi для уведомлений установлена эта ссылка).
Вопрос: Как получить данные о платеже после оплаты? Только через billId? Или же qiwi может сам после оплаты отправить данные на сайт?
-- Вывод headers после успешной оплаты --
Array
(
[connection] => keep-alive
[accept-encoding] => gzip, deflate
[accept-language] => ru
[user-agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6 Safari/605.1.15
[accept] => text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
[upgrade-insecure-requests] => 1
[host] => payment.sniffrx.ru
[content-length] =>
[content-type] =>
)
Fatal error: Uncaught Qiwi\Api\BillPaymentsException: HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1) in /var/www/html/lk/src/BillPayments.php:596 Stack trace: #0 /var/www/html/lk/src/BillPayments.php(484): Qiwi\Api\BillPayments->requestBuilder('cbb19a4a-eb84-4...') #1 /var/www/html/lk/proxy_pay_status.php(24): Qiwi\Api\BillPayments->getBillInfo('cbb19a4a-eb84-4...') #2 {main} thrown in /var/www/html/lk/src/BillPayments.php on line 596
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.