Markette\Gopay – volba platebního kanálu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kejlicz
Člen | 201
+
0
-

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

blaztar
Člen | 93
+
+1
-

To specifikuj v té property chennel ne?

V konfigu bych měl povolené ty povolené platby. A pak podle toho co potřebuješ použiješ správný chennel dané platby.

Editoval blaztar (21. 12. 2016 15:20)

Felix
Nette Core | 1247
+
+1
-

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.

kejlicz
Člen | 201
+
0
-

Myslel jsem, že stačí mít povolené ty platby na straně GP. Když jsem ty kanály ještě dopsal do configu, už to funguje.

Díky

Editoval kejlicz (21. 12. 2016 13:32)

blaztar
Člen | 93
+
0
-

kejlicz napsal(a):

Myslel jsem, že stačí mít povolené ty platby na straně GP. Když jsem ty kanály ještě dopsal do configu, už to funguje.

Díky

Taky jsem se u toho napoprvé zasekl.

kejlicz
Člen | 201
+
0
-

Teď už mi tedy funguje když vyberu konkrétní platební kanál. Je ale nějak možné, povolit třeba 2 kanály (karta, převod), když jich mám celkově dostupných víc, aby si uživatel vybral až na straně GP pouze mezi těmito dvěma?