테스트 사이트 - 개발 중인 베타 버전입니다

포인트가 db에 저장이 안되는 문제 채택완료

codezero 1년 전 조회 15,527

안녕하세요.

광고를 포인트로 결제하는 소스인데, 그누보드의 insert_point 함수를 사용해서 결제한 포인트와 결제후 남은 포인트를 각각 g5_point 테이블에 업데이트하고 g5_member 테이블의 mb_point 에 저장하려고 합니다.

그런데 소스가 잘못돼서 그렇겠지만 db 저장이 안됩니다.

며칠째 끙끙거리는데 제 실력으로는 도저히 모르겠어요.

도와주시면 정말 감사하겠습니다.

아래는 서버측 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() {             alert('회원만 이용하실 수 있습니다.');         return;    

    const totalSale = parseInt(totalSaleElem.textContent.replace(/[^0-9]/g, ''));     const memberPoint = ;

    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개

채택된 답변
+20 포인트
1년 전

insert_point 함수 사용법이 틀려서 그렇습니다.

 

아래 처럼 변경 하세요

 

</p>

<p>$result = insert_point($mb_id, $totalSale * (-1), '광고구입', 'advertisement', $mb_id, '광고구입', G5_TIME_YMDHIS);</p>

<p>

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

c
codezero
1년 전
감사합니다. 덕분에 해결했습니다. 좋은 하루되세요.

댓글을 작성하려면 로그인이 필요합니다.

M
1년 전

클라언트측에서 전송하는 내용이 서버로 들어오는지부터 체크를 하셔야 할듯 합니다.

서버단은 큰 문제가 없어보여서요.

앞쪽에서 데이터 들어오는거에 대한 로그 테이블을 하나 만들고 잘 들어오는지를 체크해보셔야 할듯 합니다.

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

c
codezero
1년 전
답변 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인