포인트가 db에 저장이 안되는 문제

포인트가 db에 저장이 안되는 문제

QA

포인트가 db에 저장이 안되는 문제

답변 2

본문

안녕하세요.

광고를 포인트로 결제하는 소스인데, 그누보드의 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);

 

thumb-978180634_1724718216.7329_730x414.png

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

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

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

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 2,662
© SIRSOFT
현재 페이지 제일 처음으로