포인트가 db에 저장이 안되는 문제
본문
안녕하세요.
광고를 포인트로 결제하는 소스인데, 그누보드의 insert_point 함수를 사용해서 결제한 포인트와 결제후 남은 포인트를 각각 g5_point 테이블에 업데이트하고 g5_member 테이블의 mb_point 에 저장하려고 합니다.
그런데 소스가 잘못돼서 그렇겠지만 db 저장이 안됩니다.
며칠째 끙끙거리는데 제 실력으로는 도저히 모르겠어요.
도와주시면 정말 감사하겠습니다.
아래는 서버측 php
<?php
include_once('../../../../common.php');
if ($is_guest) {
alert_close('회원만 이용하실 수 있습니다.');
}
error_reporting(E_ALL);
ini_set('display_errors', 1);
$totalSale = isset($_POST['totalSale']) ? (int) $_POST['totalSale'] : 0;
$remainingPoints = isset($_POST['remainingPoints']) ? (int) $_POST['remainingPoints'] : 0;
$mb_id = $member['mb_id'];
// 포인트 사용 및 결제 처리
try {
// 포인트를 차감하기 위해 insert_point 함수를 사용
$result = insert_point($mb_id, -$totalSale, '광고구입', 'advertisement', $mb_id, '광고구입');
if ($result > 0) {
echo 'success';
} else {
throw new Exception('포인트 차감 실패');
}
} catch (Exception $e) {
echo '오류: ' . $e->getMessage();
}
그리고 다음은 클라이언트측 소스의 자바 스크립트 일부분입니다.
function processPayment() {
<?php if (!$is_member) { ?>
alert('회원만 이용하실 수 있습니다.');
return;
<?php } ?>
const totalSale = parseInt(totalSaleElem.textContent.replace(/[^0-9]/g, ''));
const memberPoint = <?php echo (int)$member['mb_point']; ?>;
if (totalSale > memberPoint) {
const shortage = totalSale - memberPoint;
alert(`${shortage.toLocaleString()} points가 부족합니다. 충전하시겠습니까?`);
} else {
if (confirm(`${totalSale.toLocaleString()} points를 결제하시겠습니까?`)) {
const remainingPoints = memberPoint - totalSale;
// 포인트 결제 처리 및 업데이트
const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://hoju-korean.com/theme/eb4_comm_004/skin/board/pricing/process_payment.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
alert(`${totalSale.toLocaleString()} points가 결제되었습니다. 남은 포인트는 ${remainingPoints.toLocaleString()} points입니다. 광고요청페이지로 이동하시겠습니까?`);
window.location.href = 'https://hoju-korean.com/bbs/write.php?bo_table=request_ad';
} else {
alert('결제 처리 중 오류가 발생했습니다: ' + xhr.responseText);
}
}
};
xhr.send(`totalSale=${totalSale}&remainingPoints=${remainingPoints}`);
}
}
}
답변 2
insert_point 함수 사용법이 틀려서 그렇습니다.
아래 처럼 변경 하세요
$result = insert_point($mb_id, $totalSale * (-1), '광고구입', 'advertisement', $mb_id, '광고구입', G5_TIME_YMDHIS);
!-->
클라언트측에서 전송하는 내용이 서버로 들어오는지부터 체크를 하셔야 할듯 합니다.
서버단은 큰 문제가 없어보여서요.
앞쪽에서 데이터 들어오는거에 대한 로그 테이블을 하나 만들고 잘 들어오는지를 체크해보셔야 할듯 합니다.