Markette\Gopay – volba platebního kanálu
- kejlicz
- Člen | 201
Ahoj všichni.
Poprvé zprovozňuji GP pomocí Markette\Gopay. Mám tuto metodu, na kterou přesměruji po vyplnění formuláře, kde si uživatel nakliká o co má zájem. Je to poupravený ukázkový presenter z dokumentace.
public function actionPay($id = NULL, $channel)
{
if (is_null($id)) {
$this->flashMessage("Chyba platební brány", "danger");
$this->redirect("PublicAdvert:list");
}
$this->paymentService->setSuccessUrl($this->link('//success', ['orderId' => $id]));
$this->paymentService->setFailureUrl($this->link('//failure', ['orderId' => $id]));
/** @var \App\Entities\Advert $order */
$order = $this->em->getRepository(\App\Entities\Advert::class)->findOneBy(["id" => $id, "user" => $this->dbUser]);
if(is_null($order))
{
$this->flashMessage("Chybný inzerát pro topování", "danger");
$this->redirect("PublicAdvert:list");
}
$customer = [
'firstName' => $order->getContactName(),
'email' => $order->getContactEmail(),
];
$payment = $this->paymentService->createPayment([
'sum' => \Services\System::getPayTypePrice($order->getPayType()),
'variable' => $order->getId(),
'specific' => "",
'productName' => \Services\System::printPayType($order->getPayType()) . " id " . $order->getId(),
'customer' => $customer,
]);
$em = $this->em;
$storePaymentId = function ($paymentId) use ($order, $em) {
$order->setPaymentSessionId($paymentId);
$em->flush();
};
$toPayResponse = $this->paymentService->pay($payment, $channel, $storePaymentId);
$this->sendResponse($toPayResponse);
}
Testovací platby fungují, ale potřeboval bych přímo určit, jaký se má použít platební kanál. Na stránce GP mi to nabízí ty, které mám u nich povolené. Jenže já potřebuji, na základě dat z toho původního formuláře, povolit pouze buďto bankovní převod, kartu nebo v druhém případě Premium SMS.
Zaboha nemůžu přijít na to, jak si v tomto kódu vynutit určité platební kanály.
Díky moc za pomoc.
Martin
- Felix
- Nette Core | 1247
Ahoj,
posilas spravny channel?
Doporucuju spise pouzivat novou branu Markette/GopayInline, ktera komunikuje primo pres REST. U teto stare brany si nejsem jisty, jestli se neco nezmenilo na gopay strane. Zkus napsat primo jim, proc neni vybrana konkretni platba, vetsinou mi poradili rychle a dobre.