Example #1
0
 public function getTransaction(User $user, Product $product)
 {
     $orderId = uniqid();
     $queryParameters = array('uniqueId' => $orderId, 'user' => $user->getUsername());
     $transactionRedirectUrl = $this->router->generate('webservice.purchase.success', $queryParameters, UrlGeneratorInterface::ABSOLUTE_URL);
     $transactionCancelUrl = $this->router->generate('webservice.purchase.cancel', $queryParameters, UrlGeneratorInterface::ABSOLUTE_URL);
     $userInfo = json_decode($user->getUserInfoData());
     $productArray = array('name' => $product->getProductName(), 'price' => "MYR " . $product->getPricing(), 'vatRate' => (string) $product->getVatPercentage(), 'sku' => $product->getSku(), 'timeSpec' => $product->getTimeSpec());
     $parameters = array("orderId" => $orderId, "purchaseDescription" => "Product description", "amount" => "MYR " . $product->getPricing(), 'vatRate' => (string) $product->getVatPercentage(), 'merchantName' => $this->clientId, 'connectId' => $userInfo->sub, "successRedirect" => $transactionRedirectUrl, 'allowedPaymentMethods' => ['DOB'], 'cancelRedirect' => $transactionCancelUrl, "products" => [$productArray]);
     $parameterString = json_encode($parameters);
     $curl = curl_init();
     curl_setopt_array($curl, array(CURLOPT_URL => $this->getTransactionUrl(), CURLOPT_HTTPHEADER => $this->prepareHeaders(array(Headers::CONTENT_TYPE => MimeType::APPLICATION_JSON, Headers::ACCEPT => MimeType::APPLICATION_JSON, Headers::Content_Length => strlen($parameterString), Headers::AUTHORIZATION => "Bearer " . $this->getAccessToken($user))), CURLOPT_POSTFIELDS => $parameterString, CURLOPT_RETURNTRANSFER => true, CURLOPT_CONNECTTIMEOUT => 3, CURLOPT_TIMEOUT => 20, CURLOPT_POST => 1));
     $output = curl_exec($curl);
     curl_close($curl);
     return json_decode($output);
 }