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

DB의 주문번호와 나이스페이의 실제 주문번호가 다르게 적용됩니다. 채택완료

scgisdas 11개월 전 조회 1,270

신용카드 PG 결제사로 나이스페이를 사용하고 있습니다.

신용카드 결제 시 주문번호가 g5_shop_order와 g5_shop_cart에 잘저장됩니다.

그리고 영카트의 신용카드 취소 기능을 통해 결제취소를 하려고 할 때 부분취소가 아닌 전체 취소를 하라는 오류 메시지가 나옵니다.

그리고 나이스페이 결제사에서 직접 결제내역을 확인해보니 DB에 저장한 주문번호(od_id_와 결제사에 등록되어있는 주문번호가 다르다는것을 확인했습니다.

(DB 주문번호: 2024111810012865, 실제 주문번호: 2024111810002673)

 

제가 예전에 결제 관련 코드를 수정을 했었는데 당시에는 테스트에 문제가 없었습니다.

아래는 제가 수정했던 소스코드의 일부입니다. (여러 종류의 상품 주문 시 개별 주문건으로 분리하는 코드)

 

</p>

<p>// orderformupdate.php</p>

<p>// 각각의 상품별로 주문서를 따로 저장해야함</p>

<p>// shop_cart 테이블의 담긴 상품정보들을 가져오기</p>

<p>$sql = "SELECT * FROM {$g5['g5_shop_cart_table']} WHERE od_id='$tmp_cart_id'";</p>

<p>$result = sql_query($sql);</p>

<p> </p>

<p>// 장바구니에 담긴 각 상품에 대해 개별 주문을 생성</p>

<p>for ($i = 0; $row = sql_fetch_array($result); $i++) {</p>

<p>    // 각각의 상품마다 주문 번호를 생성</p>

<p>    $od_id = get_uniqid();</p>

<p> </p>

<p>    // 초기화하여 각 상품마다 적절히 처리되도록 함</p>

<p>    $current_dday = $dday;</p>

<p> </p>

<p>    // 주문서에 입력</p>

<p>   $sql = "INSERT INTO {$g5['g5_shop_order_table']}</p>

<p>            SET od_id             = '$od_id',</p>

<p>                mb_id             = '{$member['mb_id']}',</p>

<p>                od_pwd            = '$od_pwd',</p>

<p>                od_name           = '$od_name',</p>

<p>                od_email          = '$od_email',</p>

<p>                od_tel            = '$od_tel',</p>

<p>                od_hp             = '$od_hp',</p>

<p>                od_zip1           = '$od_zip1',</p>

<p>                od_zip2           = '$od_zip2',</p>

<p>                od_addr1          = '$od_addr1',</p>

<p>                od_addr2          = '$od_addr2',</p>

<p>                od_addr3          = '$od_addr3',</p>

<p>                od_addr_jibeon    = '$od_addr_jibeon',</p>

<p>                od_b_name         = '$od_b_name',</p>

<p>                od_b_tel          = '$od_b_tel',</p>

<p>                od_b_hp           = '$od_b_hp',</p>

<p>                od_b_zip1         = '$od_b_zip1',</p>

<p>                od_b_zip2         = '$od_b_zip2',</p>

<p>                od_b_addr1        = '$od_b_addr1',</p>

<p>                od_b_addr2        = '$od_b_addr2',</p>

<p>                od_b_addr3        = '$od_b_addr3',</p>

<p>                od_b_addr_jibeon  = '$od_b_addr_jibeon',</p>

<p>                od_deposit_name   = '$od_deposit_name',</p>

<p>                od_memo           = '$od_memo',</p>

<p>                od_cart_count     = 1,  </p>

<p>                od_cart_price     = '" . ($row['ct_price'] * $row['ct_qty']) . "',  </p>

<p>                od_cart_coupon    = '{$row['ct_coupon']}',  </p>

<p>                od_send_cost      = '$i_send_cost',</p>

<p>                od_send_coupon    = '$tot_sc_cp_price',</p>

<p>                od_send_cost2     = '$i_send_cost2',</p>

<p>                od_coupon         = '$tot_od_cp_price',</p>

<p>                od_receipt_price  = '" . ($row['ct_price'] * $row['ct_qty']) . "',  </p>

<p>                od_receipt_point  = '$od_receipt_point',</p>

<p>                od_bank_account   = '$od_bank_account',</p>

<p>                od_receipt_time   = '$od_receipt_time',</p>

<p>                od_misu           = '$od_misu',</p>

<p>                od_pg             = '$od_pg',</p>

<p>                od_tno            = '$od_tno',</p>

<p>                od_app_no         = '$od_app_no',</p>

<p>                od_escrow         = '$od_escrow',</p>

<p>                od_tax_flag       = '$od_tax_flag',</p>

<p>                od_tax_mny        = '$od_tax_mny',</p>

<p>                od_vat_mny        = '$od_vat_mny',</p>

<p>                od_free_mny       = '$od_free_mny',</p>

<p>                od_status         = '$od_status',</p>

<p>                od_shop_memo      = '',</p>

<p>                od_hope_date      = '$od_hope_date',</p>

<p>                od_time           = '".G5_TIME_YMDHIS."',</p>

<p>                od_ip             = '$REMOTE_ADDR',</p>

<p>                od_settle_case    = '$od_settle_case',</p>

<p>                od_other_pay_type = '$od_other_pay_type',</p>

<p>                od_test           = '{$default['de_card_test']}',</p>

<p>                it_names          = '{$row['it_name']}',</p>

<p>                dday              = '$current_dday'";</p>

<p> </p>

<p>    // 각 상품에 대해 개별적으로 insert</p>

<p>    sql_query($sql, false);</p>

<p> </p>

<p>    // 장바구니에 주문 번호 업데이트</p>

<p>    $update_sql = "UPDATE {$g5['g5_shop_cart_table']}</p>

<p>                   SET od_id = '$od_id',</p>

<p>                          ct_status = '주문'</p>

<p>                   WHERE ct_id = '{$row['ct_id']}'";</p>

<p>    sql_query($update_sql);</p>

<p>}</p>

<p> </p>

<p>

 

혹시 위 코드에서 각 상품에 대한 주문번호(od_id)를 새로 생성하는 부분때문에 이러한 문제가 생기는 걸까요?

그렇다면 어떤 식으로 수정하면 괜찮을지 알려주시면 감사하겠습니다!

 

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

답변 2개

채택된 답변
+20 포인트
11개월 전
// 각각의 상품마다 주문 번호를 생성
    $od_id = get_uniqid();

새로 생성을 하시네요. 그러니 달라질수 밖에 없을거 같습니다. 해당을 하기 전에 기존값을 다른 필드에 저장을 하시면 될 거 같습니다.

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

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

R
11개월 전

</p>

<p>// orderformupdate.php</p>

<p>// 각각의 상품별로 주문서를 따로 저장해야함</p>

<p>// shop_cart 테이블의 담긴 상품정보들을 가져오기</p>

<p>$sql = "SELECT * FROM {$g5['g5_shop_cart_table']} WHERE od_id='$tmp_cart_id'";</p>

<p>$result = sql_query($sql);</p>

<p> </p>

<p>$tmp_id_for_pg = array(); //초기화</p>

<p> </p>

<p>// 장바구니에 담긴 각 상품에 대해 개별 주문을 생성</p>

<p>for ($i = 0; $row = sql_fetch_array($result); $i++) {</p>

<p>    // 각각의 상품마다 주문 번호를 생성</p>

<p>    $od_id = get_uniqid();</p>

<p> </p>

<p>    $tmp_id_for_pg[$i]  = $od_id; //배열저장</p>

<p> </p>

<p>    // 초기화하여 각 상품마다 적절히 처리되도록 함</p>

<p>    $current_dday = $dday;</p>

<p> </p>

<p>    // 주문서에 입력</p>

<p>   $sql = "INSERT INTO {$g5['g5_shop_order_table']}</p>

<p>            SET od_id             = '$od_id',</p>

<p>                mb_id             = '{$member['mb_id']}',</p>

<p>                od_pwd            = '$od_pwd',</p>

<p>                od_name           = '$od_name',</p>

<p>                od_email          = '$od_email',</p>

<p>                od_tel            = '$od_tel',</p>

<p>                od_hp             = '$od_hp',</p>

<p>                od_zip1           = '$od_zip1',</p>

<p>                od_zip2           = '$od_zip2',</p>

<p>                od_addr1          = '$od_addr1',</p>

<p>                od_addr2          = '$od_addr2',</p>

<p>                od_addr3          = '$od_addr3',</p>

<p>                od_addr_jibeon    = '$od_addr_jibeon',</p>

<p>                od_b_name         = '$od_b_name',</p>

<p>                od_b_tel          = '$od_b_tel',</p>

<p>                od_b_hp           = '$od_b_hp',</p>

<p>                od_b_zip1         = '$od_b_zip1',</p>

<p>                od_b_zip2         = '$od_b_zip2',</p>

<p>                od_b_addr1        = '$od_b_addr1',</p>

<p>                od_b_addr2        = '$od_b_addr2',</p>

<p>                od_b_addr3        = '$od_b_addr3',</p>

<p>                od_b_addr_jibeon  = '$od_b_addr_jibeon',</p>

<p>                od_deposit_name   = '$od_deposit_name',</p>

<p>                od_memo           = '$od_memo',</p>

<p>                od_cart_count     = 1,  </p>

<p>                od_cart_price     = '" . ($row['ct_price'] * $row['ct_qty']) . "',  </p>

<p>                od_cart_coupon    = '{$row['ct_coupon']}',  </p>

<p>                od_send_cost      = '$i_send_cost',</p>

<p>                od_send_coupon    = '$tot_sc_cp_price',</p>

<p>                od_send_cost2     = '$i_send_cost2',</p>

<p>                od_coupon         = '$tot_od_cp_price',</p>

<p>                od_receipt_price  = '" . ($row['ct_price'] * $row['ct_qty']) . "',  </p>

<p>                od_receipt_point  = '$od_receipt_point',</p>

<p>                od_bank_account   = '$od_bank_account',</p>

<p>                od_receipt_time   = '$od_receipt_time',</p>

<p>                od_misu           = '$od_misu',</p>

<p>                od_pg             = '$od_pg',</p>

<p>                od_tno            = '$od_tno',</p>

<p>                od_app_no         = '$od_app_no',</p>

<p>                od_escrow         = '$od_escrow',</p>

<p>                od_tax_flag       = '$od_tax_flag',</p>

<p>                od_tax_mny        = '$od_tax_mny',</p>

<p>                od_vat_mny        = '$od_vat_mny',</p>

<p>                od_free_mny       = '$od_free_mny',</p>

<p>                od_status         = '$od_status',</p>

<p>                od_shop_memo      = '',</p>

<p>                od_hope_date      = '$od_hope_date',</p>

<p>                od_time           = '".G5_TIME_YMDHIS."',</p>

<p>                od_ip             = '$REMOTE_ADDR',</p>

<p>                od_settle_case    = '$od_settle_case',</p>

<p>                od_other_pay_type = '$od_other_pay_type',</p>

<p>                od_test           = '{$default['de_card_test']}',</p>

<p>                it_names          = '{$row['it_name']}',</p>

<p>                dday              = '$current_dday'";</p>

<p> </p>

<p>    // 각 상품에 대해 개별적으로 insert</p>

<p>    sql_query($sql, false);</p>

<p> </p>

<p>    // 장바구니에 주문 번호 업데이트</p>

<p>    $update_sql = "UPDATE {$g5['g5_shop_cart_table']}</p>

<p>                   SET od_id = '$od_id',</p>

<p>                          ct_status = '주문'</p>

<p>                   WHERE ct_id = '{$row['ct_id']}'";</p>

<p>    sql_query($update_sql);</p>

<p>}</p>

<p>

PG 측에 실결제 시에 $tmp_id_for_pg 배열 사용, 원하는 order id 전송

 

 

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

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

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

로그인