BABER adlı üyeden alıntı:
mesajı görüntüle
Kafayı yiyeceğim nerde bu hata?? php uzmanlarını konuya davet ediyorum
23
●1.242
- 19-07-2024, 16:17:13slowy adlı üyeden alıntı: mesajı görüntüle
if ($status === "success") { try { $paymentInfoStmt = $vt->prepare("SELECT * FROM payments WHERE unique_id = ?"); $paymentInfoStmt->execute([$invoiceId]); $paymentInfo = $paymentInfoStmt->fetch(PDO::FETCH_OBJ); if ($paymentInfo) { $userDetailsStmt = $vt->prepare("SELECT * FROM users WHERE id = ?"); $userDetailsStmt->execute([$paymentInfo->user_id]); $userInfo = $userDetailsStmt->fetch(PDO::FETCH_OBJ); if ($userInfo) { // Update user balance $newBalance = $userInfo->balance + $paymentInfo->amount; $updateBalanceStmt = $vt->prepare("UPDATE users SET balance = ? WHERE id = ?"); $updateBalanceStmt->execute([$newBalance, $paymentInfo->user_id]); // Update payment status $updatePaymentStatusStmt = $vt->prepare("UPDATE payments SET status = ? WHERE id = ?"); $updatePaymentStatusStmt->execute([1, $paymentInfo->id]); echo "para eklendi"; } else { echo "Kullanıcı bulunamadı."; } } else { echo "Ödeme Hatası."; } } catch (PDOException $e) { echo "Veritabanı hatası: " . $e->getMessage(); } } else { echo "Ödeme Başarısız."; }Bu şekilde dener misiniz? Nedense r10'da kod düzgün gözükmüyor. - 19-07-2024, 16:23:27ödeme hatası dedi ama shopierde şipariş yansıdı hocam pardon vt ile ilgiliymiş ödeme hatası demesinin sebebiBABER adlı üyeden alıntı: mesajı görüntüle
- 19-07-2024, 16:27:11$invoiceId bu değişkeni global değişken yaparsak çozulurmu hocam cunku arasıra ustde olan bir değişken alt taraflarda hep 0 değerini veriyorBABER adlı üyeden alıntı: mesajı görüntüle
echo $invoiceId; yazdırınca hep 0 dönüyor - 19-07-2024, 16:42:03normalde order_id olarak ne gönderiyorsunuz? shopier_form_generation fonksiyonunuzda platform_order_id olarak ne yolluyorsunuz?slowy adlı üyeden alıntı: mesajı görüntüle
- 19-07-2024, 16:45:16buradaki ilk koddaki kişiye özel id paymente kayıt edilio bu id vt kontrol edince de gözüküyor zaten id parametresi ile gönderiyorum yanislowy adlı üyeden alıntı: mesajı görüntüle
BABER adlı üyeden alıntı: mesajı görüntüle - 19-07-2024, 18:11:26Kimlik doğrulama veya yönetimden onay bekliyor.Selamlar.slowy adlı üyeden alıntı: mesajı görüntüle
Callback url doğru yapılandırıldı mı her 2 tarafta? Bazen http-https protokolleri veya yazım hataları nedeniyle sıkıntı çıkabiliyor, örneğin shopier tarafında callback http ile başlıyor olabilir.
Shopier'dan gelen POST verilerini doğru şekilde aldığınızdan emin olun. Şu anda $_POST kullanıyorsunuz, ancak bazen bu veriler php://input üzerinden gelebilir. Şu şekilde kontrol edebilirsiniz:
$postData = json_decode(file_get_contents('php://input'), true); if (empty($postData)) { $postData = $_POST; }Callback fonksiyonunun çalışıp çalışmadığını anlamak için daha detaylı loglama yapabilirsiniz
file_put_contents('odeme_log.txt', date('Y-m-d H:i:s') . " - Callback çağrıldı\n", FILE_APPEND); file_put_contents('odeme_log.txt', print_r($postData, true) . "\n", FILE_APPEND);Veritabanı işlemlerinin başarılı olup olmadığını kontrol edin. Her sorgudan sonra hata kontrolü yapabilirsiniz:
$updateBalance = $vt->prepare("UPDATE users SET balance = ? WHERE id = ?"); if (!$updateBalance->execute([$newBalance, $paymentInfo->user_id])) { file_put_contents('odeme_log.txt', "Bakiye güncelleme hatası: " . print_r($updateBalance->errorInfo(), true) . "\n", FILE_APPEND); } - 19-07-2024, 18:16:51Sinyor_Ridak adlı üyeden alıntı: mesajı görüntüleproblem unique_id nin shopierde yani bu kod kısmında 'id' => $unique_id, yukardan gelememesiydi bunun nasıl cozebilirim GLOBALS ilemi global ilemi?BABER adlı üyeden alıntı: mesajı görüntüle
- 19-07-2024, 18:22:46Selamlar.slowy adlı üyeden alıntı: mesajı görüntüle
/panel/ode/[*:id] kısmını şu şekilde güncelleyin :
$unique_id = uniqid('payment_', true); $updateUnique = $vt->prepare("UPDATE payments SET unique_id = ? WHERE id = ?"); $updateUnique->execute([$unique_id, $id]);Shopier'a gönderilen id parametresini $unique_id olarak güncelleyin.
$shopier->setBuyer([ 'id' => $unique_id, // ... ]);Shopier'a gönderilen run metodunda da $unique_id kullanın :
die($shopier->run($unique_id, $data->amount, 'https://epins.com.tr/panel/callback/shopier'));
Callback fonksiyonunda, ödeme bilgisini unique_id ile sorgulayacak şekilde güncelleyin :
$paymentInfo = $vt->prepare("SELECT * FROM payments WHERE unique_id = ?"); $paymentInfo->execute([$invoiceId]);Duruma göre yazın bakalım.