pay-now / paynow-php-sdk Goto Github PK
View Code? Open in Web Editor NEWPHP Library for Paynow API
Home Page: https://docs.paynow.pl
License: MIT License
PHP Library for Paynow API
Home Page: https://docs.paynow.pl
License: MIT License
This package is requiring curl-client in version ^1.7
This is old version, conflicting with i.e. php-http/httplug-bundle
Please update dependency to version ^2.x
Cześć,
Mam dla Was przyszłościową opcję bez której w sumie nie mogę Was teraz zintegrować :)
Mam platformę, na której ludzie mogą tworzyć własne sklepy pod własnym adresem URL (!!), w których są 4 rodzaje produktów, które mają osobne skrypty do otrzymywania powiadomień o płatności.
W takim razie każdy sklep ma 4 różne możliwe adresy URL do otrzymywania powiadomień o płatności - u Was jest opcja wpisania jednego adresu notyfikacji i to tylko w ustawieniach konta :) potrzebuję opcji w której mogę Wam przekazać adres do dostarczenia mi notyfikacji poprzez API.
Inne serwisy takie jak Paypal, Tpay, PayU, Dotpay, Przelewy24, Hotpay mają zintegrowany formularz z opcjonalną zmienną typu „notification_url” podczas tworzenia transakcji, gdzie przesyłają status transakcji - jak widać nie jest to głupio wymyślona opcja przeze mnie :) ale stosowana od dawna przez innych.
Możecie to wdrożyć jak najszybciej?
Pozdrawiam
Hello,
I'm integrating Paynow with Laravel 9 project / PHP 7.4.
public function availablePaymentMethods()
{
$client = new Client(config('paynow.api_key'), config('paynow.signature_key'), Environment::SANDBOX);
try {
$payment = new Payment($client);
$paymentMethods = $payment->getPaymentMethods();
$availablePaymentMethods = $paymentMethods->getAll();
return response()->json($availablePaymentMethods);
} catch (PaynowException $exception) {
return response()->json('Error occurred', 400);
}
}
API returns 200, but it's content is only empty elements:
[
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{},
{}
]
Http Client:
httpClient: Paynow\HttpClient\HttpClient {#499 ▼
#client: Symfony\Component\HttpClient\Psr18Client {#503 ▼
-client: Symfony\Component\HttpClient\CurlHttpClient {#506 ▶}
-responseFactory: Nyholm\Psr7\Factory\Psr17Factory {#504}
-streamFactory: Nyholm\Psr7\Factory\Psr17Factory {#505}
}
API should allow to override notification url set in panel, same as it allows to override return_url
It would simplify clients workflow in end applications - there would be no need to instruct user to put in proper notification url in panel.
Gdy podaje amount zawierający grosze to nie działa. Bardzo proszę o pomoc.
Podaje kwotę: 101.21
$exception->getErrors() zwraca błąd:
[0] => Paynow\Exception\Error Object
(
[type:Paynow\Exception\Error:private] => VALIDATION_ERROR
[message:Paynow\Exception\Error:private] => amount: invalid numeric value: 101.2099999999999937472239253111183643341064453125
)
Deklaracja parametru metody wygląda w ten sposób:
/**
* @var PaymentMethod[]
*/
private $list;
A getter dla tego parametru wygląda tak:
/**
* Retrieve all available payment methods
*
* @return PaymentMethod[]
*/
public function getAll()
{
return $this->list;
}
Jest to jednak zbyt optymistyczne podejście...
Konstruktor klasy wygląda tak:
public function __construct($body)
{
if (! empty($body)) {
foreach ($body as $group) {
if (! empty($group->paymentMethods)) {
foreach ($group->paymentMethods as $item) {
$this->list[] = new PaymentMethod(
$item->id,
$group->type,
$item->name,
$item->description,
$item->image,
$item->status,
$item->authorizationType ?? null
);
}
}
}
}
}
Istnieje więc szansa, że zmienna $body
lub $group->paymentMethods
będzie pusta, więc w rezultacie nie dojdziemy nawet do wypełnienia $this->list
.
Rozwiązanie:
Zmienić deklarację parametru na taką:
private array $list = [];
Swoją drogą, kiedy przejście kodem na PHP 8.2?
Scenariusz pozytywny
Scenariusz problematyczny
Na początku utrzymujemy paymentId XXX-XX-XX-XX (przykład) następnie podczas podnoszenia płatności w bramce (poza sklepem) tworzona jest nowa sesja YYY-YY-YY-YY. ?paymentId=YYY-YY-YY-YY&paymentStatus=CONFIRMED. Do czego podpiąć YYY-YY-YY-YY my nie mamy informacji jakiej transakcji to dotyczy.
Jak wykonać zwrot kiedy to też bazuje na paymentId? My mamy informacje o XXX-XX-XX-XX a nie o YYY-YY-YY-YY
Rozwiązanie kiedy ktoś musi łączyć wpłaty logując się do panelu jest słabe.
STR:
W odpowiedzi przychodzi pusty obiekt, czyli redirectUrl/paymentId/status są null - a to powoduje błąd:
TypeError: Return value of Paynow\Response\Payment\Authorize::getPaymentId() must be of the type string, null returned
Paynow\Response\Payment\Authorize::getPaymentId(), line 34
Teoretycznie dokumentacja nie przewiduje takiej odpowiedzi, ale myślę, że warto, żeby paynow-php-sdk uwzględniało ten przypadek i np. wyrzucało jakiś wyjątek
(przy okazji w Payment.php jest literówka: $decpdedApiResponse
)
Cześć,
chciałem zrobić integracje na swoim stronie z formularzem kontaktowym, aby można było wykonywać określone płatności. Aktualnie utknąłem na błędzie z wykonaniem Requestu.
Obliczyłem signaturekey oraz wpisałem apikey - wszystkie z konta sandboxowego. Jednak na stronie po walce z tym wszystkim wychodzi
Fatal error: Uncaught Paynow\Exception\PaynowException: Error occurred during processing request in /usr/home/olszowkapokoje/domains/dev.olszowkapokoje.com.pl/public_html/vendor/pay-now/paynow-php-sdk/src/Paynow/Service/Payment.php:32 Stack trace: #0 /usr/home/olszowkapokoje/domains/dev.olszowkapokoje.com.pl/public_html/index.php(35): Paynow\Service\Payment->authorize(Array, '15df79791cde568...') #1 {main} thrown in /usr/home/olszowkapokoje/domains/dev.olszowkapokoje.com.pl/public_html/vendor/pay-now/paynow-php-sdk/src/Paynow/Service/Payment.php on line 32
Co mogę robić nie tak?
Hi
We are looking for an experienced developer who can integrate paynow payment system on our webiste build on php.
Do contact me here or send an email at [email protected].
Many thanks
Czy jest w planach integracja z biblioteką Omnipay?
Dear PayNow,
I've tried to use your Refund Service, but it looks like there is an API error.
The underlying HTTP request in the create function returns null.
How to replicate it?
$refund = new Refund(new Client($this->config['key'], $this->config['signature'], $this->config['environment']));
$response = $refund->create('R3FU-UND-D8K-WZD', '5e3b80f7-c48c-429c-9686-ddba817e8231', 1000, 'RMA');
Expected output:
The Status object
Próbuję dokonać zwrotu środków, ale podczas wywoływania metody create
na obiekcie klasy Refund
otrzymuję poniższy błąd:
( ! ) Fatal error: Uncaught TypeError: Return value of Paynow\Response\Refund\Status::getStatus() must be of the type string, null returned in /home/pfilipek/homewww/omnipay-paynow/vendor/pay-now/paynow-php-sdk/src/Paynow/Response/Refund/Status.php on line 28
( ! ) TypeError: Return value of Paynow\Response\Refund\Status::getStatus() must be of the type string, null returned in /home/pfilipek/homewww/omnipay-paynow/vendor/pay-now/paynow-php-sdk/src/Paynow/Response/Refund/Status.php on line 28
Poniżej fagment kodu, który próbuję wywołać:
$client = new Client('api_key', 'signature_key', Environment::SANDBOX);
$refund = new Refund($client);
$result = $refund->create(
'NOHH-7I9-BJM-7DU',
'61379fb47c049',
200,
'OTHER'
);
Sprawdziłem w vendorze i faktycznie, z klienta HTTP faktycznie nie dostajemy żadnej odpowiedzi. Brzmi to trochę jak problem z API, a nie z samą biblioteką.
Przy próbie pobrania statusu płatności dostaję błąd:
Fatal error: Uncaught Paynow\Exception\PaynowException: Error occurred during processing request in D:\Bank danych\Projekty WWW\Payments\vendor\pay-now\paynow-php-sdk\src\Paynow\Service\Payment.php on line 53
Mój kod poniżej:
require __DIR__ . '/vendor/autoload.php';
if(isset($_GET['paymentId']) && isset($_GET['paymentStatus'])) {
$client = new \Paynow\Client('XXX', 'XXX', 'sandbox');
try {
$paymentID = $_GET['paymentId'];
$payment = new \Paynow\Service\Payment($client);
$result = $payment->status($paymentID);
var_dump($result);
} catch (PaynowException $exception) {
var_dump($exception->getErrors());
}
}
Klucze i sygnatury są prawidłowe.
class Payment extends Service
{
/**
* @return ApiResponse
*/
public function authorize(array $data, $idempotencyKey = null)
{
try {
return $this->getClient()
->getHttpClient()
->post(
Configuration::API_VERSION.'/payments',
$data,
$idempotencyKey ? $idempotencyKey : $data['externalId']
)
->decode();
Powyższy kod zwraca zdekodowanego JSONa a nie ApiResponse tak jak jest w phpdoc
Kiedy zacznie działać ?
Ta witryna jest nieosiągalnaNie udało się znaleźć adresu IP serwera ze stroną rrev.online.mbank.pl.
DNS_PROBE_FINISHED_NXDOMAIN
Witam mam problem z koncepcja Państwa płatności, a [email protected] niestety NIE RACZY opowiadać!
Zatem o co mi chodzi - W systemie przeley24, PayPal itd... w celu zainicjowania płatności = obsłużenia wysyłamy dane POST z formularza w którym may klienta, za co płaci, cenę itd...
<form action="https://sandbox.przelewy24.pl/trnDirect" method="post" class="form" id="formplatonline">
<input type="text" name="p24_session_id" value="<?php echo $p24_session_id;?>">
<input type="text" name="p24_merchant_id" value="<?php echo $p24_merchant_id;?>">
<input type="text" name="p24_pos_id" value="<?php echo $p24_merchant_id;?>">
<input type="text" name="p24_amount" value="<?php echo $p24_amount;?>">
ITD....
<input type="submit" value="go" />
</form>
ITD.... Wysłanie formularza przenosi do systemu transakcyjnego na stronę wyboru banku itd...
Drugim etapem jest mechanizm odbioru płatności ale to się dzieje w tle.
Wiec pytanie brzmi jak to samo zrealizować u Was paynow.pl ?
W dokumentacji nie znajduje nic o analogicznym formularzu ?
W README mamy opisane jak używać notyfikacji przy pomocy SDK, ale w dokumentacji nie ma nawet słowa co taka notyfikacja zwraca, w jakim formacie itd. Jest tylko opisane jak zmienić adres do notyfikacji.
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.