https://github.com/yasinkuyu/omnipay-paycell böyle bir paket buldum ama bu paket direk kullanılabilir mi acaba emin olamadım zamanım kısa oldukça.
Bu paket olmaz ise başka öneriniz varsa alabilirim
Bir de register Card için böyle bir fonksiyonum var ama her istek attığım da
Bu hata dönüyor
array:6 [ // app\Http\Controllers\PaymentController.php:266
"header" => array:4 [
"applicationName" => "PAYCELLTEST"
"transactionId" => "66c895eb096480228227"
"transactionDateTime" => "20240823140011038"
"secureCode" => "PAYCELL12345"
]
"creditCardNo" => "4355084355084358"
"expireDateMonth" => "12"
"expireDateYear" => "26"
"cvcNo" => "000"
"hashData" => "rz32p7RvSASVcIRAuNfmHGauHxyiTiHaCA2orv3HZBo="
]
array:3 [ // app\Http\Controllers\PaymentController.php:269
"header" => array:4 [
"responseCode" => "90063"
"responseDateTime" => null
"responseDescription" => "Input degerleri dogrulanamadi"
"transactionId" => null
]
"cardToken" => null
"hashData" => null
]
public function getCardTokenSecure(Request $req)
{
$applicationName = strtoupper('PAYCELLTEST');
$transactionId = substr(str_replace('.', '', uniqid('', true)), 0, 20); // Maksimum 20 karakter
$transactionDateTime = now()->format('YmdHisv');
$secureCode = strtoupper('PAYCELL12345');
$applicationPassword = strtoupper('PaycellTestPassword');
// Kart numarası kontrolü
$creditCardNo = str_replace(' ', '', $req->creditCardNo);
if (!is_numeric($creditCardNo) || strlen($creditCardNo) != 16) {
return response()->json(['status' => 'error', 'message' => 'Invalid credit card format.'], 400);
}
// SecurityData oluşturulması (ApplicationPwd + ApplicationName)
$securityData = base64_encode(hash('sha256', $applicationPassword . $applicationName, true));
// HashData oluşturulması (ApplicationName + TransactionId + TransactionDateTime + SecureCode + SecurityData)
$hashDataString = $applicationName . $transactionId . $transactionDateTime . $secureCode . strtoupper($securityData);
$hashData = base64_encode(hash('sha256', $hashDataString, true));
// Request Header
$requestHeader = [
'applicationName' => $applicationName,
'transactionId' => $transactionId,
'transactionDateTime' => $transactionDateTime,
'secureCode' => $secureCode,
];
// Kart bilgileri ve hashData
$requestData = [
'header' => $requestHeader,
'creditCardNo' => $creditCardNo,
'expireDateMonth' => $req->expireDateMonth,
'expireDateYear' => $req->expireDateYear,
'cvcNo' => $req->cvcNo,
'hashData' => $hashData,
];
$response = $this->sendPaycellRequest('getCardTokenSecure', $requestData);
dd($response); // Yanıtı kontrol etmek için
if ($response && isset($response['cardToken'])) {
return response()->json(['status' => 'success', 'card_token' => $response['cardToken']]);
} else {
return response()->json(['status' => 'error', 'message' => $response['responseDescription'] ?? 'Unknown error'], 400);
}
}
private function sendPaycellRequest($endpoint, $data)
{
$url = 'https://omccstb.turkcell.com.tr/paymentmanagement/rest/' . $endpoint;
$client = new \GuzzleHttp\Client();
try {
$response = $client->post($url, [
'json' => $data,
]);
return json_decode($response->getBody()->getContents(), true);
} catch (\Exception $e) {
return ['status' => 'error', 'responseDescription' => $e->getMessage()];
}
}