| Current Path : /var/www/html/app/code/FlipsDigital/HktGateway/Helper/ |
| Current File : /var/www/html/app/code/FlipsDigital/HktGateway/Helper/OrderStatus.php |
<?php
namespace FlipsDigital\HktGateway\Helper;
use \Magento\Framework\App\Helper\AbstractHelper;
// use \FlipsDigital\HktGateway\Controller\Auth\Jwt;
class OrderStatus extends AbstractHelper
{
public function __construct(
\FlipsDigital\HktGateway\Controller\Auth\Jwt $jwtAuth,
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone,
\FlipsDigital\HktGateway\Model\PaymentLogFactory $paymentLogFactory
)
{
$this->_jwtAuth = $jwtAuth;
$this->_timezone = $timezone;
$this->_paymentLogFactory = $paymentLogFactory;
}
public function getStoreConfig()
{
return true;
}
public function alipayHK($transaction_id)
{
$transaction_status = 'PENDING';
$logData = [];
$logData['identifier'] = $transaction_id;
$app_id = '0068808214';
$app_secret = 'dbzhfkGI2f3eOlwsqxhEABz7z1sn7PB9A5YG4VrDA7OAeQvL3GVArnemYkOeSHgdT9hD2CGR/nJYPjvG3OPhyw==';
$api_url = 'https://gateway2.tapngo.com.hk/ePaymentGateway/alipayhk/transactions/orderStatus';
$data = $this->_apiRequestData($transaction_id);
$logData['request_data'] = json_encode($data);
$header = $this->_apiHeader($app_id, $app_secret);
$responseData = $this->_cURL($api_url, json_encode($data), $header);
$logData['response_data'] = $responseData;
$responseData = json_decode($responseData);
$api_status_code = $responseData->status;
if($api_status_code == 0){
// "COMPLETED", "FAILED", "PENDING"
$transaction_status = $this->_getTransactionStatus($responseData);
$logData['payment_status'] = $transaction_status;
}else{
$logData['payment_status'] = $api_status_code.': '.$responseData->message;
}
$this->_createPaymentLog($logData);
return $transaction_status;
}
public function alipayCN($transaction_id)
{
$transaction_status = 'PENDING';
$logData = [];
$logData['identifier'] = $transaction_id;
$app_id = '7841813081';
$app_secret = '/P6yAbskjS0K25fH6Om8kxkdVgqpJRaarxpXNOmNoTmfSqvwaO3A+e4i0xzrnxDBE/1Np7a1r14uTwzcgTnGQA==';
$api_url = 'https://gateway2.tapngo.com.hk/ePaymentGateway/alipaycn/transactions/orderStatus';
$data = $this->_apiRequestData($transaction_id);
$logData['request_data'] = json_encode($data);
$header = $this->_apiHeader($app_id, $app_secret);
$responseData = $this->_cURL($api_url, json_encode($data), $header);
$logData['response_data'] = $responseData;
$responseData = json_decode($responseData);
$api_status_code = $responseData->status;
if($api_status_code == 0){
// "COMPLETED", "FAILED", "PENDING"
$transaction_status = $this->_getTransactionStatus($responseData);
$logData['payment_status'] = $transaction_status;
}else{
$logData['payment_status'] = $api_status_code.': '.$responseData->message;
}
$this->_createPaymentLog($logData);
return $transaction_status;
}
public function visaMaster($transaction_id)
{
$transaction_status = 'PENDING';
$logData = [];
$logData['identifier'] = $transaction_id;
$app_id = '8198364860';
$app_secret = 'YX8chyKVNHYKN2u2AXMynVoQEpAvvqYL86wNNIoPOz9aAdKBCG96xg+n7x4VdHaTQiv/wSPIIRQmi9pQvK9SNg==';
$api_url = 'https://gateway2.tapngo.com.hk/ePaymentGateway/visamastercard/v2/transactions/orderStatus';
$data = $this->_apiRequestData($transaction_id);
$logData['request_data'] = json_encode($data);
$header = $this->_apiHeader($app_id, $app_secret);
$responseData = $this->_cURL($api_url, json_encode($data), $header);
$logData['response_data'] = $responseData;
$responseData = json_decode($responseData);
$api_status_code = $responseData->status;
if($api_status_code == 0){
// "TEMPLATE", "CAPTURED", "DECLINED", "FAILED"
if(isset($responseData->payload->transactions[1]->transactionState)){
$transaction_status = $responseData->payload->transactions[1]->transactionState;
}else{
if(strtotime($responseData->payload->transactions[0]->paymentUrlExpireTimestamp) < time()){
$transaction_status = 'FAILED';
}
}
$logData['payment_status'] = $transaction_status;
}else{
$logData['payment_status'] = $api_status_code.': '.$responseData->message;
}
$this->_createPaymentLog($logData);
return $transaction_status;
}
public function wechatpay($transaction_id)
{
$transaction_status = 'PENDING';
$logData = [];
$logData['identifier'] = $transaction_id;
$app_id = '2516279849';
$app_secret = 'CpswD/217CJqvCmaZqKpOkwhh4SyU0wlZX6OaW45tuC0gOro57RnMDu8LpBO9ma/v0ppmWEN8VtKrCmGOUIbSg==';
$api_url = 'https://gateway2.tapngo.com.hk/ePaymentGateway/wechatpay/transactions/orderStatus';
$data = $this->_apiRequestData($transaction_id);
$logData['request_data'] = json_encode($data);
$header = $this->_apiHeader($app_id, $app_secret);
$responseData = $this->_cURL($api_url, json_encode($data), $header);
$logData['response_data'] = $responseData;
$responseData = json_decode($responseData);
$api_status_code = $responseData->status;
if($api_status_code == 0){
// "COMPLETED", "FAILED", "PENDING"
$transaction_status = $this->_getTransactionStatus($responseData);
$logData['payment_status'] = $transaction_status;
}else{
$logData['payment_status'] = $api_status_code.': '.$responseData->message;
}
$this->_createPaymentLog($logData);
return $transaction_status;
}
public function tapngo($transaction_id)
{
// Production - support FPS
$app_id = '6298738225';
$app_secret = 'EJb+j4zUZyxAG6WgS3rbbbLErJUAUh++idbTygD1BTS8IoxFSXOcxGvh3Efg5QVx+VkKSXHV5ZFHb4viIkkD4w==';
$api_url = 'https://gateway2.tapngo.com.hk/paymentApi/payment/status';
// UAT
// $app_id = '4278527199';
// $app_secret = '4qt3IzuyeTiznf8A8vG8zkvS+K/24YqLjmtIVI+hYXpCfqYau8kuzw/I2zwxay0K83ihsAwa9CinqnZlhwO/wg==';
// $api_url = 'https://gateway.sandbox.tapngo.com.hk/paymentApi/payment/status';
$logData = [];
$logData['identifier'] = $transaction_id;
$time = time()*1000;
$queryStr = 'appId='.$app_id.'&merTradeNo='.$transaction_id.'×tamp='.$time;
$sign = hash_hmac('sha512', $queryStr, $app_secret, true);
$data = [
'appId' => $app_id,
'merTradeNo' => $transaction_id,
'timestamp' => $time,
'sign' => base64_encode($sign),
];
$header = [
'Content-Type: application/x-www-form-urlencoded',
'Accept: application/json',
];
$logData['request_data'] = http_build_query($data);
$responseData = $this->_cURL($api_url, http_build_query($data), $header);
$logData['response_data'] = $responseData;
$responseData = json_decode($this->_cURL($api_url, http_build_query($data), $header));
$api_status_code = $responseData->content->resultCode;
if($api_status_code == 0){
// TRADE_FINISHED – payment success, TRADE_CLOSED – payment cancelled / failed, WAIT_TO_PAY – payment is processing
$transaction_status = $responseData->content->payload->tradeStatus;
}else{
$transaction_status = 'FAILED';
}
$logData['payment_status'] = $transaction_status;
$this->_createPaymentLog($logData);
return $transaction_status;
}
protected function _cURL($api_url, $data, $header)
{
$ch = curl_init();
$options = [
CURLOPT_URL => $api_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => $header
];
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
protected function _apiHeader($app_id, $app_secret)
{
$payload = [
"sub" => $app_id,
"iat" => time()
];
$token = $this->_jwtAuth->getToken($payload, $app_secret);
$authorization = "Authorization: Bearer ".$token;
$header = [
'Content-Type: application/json',
$authorization,
];
return $header;
}
protected function _apiRequestData($transaction_id)
{
$data = [
'merchantTransactionId' => $transaction_id,
];
return $data;
}
protected function _getTransactionStatus($responseData)
{
if(isset($responseData->payload->transactions[0]->transactionState)){
$transaction_status = $responseData->payload->transactions[0]->transactionState;
}else{
$transaction_status = 'FAILED';
}
return $transaction_status;
}
protected function _createPaymentLog($logData)
{
$logData['create_at'] = $this->_timezone->date()->format('Y-m-d H:i:s');
$objPaymentLog = $this->_paymentLogFactory->create();
$objPaymentLog->setData($logData);
$objPaymentLog->save();
}
}