카카오페이 cid can`t be null 에러

array:10 [
“cid” => “TC0ONETIME”
“partner_order_id” => "151665416351"
“partner_user_id” => "10"
“item_name” => “초코파”
“quantity” => "1"
“total_amount” => “2200"
“tax_free_amount” => 0
"approval_url” => “http://localhost/api/kakao/approval
“cancel_url” => “http://localhost/api/kakao/cancel
“fail_url” => “http://localhost/api/kakao/fail
]

데이터값은 이렇게 넣었습니다.

$url = $this->kakao_curl."/v1/payment/ready";

    $partner_order_id = $request->partner_order_id;
    $partner_user_id = $request->partner_user_id;
    $item_name = $request->item_name;
    $quantity = $request->quantity;
    $total_amount = $request->total_amount;
    $tax_free_amount = 0;
    $approval_url = config('app.kakao_approval_url');
    $cancel_url = config('app.kakao_cancel_url');
    $fail_url = config('app.kakao_fail_url');


    $headers = array( 
        "Authorization: KakaoAK ".$this->admin_key,
        'Content-type: application/x-www-form-urlencoded;charset=utf-8'
    );


    $data = array(
        "cid" => $this->cid,
        "partner_order_id" => $partner_order_id,
        "partner_user_id" => $partner_user_id,
        "item_name" => $item_name,
        "quantity" => $quantity,
        "total_amount" => $total_amount,
        "tax_free_amount" => $tax_free_amount,
        "approval_url" => $approval_url,
        "cancel_url" => $cancel_url,
        "fail_url" => $fail_url
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    $response = curl_exec($ch);

    curl_close($ch);
    $result = json_decode($response);

    return response(json_encode($result), 200)->header('Content-Type', 'application/json');

postman 으로 하면 문제가 없는데
curl 로 하면
{
“msg”: “cid can’t be null.”,
“code”: -2
}
라는 에러가 뜹니다.

해당 답변들을 보면 admin key 문제이거나 잘못된 cid 라고 되어있는데 postman 에서 실행했을때 문제 없는걸 보니 다른 문제인것 같은데 원인을 모르겠습니다.

1개의 좋아요

해결했습니다.
$data 를 http_build_query 써서 인코딩하는걸 까먹어서 생긴 문제입니다.

1개의 좋아요