기본 결제 구현하기
LINE Pay의 기본 온라인 결제 방식은 결제 승인이 처리된 후 자동으로 매입을 처리합니다. 기본 방식의 결제 흐름은 다음과 같습니다.
위 결제 흐름에 따라 가맹점 서버에 다음 작업을 구현하세요.
결제 구현 시 결제 승인과 매입을 분리하려면, 기본 결재 구현 방식을 숙지한 다음 매입을 분리해 결제 구현하기를 참고하세요.
결제 요청
고객이 구매할 물건 또는 서비스를 정한 뒤 LINE Pay로 결제를 시도하면 가맹점 서버는 다음 정보를 LINE Pay 서버에 전달해 결제를 요청해야 합니다.
- 결제 금액과 통화 코드
- 가맹점에서 관리하는 주문 번호
- 구매 상품 또는 서비스 정보
- LINE Pay 인증 후 이동할 페이지의 리다이렉션 정보
- 기타 결제 정보
가맹점은 다음과 같은 제품 페이지(왼쪽)와 주문 페이지(오른쪽)를 제공해 고객으로부터 위 정보를 얻습니다.
정보 확보 후 결제 요청 API를 호출하세요. 다음은 50 엔짜리 펜 두 개를 결제하기 위한 요청입니다.
온라인 API를 호출할 때 필요한 자격 증명 정보를 얻는 방법은 API 자격 증명 준비를 참고하세요. 이 페이지에 설명된 코드 예제는 API 자격 증명 준비 코드 예제에 정의된
requestOnlineAPI()
함수를 이용합니다.
try {
let response = await requestOnlineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: "/v3/payments/request",
data: {
amount: 100,
currency: "TWD",
orderId: "EXAMPLE_ORDER_20230422_1000001",
packages: [
{
id: "1",
amount: 100,
products: [
{
id: "PEN-B-001",
name: "Pen Brown",
imageUrl: "https://store.example.com/images/pen_brown.jpg",
quantity: 2,
price: 50,
},
],
},
],
redirectUrls: {
confirmUrl: "https://store.example.com/order/payment/authorize",
cancelUrl: "https://store.example.com/order/payment/cancel",
},
},
});
console.log("Response: ", response);
} catch (error) {
console.log(error);
}
결제 요청이 완료되면 아래와 같은 응답을 얻을 수 있습니다.
{
"returnCode": "0000",
"returnMessage": "Success.",
"info": {
"paymentUrl": {
"web": "https://sandbox-web-pay.line.me/web/payment/wait?transactionReserveId=REpEWEttQ0F2RmFnaFFzVndIdjl6Z0lqbGpPemZjOHpNWTFZTmdibUlRNlEzOG50N2VSRmdGU2IxcnVjMHZ1NQ",
"app": "line://pay/payment/REpEWEttQ0F2RmFnaFFzVndIdjl6Z0lqbGpPemZjOHpNWTFZTmdibUlRNlEzOG50N2VSRmdGU2IxcnVjMHZ1NQ"
},
"transactionId": 2023042201206549310,
"paymentAccessToken": "056579816895"
}
}
다음으로는 고객을 LINE Pay 인증 화면으로 이동시켜야 합니다. 응답으로 받은 결제 화면 리다이렉션 URL(info.paymentUrl
) 중 고객이 이용 중인 기기에 해당하는 URL로 이동시키세요.
- PC 사용자:
info.paymentUrl.web
필드의 URL을 팝업 창으로 표시하거나 URL이 가리키는 웹 페이지로 이동합니다. - 모바일 기기 사용자:
info.paymentUrl.app
필드의 딥링크(deep link)는 LINE 앱에서 LINE Pay 인증 화면을 실행시킵니다.
결과 코드(
returnCode
)가0000
이 아니면 결과 코드를 확인하세요.
LINE Pay 인증
LINE Pay 인증이란 고객이 결제 요청 응답으로 받은 URL(paymentUrl
)로 이동해 LINE 앱 또는 웹 환경에서 본인을 인증하고 결제 암호를 입력하는 과정입니다. 고객은 LINE 앱의 LINE Pay 화면이나 팝업으로 표시된 LINE Pay 인증 페이지에서 다음과 같은 순서로 인증합니다.
LINE Pay 인증 과정은 고객에 의해 언제든지 취소될 수 있습니다.
LINE 앱이나 팝업 페이지에서 LINE Pay 인증이 진행된 후, 고객은 결제 요청 API를 호출할 때 명시한 리다이렉션용 페이지 중 하나로 이동하게 됩니다. 고객이 어디로 이동했는지에 따라 고객이 LINE Pay 인증을 완료했는지 또는 결제를 취소했는지 알 수 있습니다.
결제 승인용 페이지가 표시된 후 결제 승인을 진행할 수 있으며, 다음은 가맹점이 제공해야 하는 결제 승인용 페이지 예시입니다.
상황에 따라 리다이렉션용 페이지를 제공하지 않고 결제를 구현할 수도 있습니다. 이에 대한 자세한 설명은 리다이렉션 URL없이 구현하기 문서를 참고하세요.
결제 승인
고객이 LINE Pay 인증을 완료하고 구매 정보를 최종 확인했다면 가맹점 서버는 LINE Pay 서버에 결제 승인을 요청할 수 있습니다. 결제 승인과 매입을 분리하지 않았다면 결제가 승인될 때 매입도 자동으로 처리돼 대금이 바로 정산됩니다.
다음 정보를 입력해 결제 승인 요청 API를 호출하세요.
트랜잭션 ID 정보를 다룰 때 서비스 구현 언어에 따라 트랜잭션 ID를 문자열로 처리해야 할 수도 있습니다. 자세한 설명은 트랜잭션 ID를 참고하세요.
다음 코드는 앞서 요청한 결제를 승인해달라고 요청합니다.
try {
let response = await requestOnlineAPI({
method: "POST",
baseUrl: targetAPIServer,
apiPath: `/v3/payments/${requestTransactionId}/confirm`,
data: {
amount: 100,
currency: "TWD",
},
});
console.log("Response: ", response);
} catch (error) {
console.log(error);
}
결제 승인이 완료되면 다음과 같은 응답을 받습니다.
{
"returnCode": "0000",
"returnMessage": "OK",
"info": {
"orderId": "EXAMPLE_ORDER_20230422_1000001",
"transactionId": 2023042201206549310,
"payInfo": [
{
"method": "BALANCE",
"amount": 100
}
]
}
}
위와 같은 응답을 받은 후 결제가 최종 완료됐음을 보여주는 페이지를 고객에게 제공하세요.