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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
포인트가 db에 저장이 안되는 문제

QA

포인트가 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);

 

thumb-978180634_1724718216.7329_730x414.png

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

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

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

 

답변을 작성하시기 전에 로그인 해주세요.
전체 1,284
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT