주문 수정
PATCH /v2/invoices/{id} 로 결제 대기 주문의 입금자명, 금액, 입금 기한, 받을 계좌, 현금영수증 정보를 바꿔요.
PATCH /v2/invoices/{id}
결제 대기(PENDING) 주문을 바꿔요. 보낸 필드만 바뀌고 나머지는 그대로예요. 바꾸면 invoice.updated 웹훅이 가요.
결제 완료, 만료, 취소된 주문은 바꿀 수 없어요. 만료된 주문을 다시 받으려면 새 주문을 만드세요.
경로 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
id |
string | 바꿀 주문 ID예요. ivc_로 시작해요. |
요청 본문
| 필드 | 타입 | 설명 |
|---|---|---|
customer.name |
string | 입금자명이에요. 1~16자, 공백 없이 입력해요. |
customer.email |
string | null | 구매자 이메일이에요. null을 보내면 지워요. |
customer.phoneNumber |
string | null | 구매자 전화번호예요. null을 보내면 지워요. |
amount |
integer | 금액(원)이에요. 0보다 커야 해요. |
expiresAt |
integer | null | 새 입금 기한이에요. Unix 초로 보내요. 지금보다 뒤이고 365일 안이어야 해요. null을 보내면 기한을 없애요. |
extendDays |
integer | 입금 기한을 며칠 늘릴지 정해요. 1~365예요. 지금 기한이 이미 지났거나 없으면 지금부터 늘려요. expiresAt과 함께 보내면 extendDays를 써요. |
bankAccountIds |
string[] | 입금받을 계좌 ID 목록이에요. 빈 배열이면 모든 계좌로 받아요. |
cashReceipt |
object | null | 결제 완료 때 발급할 현금영수증 정보예요. null을 보내면 지워요. 형식은 주문 생성과 같아요. |
resendGuideEmail |
boolean | true면 금액이나 입금 기한이 바뀌었을 때 구매자에게 바뀐 내용을 담은 입금 안내 메일을 다시 보내요. 기본값은 false예요. |
입금자명, 금액, 받을 계좌를 바꾸면 주문 충돌 규칙을 다시 검사해요.
resendGuideEmail이 true인데 금액과 입금 기한이 그대로면 메일을 보내지 않아요. 메일을 보내려면 주문에 구매자 이메일과 입금 기한이 있고, 받을 수 있는 계좌가 하나 이상 있어야 해요.
요청 예시
입금 기한을 3일 늘리고 구매자에게 다시 알려요.
curl -X PATCH https://api.paysync.kr/v2/invoices/ivc_a1b2c3d4e5f6g7h8i9j0k1l2 \
-H "Authorization: Bearer $PAYSYNC_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "extendDays": 3, "resendGuideEmail": true }'const res = await fetch(`https://api.paysync.kr/v2/invoices/${invoiceId}`, {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.PAYSYNC_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ extendDays: 3, resendGuideEmail: true }),
});
const { code, data } = await res.json();import os
import requests
res = requests.patch(
f"https://api.paysync.kr/v2/invoices/{invoice_id}",
headers={"Authorization": f"Bearer {os.environ['PAYSYNC_API_KEY']}"},
json={"extendDays": 3, "resendGuideEmail": True},
)
print(res.json())응답
바뀐 주문 객체가 와요. history는 없어요.
{
"code": "10001",
"data": {
"id": "ivc_a1b2c3d4e5f6g7h8i9j0k1l2",
"number": 1043,
"status": "PENDING",
"amount": 50000,
"expiresAt": 1777691655,
"updatedAt": 1777350000,
"guideEmailSentAt": 1777350000,
"...": "..."
}
}
오류
| HTTP | code |
발생 조건 |
|---|---|---|
| 401 | 290006 |
API 키가 올바르지 않아요. |
| 403 | 80002 |
API 키의 계좌 범위 밖의 주문이거나, bankAccountIds에 범위 밖의 계좌를 넣었거나 비웠어요. |
| 403 | 290007 |
읽기 전용 API 키예요. |
| 404 | 20014 |
주문이 없어요. |
| 409 | 220010 |
바꾼 내용이 다른 결제 대기 주문과 겹쳐요. data에 그 주문의 invoiceId와 number가 와요. |
| 409 | 220011 |
결제 대기 주문이 아니에요. |
| 409 | 220022 |
입금 안내 메일을 보내려는데 받을 수 있는 계좌가 없어요. |
| 409 | 220023 |
입금 안내 메일을 보내려는데 입금 기한이 없어요. |
| 422 | 30007 |
JSON 본문을 읽을 수 없어요. |
| 422 | 30009 |
바꿀 필드가 하나도 없어요. |
| 422 | 220001 |
주문 ID 형식이 틀렸어요. |
| 422 | 220002~220009 |
필드 값이 주문 생성의 검증을 통과하지 못했어요. |
| 422 | 220018 |
bankAccountIds에 1원 인증을 마치지 않은 계좌가 있어요. |