@bootpay/backend-js
Advanced tools
+182
| import { BootpayBackendNodejsResource } from './lib/resource'; | ||
| import { AccessTokenResponseParameters, CancelPaymentParameters, CertificateResponseParameters, DestroySubscribeResponseParameters, ReceiptResponseParameters, SubscriptionBillingRequestParameters, SubscriptionBillingResponseParameters, SubscriptionCardPaymentRequestParameters, UserTokenRequestParameters, UserTokenResponseParameters, SubscribePaymentReserveParameters, SubscribePaymentReserveResponse, CancelSubscribeReserveResponse, ShippingRequestParameters, CashReceiptPublishOnReceiptParameters, CashReceiptCancelOnReceiptParameters, RequestCashReceiptParameters, CancelCashReceiptParameters, RequestAuthenticateParameters, SubscribePaymentLookupResponse, SubscriptionBillingTransferRequestParameters, SubscriptionPaymentRequestParameters, WalletRequestParameters, WalletDataPart, WalletPaymentResponseParameters } from './lib/response'; | ||
| declare class BootpayBackendNodejs extends BootpayBackendNodejsResource { | ||
| constructor(); | ||
| /** | ||
| * Get Access Token | ||
| * Comment by GOSOMI | ||
| * @returns Promise<AccessTokenResponseParameters> | ||
| */ | ||
| getAccessToken(): Promise<AccessTokenResponseParameters>; | ||
| /** | ||
| * Lookup Receipt | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @param lookupUserData: boolean | ||
| */ | ||
| receiptPayment(receiptId: string, lookupUserData?: boolean): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * Cancel Payment | ||
| * Comment by GOSOMI | ||
| * @param cancelPayment: CancelPaymentParameters | ||
| * @returns Promise<CancelPaymentParameters> | ||
| */ | ||
| cancelPayment(cancelPayment: CancelPaymentParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * Lookup Certificate Data | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @returns Promise<CertificateResponseParameters> | ||
| */ | ||
| certificate(receiptId: string): Promise<CertificateResponseParameters>; | ||
| /** | ||
| * ConfirmPayment | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @returns Promise<ReceiptResponseParameters> | ||
| */ | ||
| confirmPayment(receiptId: string): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * lookupSubscribeBillingKey | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @returns Promise<SubscriptionBillingResponseParameters> | ||
| */ | ||
| lookupSubscribeBillingKey(receiptId: string): Promise<SubscriptionBillingResponseParameters>; | ||
| /** | ||
| * lookupBillingKey | ||
| * Comment by ehowlsla | ||
| * @param billingKey: string | ||
| * @returns Promise<SubscriptionBillingResponseParameters> | ||
| */ | ||
| lookupBillingKey(billingKey: string): Promise<SubscriptionBillingResponseParameters>; | ||
| /** | ||
| * requestSubscribeBillingKey | ||
| * Comment by GOSOMI | ||
| * @param subscriptionBillingRequest: SubscriptionBillingRequestParameters | ||
| * @returns Promise<SubscriptionBillingResponseParameters> | ||
| */ | ||
| requestSubscribeBillingKey(subscriptionBillingRequest: SubscriptionBillingRequestParameters): Promise<SubscriptionBillingResponseParameters>; | ||
| /** | ||
| * requestSubscribeCardPayment | ||
| * Comment by GOSOMI | ||
| * @param subscriptionCardRequest: SubscriptionCardPaymentRequestParameters | ||
| * @returns Promise<ReceiptResponseParameters> | ||
| */ | ||
| requestSubscribeCardPayment(subscriptionCardRequest: SubscriptionCardPaymentRequestParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * requestSubscribePayment | ||
| * Comment by ehowlsla | ||
| * @param subscriptionRequest: SubscriptionPaymentRequestParameters | ||
| * @returns Promise<ReceiptResponseParameters> | ||
| */ | ||
| requestSubscribePayment(subscriptionRequest: SubscriptionPaymentRequestParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * destroyBillingKey | ||
| * Comment by GOSOMI | ||
| * @param billingKey:string | ||
| * @returns Promise<DestroySubscribeResponseParameters> | ||
| */ | ||
| destroyBillingKey(billingKey: string): Promise<DestroySubscribeResponseParameters>; | ||
| /** | ||
| * requestUserToken | ||
| * Comment by GOSOMI | ||
| * @param userTokenRequest:UserTokenRequestParameters | ||
| * @returns Promise<UserTokenResponseParameters> | ||
| */ | ||
| requestUserToken(userTokenRequest: UserTokenRequestParameters): Promise<UserTokenResponseParameters>; | ||
| /** | ||
| * subscribePaymentReserve | ||
| * Comment by GOSOMI | ||
| * @param subscribePaymentReserveRequest:SubscribePaymentReserveParameters | ||
| * @returns Promise<SubscribePaymentReserveResponse> | ||
| */ | ||
| subscribePaymentReserve(subscribePaymentReserveRequest: SubscribePaymentReserveParameters): Promise<SubscribePaymentReserveResponse>; | ||
| /** | ||
| * SubscribeReserve Lookup | ||
| * Comment by GOSOMI | ||
| * @date: 2023-03-07 | ||
| * @param reserveId: string | ||
| * @returns Promise<SubscribeLookupResponse> | ||
| */ | ||
| subscribePaymentReserveLookup(reserveId: string): Promise<SubscribePaymentLookupResponse>; | ||
| /** | ||
| * cancelSubscribeReserve | ||
| * Comment by GOSOMI | ||
| * @param reserveId:string | ||
| * @returns Promise<CancelSubscribeReserveResponse> | ||
| */ | ||
| cancelSubscribeReserve(reserveId: string): Promise<CancelSubscribeReserveResponse>; | ||
| /** | ||
| * 배송시작 REST API 시작 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-06-14 | ||
| */ | ||
| shippingStart(shippingRequest: ShippingRequestParameters): Promise<ReceiptResponseParameters | any>; | ||
| /** | ||
| * 기존결제 현금영수증 발행 API | ||
| * Comment by GOSOMI | ||
| * @date: 2022-07-28 | ||
| */ | ||
| cashReceiptPublishOnReceipt(cashReceiptPublishRequest: CashReceiptPublishOnReceiptParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * 기존 결제 현금영수증 발행 취소 API | ||
| * Comment by GOSOMI | ||
| * @date: 2022-08-09 | ||
| */ | ||
| cashReceiptCancelOnReceipt(cashReceiptCancelRequest: CashReceiptCancelOnReceiptParameters): Promise<null>; | ||
| /** | ||
| * 별건 현금영수증 발행하기 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-08-09 | ||
| */ | ||
| requestCashReceipt(cashReceiptRequest: RequestCashReceiptParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * 별건 현금영수증 취소하기 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-08-09 | ||
| */ | ||
| cancelCashReceipt(cancelCashReceiptRequest: CancelCashReceiptParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * 본인인증 REST API 요청 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-11-07 | ||
| */ | ||
| requestAuthentication(authenticateRequest: RequestAuthenticateParameters): Promise<CertificateResponseParameters>; | ||
| /** | ||
| * 본인인증 승인하기 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-11-07 | ||
| */ | ||
| confirmAuthentication(receipt_id: string, otp?: null | string): Promise<CertificateResponseParameters>; | ||
| /** | ||
| * 본인인증 SMS 재전송 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-11-07 | ||
| */ | ||
| realarmAuthentication(receipt_id: string): Promise<CertificateResponseParameters>; | ||
| /** | ||
| * 계좌 자동이체를 위한 빌링키 발급 요청 | ||
| * Comment by ehowlsla | ||
| * @date: 2024-05-27 | ||
| */ | ||
| requestSubscribeAutomaticTransferBillingKey(parameters: SubscriptionBillingTransferRequestParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * 계좌 자동이체를 위한 출금 동의 확인 요청 | ||
| * Comment by ehowlsla | ||
| * @date: 2024-05-27 | ||
| */ | ||
| publishAutomaticTransferBillingKey(receipt_id: string): Promise<SubscriptionBillingResponseParameters>; | ||
| /** | ||
| * 등록된 지갑 리스트 가져오기 | ||
| * Comment by ehowlsla | ||
| * @date: 2025-03-16 | ||
| */ | ||
| getUserWallets(user_id: string, sandbox: boolean): Promise<WalletDataPart[]>; | ||
| requestWalletPayment(walletRequest: WalletRequestParameters): Promise<WalletPaymentResponseParameters>; | ||
| } | ||
| declare const Bootpay: BootpayBackendNodejs; | ||
| export { Bootpay }; | ||
| export default Bootpay; | ||
| export * from './lib/response'; | ||
| export * from './lib/resource'; |
+507
| "use strict"; | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| var desc = Object.getOwnPropertyDescriptor(m, k); | ||
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
| desc = { enumerable: true, get: function() { return m[k]; } }; | ||
| } | ||
| Object.defineProperty(o, k2, desc); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
| for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
| }; | ||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
| function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
| return new (P || (P = Promise))(function (resolve, reject) { | ||
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
| function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
| }); | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.Bootpay = void 0; | ||
| const resource_1 = require("./lib/resource"); | ||
| class BootpayBackendNodejs extends resource_1.BootpayBackendNodejsResource { | ||
| constructor() { | ||
| super(); | ||
| } | ||
| /** | ||
| * Get Access Token | ||
| * Comment by GOSOMI | ||
| * @returns Promise<AccessTokenResponseParameters> | ||
| */ | ||
| getAccessToken() { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const { application_id, private_key } = this.bootpayConfiguration; | ||
| const response = yield this.post('request/token', { | ||
| application_id, | ||
| private_key | ||
| }); | ||
| // set Token | ||
| this.setToken(response.access_token); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * Lookup Receipt | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @param lookupUserData: boolean | ||
| */ | ||
| receiptPayment(receiptId_1) { | ||
| return __awaiter(this, arguments, void 0, function* (receiptId, lookupUserData = false) { | ||
| try { | ||
| const response = yield this.get(`receipt/${receiptId}?lookup_user_data=${lookupUserData ? 'true' : 'false'}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * Cancel Payment | ||
| * Comment by GOSOMI | ||
| * @param cancelPayment: CancelPaymentParameters | ||
| * @returns Promise<CancelPaymentParameters> | ||
| */ | ||
| cancelPayment(cancelPayment) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('cancel', Object.assign({}, cancelPayment)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * Lookup Certificate Data | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @returns Promise<CertificateResponseParameters> | ||
| */ | ||
| certificate(receiptId) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.get(`certificate/${receiptId}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * ConfirmPayment | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @returns Promise<ReceiptResponseParameters> | ||
| */ | ||
| confirmPayment(receiptId) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('confirm', { | ||
| receipt_id: receiptId | ||
| }); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * lookupSubscribeBillingKey | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @returns Promise<SubscriptionBillingResponseParameters> | ||
| */ | ||
| lookupSubscribeBillingKey(receiptId) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.get(`subscribe/billing_key/${receiptId}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * lookupBillingKey | ||
| * Comment by ehowlsla | ||
| * @param billingKey: string | ||
| * @returns Promise<SubscriptionBillingResponseParameters> | ||
| */ | ||
| lookupBillingKey(billingKey) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.get(`billing_key/${billingKey}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * requestSubscribeBillingKey | ||
| * Comment by GOSOMI | ||
| * @param subscriptionBillingRequest: SubscriptionBillingRequestParameters | ||
| * @returns Promise<SubscriptionBillingResponseParameters> | ||
| */ | ||
| requestSubscribeBillingKey(subscriptionBillingRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/subscribe', Object.assign({}, subscriptionBillingRequest)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * requestSubscribeCardPayment | ||
| * Comment by GOSOMI | ||
| * @param subscriptionCardRequest: SubscriptionCardPaymentRequestParameters | ||
| * @returns Promise<ReceiptResponseParameters> | ||
| */ | ||
| requestSubscribeCardPayment(subscriptionCardRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('subscribe/payment', Object.assign({}, subscriptionCardRequest)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * requestSubscribePayment | ||
| * Comment by ehowlsla | ||
| * @param subscriptionRequest: SubscriptionPaymentRequestParameters | ||
| * @returns Promise<ReceiptResponseParameters> | ||
| */ | ||
| requestSubscribePayment(subscriptionRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('subscribe/payment', Object.assign({}, subscriptionRequest)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * destroyBillingKey | ||
| * Comment by GOSOMI | ||
| * @param billingKey:string | ||
| * @returns Promise<DestroySubscribeResponseParameters> | ||
| */ | ||
| destroyBillingKey(billingKey) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.delete(`subscribe/billing_key/${billingKey}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * requestUserToken | ||
| * Comment by GOSOMI | ||
| * @param userTokenRequest:UserTokenRequestParameters | ||
| * @returns Promise<UserTokenResponseParameters> | ||
| */ | ||
| requestUserToken(userTokenRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/user/token', Object.assign({}, userTokenRequest)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * subscribePaymentReserve | ||
| * Comment by GOSOMI | ||
| * @param subscribePaymentReserveRequest:SubscribePaymentReserveParameters | ||
| * @returns Promise<SubscribePaymentReserveResponse> | ||
| */ | ||
| subscribePaymentReserve(subscribePaymentReserveRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('subscribe/payment/reserve', Object.assign({}, subscribePaymentReserveRequest)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * SubscribeReserve Lookup | ||
| * Comment by GOSOMI | ||
| * @date: 2023-03-07 | ||
| * @param reserveId: string | ||
| * @returns Promise<SubscribeLookupResponse> | ||
| */ | ||
| subscribePaymentReserveLookup(reserveId) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.get(`subscribe/payment/reserve/${reserveId}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * cancelSubscribeReserve | ||
| * Comment by GOSOMI | ||
| * @param reserveId:string | ||
| * @returns Promise<CancelSubscribeReserveResponse> | ||
| */ | ||
| cancelSubscribeReserve(reserveId) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.delete(`subscribe/payment/reserve/${reserveId}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 배송시작 REST API 시작 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-06-14 | ||
| */ | ||
| shippingStart(shippingRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.put(`escrow/shipping/start/${shippingRequest.receipt_id}`, shippingRequest); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 기존결제 현금영수증 발행 API | ||
| * Comment by GOSOMI | ||
| * @date: 2022-07-28 | ||
| */ | ||
| cashReceiptPublishOnReceipt(cashReceiptPublishRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/receipt/cash/publish', cashReceiptPublishRequest); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 기존 결제 현금영수증 발행 취소 API | ||
| * Comment by GOSOMI | ||
| * @date: 2022-08-09 | ||
| */ | ||
| cashReceiptCancelOnReceipt(cashReceiptCancelRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.delete(`request/receipt/cash/cancel/${cashReceiptCancelRequest.receipt_id}`, { | ||
| params: cashReceiptCancelRequest | ||
| }); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 별건 현금영수증 발행하기 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-08-09 | ||
| */ | ||
| requestCashReceipt(cashReceiptRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/cash/receipt', cashReceiptRequest); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 별건 현금영수증 취소하기 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-08-09 | ||
| */ | ||
| cancelCashReceipt(cancelCashReceiptRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.delete(`request/cash/receipt/${cancelCashReceiptRequest.receipt_id}`, { | ||
| params: cancelCashReceiptRequest | ||
| }); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 본인인증 REST API 요청 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-11-07 | ||
| */ | ||
| requestAuthentication(authenticateRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/authentication', authenticateRequest); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 본인인증 승인하기 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-11-07 | ||
| */ | ||
| confirmAuthentication(receipt_id_1) { | ||
| return __awaiter(this, arguments, void 0, function* (receipt_id, otp = null) { | ||
| try { | ||
| const response = yield this.post('authenticate/confirm', { | ||
| receipt_id, | ||
| otp | ||
| }); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 본인인증 SMS 재전송 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-11-07 | ||
| */ | ||
| realarmAuthentication(receipt_id) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('authenticate/realarm', { | ||
| receipt_id | ||
| }); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 계좌 자동이체를 위한 빌링키 발급 요청 | ||
| * Comment by ehowlsla | ||
| * @date: 2024-05-27 | ||
| */ | ||
| requestSubscribeAutomaticTransferBillingKey(parameters) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/subscribe/automatic-transfer', parameters); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 계좌 자동이체를 위한 출금 동의 확인 요청 | ||
| * Comment by ehowlsla | ||
| * @date: 2024-05-27 | ||
| */ | ||
| publishAutomaticTransferBillingKey(receipt_id) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/subscribe/automatic-transfer/publish', { | ||
| "receipt_id": receipt_id | ||
| }); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 등록된 지갑 리스트 가져오기 | ||
| * Comment by ehowlsla | ||
| * @date: 2025-03-16 | ||
| */ | ||
| getUserWallets(user_id, sandbox) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const queryParams = new URLSearchParams({ user_id, sandbox: sandbox.toString() }).toString(); | ||
| const response = yield this.get(`wallet?${queryParams}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (error) { | ||
| return Promise.reject(error); | ||
| } | ||
| }); | ||
| } | ||
| // async getUserWallets(user_id: string, sandbox: boolean) { | ||
| // try { | ||
| // const response: WalletDataPart[] = await this.get<WalletDataPart[]>(`wallet?user_id=${user_id}&sandbox=${sandbox}`) | ||
| // return Promise.resolve(response) | ||
| // } catch (e) { | ||
| // return Promise.reject(e) | ||
| // } | ||
| // } | ||
| requestWalletPayment(walletRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('wallet/payment', Object.assign({}, walletRequest)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| } | ||
| const Bootpay = new BootpayBackendNodejs(); | ||
| exports.Bootpay = Bootpay; | ||
| exports.default = Bootpay; | ||
| __exportStar(require("./lib/response"), exports); | ||
| __exportStar(require("./lib/resource"), exports); |
| import { AxiosInstance, AxiosRequestConfig } from 'axios'; | ||
| export interface BootpayRestApiErrorResponse<T = any> { | ||
| error_code?: number; | ||
| pg_error_code?: number; | ||
| message?: string; | ||
| } | ||
| interface BootpayEntrypoints { | ||
| development: string; | ||
| stage: string; | ||
| production: string; | ||
| } | ||
| interface BootpayConfiguration { | ||
| application_id: string; | ||
| private_key: string; | ||
| mode?: 'development' | 'production' | 'stage'; | ||
| } | ||
| export declare class BootpayBackendNodejsResource { | ||
| $http: AxiosInstance; | ||
| $token?: string; | ||
| mode: 'development' | 'production' | 'stage'; | ||
| bootpayConfiguration: BootpayConfiguration; | ||
| API_ENTRYPOINTS: BootpayEntrypoints; | ||
| apiVersion: string; | ||
| sdkVersion: string; | ||
| constructor(); | ||
| /** | ||
| * Environments | ||
| * Comment by GOSOMI | ||
| * @date: 2022-04-12 | ||
| * @param configuration: BootpayConfiguration | ||
| * @returns void | ||
| */ | ||
| setConfiguration(configuration: BootpayConfiguration): void; | ||
| /** | ||
| * SET API Version | ||
| * Comment by GOSOMI | ||
| * @date: 2022-07-29 | ||
| */ | ||
| setApiVersion(version: string): void; | ||
| /** | ||
| * Set Access Token | ||
| * Comment by GOSOMI | ||
| * @date: 2022-04-12 | ||
| */ | ||
| setToken(token: string): void; | ||
| entrypoints(url: string): string; | ||
| get<T = any, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<T>; | ||
| post<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>; | ||
| put<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>; | ||
| delete<T = any, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<T>; | ||
| } | ||
| export {}; |
+149
| "use strict"; | ||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
| function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
| return new (P || (P = Promise))(function (resolve, reject) { | ||
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
| function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
| }); | ||
| }; | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.BootpayBackendNodejsResource = void 0; | ||
| const axios_1 = __importDefault(require("axios")); | ||
| class BootpayBackendNodejsResource { | ||
| constructor() { | ||
| this.apiVersion = '5.0.0'; | ||
| this.sdkVersion = '2.3.0'; | ||
| this.mode = 'production'; | ||
| this.$http = axios_1.default.create({ | ||
| timeout: 60000 | ||
| }); | ||
| this.$token = undefined; | ||
| this.bootpayConfiguration = { | ||
| application_id: '', | ||
| private_key: '', | ||
| mode: 'production' | ||
| }; | ||
| this.API_ENTRYPOINTS = { | ||
| development: 'https://dev-api.bootpay.co.kr/v2', | ||
| stage: 'https://stage-api.bootpay.co.kr/v2', | ||
| production: 'https://api.bootpay.co.kr/v2' | ||
| }; | ||
| this.$http.interceptors.response.use((response) => { | ||
| if (response.request !== undefined && response.headers !== undefined) { | ||
| return response.data; | ||
| } | ||
| else { | ||
| // 오류를 리턴 | ||
| return response.data; | ||
| } | ||
| }, (error) => { | ||
| if (error.response !== undefined) { | ||
| return Promise.reject(error.response.data); | ||
| } | ||
| else { | ||
| return Promise.reject({ | ||
| error_code: -100, | ||
| message: `Request Rest Api Failed to Bootpay Server, ${error.message}` | ||
| }); | ||
| } | ||
| }); | ||
| // @ts-expect-error | ||
| this.$http.interceptors.request.use((config) => { | ||
| if (config.headers !== undefined) { | ||
| if (this.$token !== undefined) { | ||
| config.headers.authorization = `Bearer ${this.$token}`; | ||
| } | ||
| config.headers['Content-Type'] = 'application/json'; | ||
| config.headers['Accept'] = 'application/json'; | ||
| config.headers['BOOTPAY-SDK-VERSION'] = this.sdkVersion; | ||
| config.headers['BOOTPAY-API-VERSION'] = this.apiVersion; | ||
| config.headers['BOOTPAY-SDK-TYPE'] = 301; | ||
| } | ||
| return config; | ||
| }, (error) => { | ||
| return Promise.reject(error); | ||
| }); | ||
| } | ||
| /** | ||
| * Environments | ||
| * Comment by GOSOMI | ||
| * @date: 2022-04-12 | ||
| * @param configuration: BootpayConfiguration | ||
| * @returns void | ||
| */ | ||
| setConfiguration(configuration) { | ||
| if (configuration.mode === undefined) { | ||
| configuration.mode = 'production'; | ||
| } | ||
| this.bootpayConfiguration = configuration; | ||
| } | ||
| /** | ||
| * SET API Version | ||
| * Comment by GOSOMI | ||
| * @date: 2022-07-29 | ||
| */ | ||
| setApiVersion(version) { | ||
| this.apiVersion = version; | ||
| } | ||
| /** | ||
| * Set Access Token | ||
| * Comment by GOSOMI | ||
| * @date: 2022-04-12 | ||
| */ | ||
| setToken(token) { | ||
| this.$token = token; | ||
| } | ||
| entrypoints(url) { | ||
| return [this.API_ENTRYPOINTS[this.bootpayConfiguration.mode === undefined ? 'production' : this.bootpayConfiguration.mode], url].join('/'); | ||
| } | ||
| get(url, config) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.$http.get(this.entrypoints(url), config); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| post(url, data, config) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.$http.post(this.entrypoints(url), data, config); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| put(url, data, config) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.$http.put(this.entrypoints(url), data, config); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| delete(url, config) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.$http.delete(this.entrypoints(url), config); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| } | ||
| exports.BootpayBackendNodejsResource = BootpayBackendNodejsResource; |
| export interface AccessTokenResponseParameters { | ||
| expire_in: number; | ||
| access_token: string; | ||
| } | ||
| export interface ReceiptResponseParameters { | ||
| receipt_id: string; | ||
| order_id: string; | ||
| price: number; | ||
| tax_free: number; | ||
| cancelled_price: number; | ||
| cancelled_tax_free: number; | ||
| order_name: string; | ||
| company_name: string; | ||
| gateway_url: string; | ||
| metadata: string; | ||
| sandbox: boolean; | ||
| pg: string; | ||
| method: string; | ||
| method_symbol: string; | ||
| method_origin: string; | ||
| method_origin_symbol: string; | ||
| purchased_at?: Date; | ||
| requested_at: Date; | ||
| cancelled_at?: Date; | ||
| status: number; | ||
| status_locale: string; | ||
| receipt_url?: string; | ||
| card_data?: CardData; | ||
| phone_data?: PhoneData; | ||
| bank_data?: BankData; | ||
| vbank_data?: BankData; | ||
| escrow_data?: EscrowData; | ||
| cash_receipt_data?: CashReceiptData; | ||
| naver_point_data?: NaverPointData; | ||
| kakao_moneny_data?: KakaoMoneyData; | ||
| payco_point_data?: PaycoPointData; | ||
| toss_point_data?: TossPointData; | ||
| currency?: string; | ||
| } | ||
| export interface ExtraModel { | ||
| subscribe_test_payment: boolean; | ||
| } | ||
| export interface UserModel { | ||
| id?: string; | ||
| username?: string; | ||
| phone?: string; | ||
| email?: string; | ||
| } | ||
| export interface CompanyModel { | ||
| name?: string; | ||
| phone?: string; | ||
| zipcode?: string; | ||
| addr1?: string; | ||
| addr2?: string; | ||
| } | ||
| export interface ItemModel { | ||
| id?: string; | ||
| name?: string; | ||
| qty?: number; | ||
| price?: number; | ||
| } | ||
| export interface BillingData { | ||
| card_no: string; | ||
| card_company: string; | ||
| card_company_code: string; | ||
| card_type: number; | ||
| card_hash?: string; | ||
| rtn_key_info?: string; | ||
| } | ||
| export interface CardData { | ||
| tid: string; | ||
| card_approve_no: string; | ||
| card_no: string; | ||
| card_quota: string; | ||
| card_company_code: string; | ||
| card_company: string; | ||
| card_interest: string; | ||
| receipt_url?: string; | ||
| card_type?: string; | ||
| card_owner_type?: string; | ||
| point?: number; | ||
| } | ||
| export interface PhoneData { | ||
| tid: string; | ||
| auth_no?: string; | ||
| phone?: string; | ||
| receipt_url?: string; | ||
| } | ||
| export interface BankData { | ||
| tid: string; | ||
| bank_code: string; | ||
| bank_name: string; | ||
| bank_username: string; | ||
| bank_account?: string; | ||
| sender_name?: string; | ||
| expired_at?: Date; | ||
| cash_receipt_tid?: string; | ||
| cash_receipt_type?: string; | ||
| cash_receipt_no?: string; | ||
| receipt_url?: string; | ||
| } | ||
| export interface EscrowData { | ||
| status: number; | ||
| status_locale: string; | ||
| shipping_started_at: Date; | ||
| receipt_confirmed_at: Date | null; | ||
| } | ||
| export interface CashReceiptData { | ||
| tid?: string; | ||
| cash_receipt_type?: number; | ||
| cash_receipt_no?: string; | ||
| receipt_url?: string; | ||
| } | ||
| export interface KakaoMoneyData { | ||
| tid?: string; | ||
| } | ||
| export interface NaverPointData { | ||
| tid?: string; | ||
| } | ||
| export interface PaycoPointData { | ||
| tid?: string; | ||
| } | ||
| export interface TossPointData { | ||
| tid?: string; | ||
| } | ||
| export interface CancelPaymentParameters { | ||
| receipt_id: string; | ||
| cancel_price?: number; | ||
| cancel_tax_free?: number; | ||
| cancel_id?: string; | ||
| cancel_username?: string; | ||
| cancel_message?: string; | ||
| refund?: Refund; | ||
| } | ||
| export interface Refund { | ||
| bank_account: string; | ||
| bank_username: string; | ||
| bank_code: string; | ||
| } | ||
| export interface CertificateResponseParameters { | ||
| receipt_id: string; | ||
| authenticate_id: string; | ||
| pg: string; | ||
| method: string; | ||
| method_origin: string; | ||
| method_origin_symbol: string; | ||
| authenticated_at: Date; | ||
| requested_at: Date; | ||
| status: number; | ||
| status_locale: string; | ||
| authenticate_data: AuthenticateData; | ||
| } | ||
| export interface AuthenticateData { | ||
| name?: string; | ||
| phone?: string; | ||
| unique?: string; | ||
| birth?: Date; | ||
| gender?: number; | ||
| foreigner?: number; | ||
| carrier?: string; | ||
| number_of_realarms?: number; | ||
| tid: string; | ||
| } | ||
| export interface SubscriptionBillingRequestParameters { | ||
| pg: string; | ||
| method?: string; | ||
| order_name: string; | ||
| subscription_id: string; | ||
| card_no: string; | ||
| card_pw: string; | ||
| card_identity_no: string; | ||
| card_expire_year: string; | ||
| card_expire_month: string; | ||
| price?: number; | ||
| tax_free?: number; | ||
| extra: ExtraModel; | ||
| user: UserModel; | ||
| metadata?: object; | ||
| } | ||
| export interface SubscriptionBillingTransferRequestParameters { | ||
| pg: string; | ||
| method?: string; | ||
| order_name: string; | ||
| subscription_id: string; | ||
| auth_type: 'ARS' | '간편인증'; | ||
| username: string; | ||
| bank_name: string; | ||
| bank_account: string; | ||
| identity_no: string; | ||
| cash_receipt_type?: '소득공제' | '지출증빙'; | ||
| cash_receipt_identity_no?: string; | ||
| phone?: string; | ||
| price?: number; | ||
| tax_free?: number; | ||
| extra: ExtraModel; | ||
| user: UserModel; | ||
| metadata?: object; | ||
| } | ||
| export interface SubscriptionBillingResponseParameters { | ||
| billing_key: string; | ||
| billing_data: BillingData; | ||
| receipt_id: string; | ||
| subscription_id: string; | ||
| gateway_url?: string; | ||
| metadata: object; | ||
| pg: string; | ||
| method: string; | ||
| method_origin?: string; | ||
| method_origin_symbol?: string; | ||
| method_symbol?: string; | ||
| published_at: Date; | ||
| requested_at: Date; | ||
| receipt_data: ReceiptResponseParameters; | ||
| billing_expire_at: Date; | ||
| status: number; | ||
| status_locale?: string; | ||
| } | ||
| export interface SubscriptionCardPaymentRequestParameters { | ||
| billing_key: string; | ||
| order_name: string; | ||
| price: number; | ||
| tax_free?: number; | ||
| card_quota?: string; | ||
| card_interest?: string; | ||
| order_id: string; | ||
| feedback_url?: string; | ||
| content_type?: string; | ||
| metadata?: any; | ||
| items?: Array<ItemModel>; | ||
| user?: UserModel; | ||
| extra?: ExtraModel; | ||
| } | ||
| export interface SubscriptionPaymentRequestParameters { | ||
| billing_key: string; | ||
| order_name: string; | ||
| price: number; | ||
| tax_free?: number; | ||
| card_quota?: string; | ||
| card_interest?: string; | ||
| order_id: string; | ||
| feedback_url?: string; | ||
| content_type?: string; | ||
| metadata?: any; | ||
| items?: Array<ItemModel>; | ||
| user?: UserModel; | ||
| extra?: ExtraModel; | ||
| } | ||
| export interface DestroySubscribeResponseParameters { | ||
| billing_key: string; | ||
| } | ||
| export interface UserTokenRequestParameters { | ||
| user_id: string; | ||
| email?: string; | ||
| username?: string; | ||
| gender?: number; | ||
| birth?: string; | ||
| phone?: string; | ||
| } | ||
| export interface UserTokenResponseParameters { | ||
| user_token: string; | ||
| expired_at: Date; | ||
| } | ||
| export interface SubscribePaymentReserveParameters { | ||
| billing_key: string; | ||
| order_name: string; | ||
| price: number; | ||
| tax_free?: number; | ||
| order_id: string; | ||
| reserve_execute_at: Date; | ||
| user?: UserModel; | ||
| items?: ItemModel; | ||
| metadata?: any; | ||
| feedback_url?: string; | ||
| content_type?: 'application/json' | 'application/x-www-form-urlencoded'; | ||
| } | ||
| export interface ShippingRequestParameters { | ||
| receipt_id: string; | ||
| receipt_url: string; | ||
| tracking_number: string; | ||
| delivery_corp: string; | ||
| shipping_prepayment?: boolean; | ||
| shipping_day?: number; | ||
| user?: UserModel; | ||
| company?: CompanyModel; | ||
| } | ||
| export interface SubscribePaymentReserveResponse { | ||
| reserve_id: string; | ||
| reserve_execute_at: Date; | ||
| } | ||
| export interface CancelSubscribeReserveResponse { | ||
| reserve_id: string; | ||
| success: boolean; | ||
| } | ||
| export interface CashReceiptPublishOnReceiptParameters { | ||
| receipt_id: string; | ||
| username?: string; | ||
| email?: string; | ||
| phone?: string; | ||
| identity_no: string; | ||
| cash_receipt_type: '소득공제' | '지출증빙'; | ||
| currency?: string; | ||
| } | ||
| export interface CashReceiptCancelOnReceiptParameters { | ||
| receipt_id: string; | ||
| cancel_username?: string; | ||
| cancel_message?: string; | ||
| } | ||
| export interface RequestCashReceiptParameters { | ||
| pg: string; | ||
| price: number; | ||
| tax_free?: number; | ||
| order_name: string; | ||
| cash_receipt_type: '소득공제' | '지출증빙'; | ||
| identity_no: string; | ||
| purchased_at?: Date; | ||
| order_id: string; | ||
| user?: UserModel; | ||
| extra?: ExtraModel; | ||
| } | ||
| export interface CancelCashReceiptParameters { | ||
| receipt_id: string; | ||
| cancel_username?: string; | ||
| cancel_message?: string; | ||
| } | ||
| export interface RequestAuthenticateParameters { | ||
| authentication_id: string; | ||
| pg: string; | ||
| method: string; | ||
| username: string; | ||
| identity_no: string; | ||
| carrier: string; | ||
| phone: string; | ||
| site_url?: string; | ||
| authenticate_type?: 'sms' | 'pass'; | ||
| order_name: string; | ||
| extra?: ExtraModel; | ||
| user?: UserModel; | ||
| metadata?: object; | ||
| } | ||
| export interface SubscribePaymentLookupResponse { | ||
| reserve_id: string; | ||
| receipt_id?: string; | ||
| order_id: string; | ||
| price: number; | ||
| tax_free: number; | ||
| order_name: string; | ||
| user: UserModel; | ||
| feedback_url: string; | ||
| metadata?: any; | ||
| content_type: 'application/json' | 'application/x-www-form-urlencoded'; | ||
| version: number; | ||
| extra: ExtraModel; | ||
| reserve_requested_at: string; | ||
| reserve_execute_at: string; | ||
| reserve_started_at: string; | ||
| reserve_finished_at: string; | ||
| reserve_revoked_at: string; | ||
| status: number; | ||
| } | ||
| export interface WalletRequestParameters { | ||
| user_id: string; | ||
| order_name: string; | ||
| price: number; | ||
| tax_free?: number; | ||
| order_id: string; | ||
| webhook_url?: string; | ||
| content_type?: 'application/json' | 'application/x-www-form-urlencoded'; | ||
| items?: ItemModel; | ||
| user?: UserModel; | ||
| extra?: ExtraModel; | ||
| metadata?: object; | ||
| sandbox: boolean; | ||
| } | ||
| export interface WalletPaymentResponseParameters { | ||
| cancelled_price: number; | ||
| wallet_data: WalletData; | ||
| metadata: Record<string, any>; | ||
| cancelled_tax_free: number; | ||
| method: string; | ||
| card_data: CardData; | ||
| sandbox: boolean; | ||
| receipt_id: string; | ||
| method_origin: string; | ||
| order_name: string; | ||
| method_origin_symbol: string; | ||
| receipt_url: string; | ||
| method_symbol: string; | ||
| purchased_at: string; | ||
| tax_free: number; | ||
| price: number; | ||
| company_name: string; | ||
| pg: string; | ||
| status_locale: string; | ||
| currency: string; | ||
| http_status: number; | ||
| order_id: number; | ||
| requested_at: string; | ||
| status: number; | ||
| } | ||
| export interface WalletData { | ||
| success: WalletDataPart; | ||
| failure: any[]; | ||
| } | ||
| export interface WalletDataPart { | ||
| wallet_id: string; | ||
| type: number; | ||
| sandbox: number; | ||
| order: number; | ||
| payment_status: number; | ||
| batch_data: BatchData; | ||
| card_code: string; | ||
| expired_at: string; | ||
| latest_purchased_at: string; | ||
| } | ||
| export interface BatchData { | ||
| card_no: string; | ||
| card_company: string; | ||
| card_company_code: string; | ||
| card_type: number; | ||
| card_hash: string; | ||
| } | ||
| export interface CardData { | ||
| tid: string; | ||
| card_approve_no: string; | ||
| card_no: string; | ||
| card_quota: string; | ||
| card_company_code: string; | ||
| card_company: string; | ||
| card_type?: string; | ||
| } |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| // public class WalletResponseData { | ||
| // | ||
| // List<WalletDataPart> data; | ||
| // int http_status; | ||
| // } |
+1
-1
| { | ||
| "name": "@bootpay/backend-js", | ||
| "version": "2.3.2", | ||
| "version": "2.3.3", | ||
| "description": "Bootpay Server Side Package for Node.js", | ||
@@ -5,0 +5,0 @@ "types": "dist/bootpay.d.ts", |
+106
-39
@@ -12,27 +12,30 @@ # Bootpay Server Side Package for Node.js [](https://www.npmjs.com/package/@bootpay/backend-js) | ||
| ## 목차 | ||
| - [사용하기](#사용하기) | ||
| - [1. 토큰 발급](#1-토큰-발급) | ||
| - [2. 결제 단건 조회](#2-결제-단건-조회) | ||
| - [3. 결제 취소 (전액 취소 / 부분 취소)](#3-결제-취소-전액-취소--부분-취소) | ||
| - [4. 자동/빌링/정기 결제](#4-자동빌링정기-결제) | ||
| - [4-1. 카드 빌링키 발급](#4-1-카드-빌링키-발급) | ||
| - [4-2. 계좌 빌링키 발급](#4-2-계좌-빌링키-발급) | ||
| - [4-3. 결제 요청하기](#4-3-결제-요청하기) | ||
| - [4-4. 결제 예약하기](#4-4-결제-예약하기) | ||
| - [4-5. 예약 조회하기](#4-5-예약-조회하기) | ||
| - [4-6. 예약 취소하기](#4-6-예약-취소하기) | ||
| - [4-7. 빌링키 삭제하기](#4-7-빌링키-삭제하기) | ||
| - [4-8. 빌링키 조회하기](#4-8-빌링키-조회하기) | ||
| - [5. 회원 토큰 발급요청](#5-회원-토큰-발급요청) | ||
| - [6. 서버 승인 요청](#6-서버-승인-요청) | ||
| - [7. 본인 인증 결과 조회](#7-본인-인증-결과-조회) | ||
| - [8. 에스크로 이용시 PG사로 배송정보 보내기](#8-에스크로-이용시-pg사로-배송정보-보내기) | ||
| - [9-1. 현금영수증 발행하기](#9-1-현금영수증-발행하기) | ||
| - [9-2. 현금영수증 발행 취소](#9-2-현금영수증-발행-취소) | ||
| - [9-3. 별건 현금영수증 발행](#9-3-별건-현금영수증-발행) | ||
| - [9-4. 별건 현금영수증 발행 취소](#9-4-별건-현금영수증-발행-취소) | ||
| - [Example 프로젝트](#example-프로젝트) | ||
| - [Documentation](#documentation) | ||
| - [기술문의](#기술문의) | ||
| - [License](#license) | ||
| ## 기능 | ||
| 1. (부트페이 통신을 위한) 토큰 발급 | ||
| 2. 결제 단건 조회 | ||
| 3. 결제 취소 (전액 취소 / 부분 취소) | ||
| 4. 신용카드 자동결제 (빌링결제) | ||
| 4-1. 빌링키 발급 | ||
| 4-2. 발급된 빌링키로 결제 승인 요청 | ||
| 4-3. 발급된 빌링키로 결제 예약 요청 | ||
| 4-4. 발급된 빌링키로 결제 예약 - 취소 요청 | ||
| 4-5. 빌링키 삭제 | ||
| 4-6. 빌링키 조회 | ||
| 5. (생체인증, 비밀번호 결제를 위한) 구매자 토큰 발급 | ||
| 6. 서버 승인 요청 | ||
| 7. 본인 인증 결과 조회 | ||
| 8. (에스크로 이용시) PG사로 배송정보 보내기 | ||
| ## npm으로 설치하기 | ||
@@ -71,3 +74,3 @@ | ||
| ## 1. (부트페이 통신을 위한) 토큰 발급 | ||
| ## 1. 토큰 발급 | ||
@@ -144,3 +147,4 @@ 부트페이와 서버간 통신을 하기 위해서는 부트페이 서버로부터 토큰을 발급받아야 합니다. | ||
| ## 4-1. 빌링키 발급 | ||
| ## 4. 자동/빌링/정기 결제 | ||
| ## 4-1. 카드 빌링키 발급 | ||
| REST API 방식으로 고객으로부터 카드 정보를 전달하여, PG사에게 빌링키를 발급받을 수 있습니다. | ||
@@ -177,4 +181,52 @@ 발급받은 빌링키를 저장하고 있다가, 원하는 시점, 원하는 금액에 결제 승인 요청하여 좀 더 자유로운 결제시나리오에 적용이 가능합니다. | ||
| ``` | ||
| ## 4-2. 발급된 빌링키로 결제 승인 요청 | ||
| ## 4-2. 계좌 빌링키 발급 | ||
| REST API 방식으로 고객의 계좌 정보를 전달하여, PG사에게 빌링키 발급을 요청합니다. 요청 후 빌링키가 바로 발급되진 않고, 출금동의 확인 절차까지 진행해야 빌링키가 발급됩니다. | ||
| 먼저 빌링키를 요청합니다. | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '5b8f6a4d396fa665fdc2b5ea', | ||
| private_key: 'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw=' | ||
| }) | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.requestSubscribeAutomaticTransferBillingKey({ | ||
| pg: '나이스페이', | ||
| order_name: '테스트결제', | ||
| subscription_id: (new Date()).getTime(), | ||
| price: 1000, | ||
| username: '홍길동', | ||
| bank_name: '국민', | ||
| bank_account: '67561234123492472', | ||
| identity_no: '901014', | ||
| cash_receipt_identity_no: '01012341234', | ||
| phone: '01012341234', | ||
| user: { | ||
| username: '홍길동', | ||
| phone: '01012345678' | ||
| } | ||
| }) | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| 이후 빌링키 발급 요청시 응답받은 receipt_id로, 출금 동의 확인을 요청합니다. | ||
| ```javascript | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.publishAutomaticTransferBillingKey('6655069ca691573f1bb9c28a') | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| ``` | ||
| ## 4-3. 결제 요청하기 | ||
| 발급된 빌링키로 원하는 시점에 원하는 금액으로 결제 승인 요청을 할 수 있습니다. 잔액이 부족하거나 도난 카드 등의 특별한 건이 아니면 PG사에서 결제를 바로 승인합니다. | ||
@@ -203,4 +255,4 @@ | ||
| ``` | ||
| ## 4-3. 발급된 빌링키로 결제 예약 요청 | ||
| 원하는 시점에 4-1로 결제 승인 요청을 보내도 되지만, 빌링키 발급 이후에 바로 결제 예약 할 수 있습니다. (빌링키당 최대 10건) | ||
| ## 4-4. 결제 예약하기 | ||
| 발급된 빌링키로 결제를 예약합니다. (빌링키당 최대 10건) | ||
| ```javascript | ||
@@ -229,5 +281,13 @@ (async () => { | ||
| ## 4-4. 발급된 빌링키로 결제 예약 - 취소 요청 | ||
| 빌링키로 예약된 결제건을 취소합니다. | ||
| ## 4-5. 예약 조회하기 | ||
| 예약시 응답받은 reserveId로 예약된 건을 조회합니다. | ||
| ```javascript | ||
| const reserve_id = "5b8f6a4d396fa665fdc2b5ea" | ||
| await Bootpay.subscribePaymentReserveLookup(reserve_id) | ||
| ``` | ||
| ## 4-6. 예약 취소하기 | ||
| 예약시 응답받은 reserveId로 예약된 건을 취소합니다. | ||
| ```javascript | ||
| (async () => { | ||
@@ -258,4 +318,4 @@ Bootpay.setConfiguration({ | ||
| ## 4-5. 빌링키 삭제 | ||
| 발급된 빌링키로 더 이상 사용되지 않도록, 삭제 요청합니다. | ||
| ## 4-7. 빌링키 삭제하기 | ||
| 발급된 빌링키를 삭제합니다. 삭제하더라도 예약된 결제건은 취소되지 않습니다. 예약된 결제건 취소를 원하시면 예약 취소하기를 요청하셔야 합니다. | ||
| ```javascript | ||
@@ -277,4 +337,5 @@ (async () => { | ||
| ## 4-6. 빌링키 조회 | ||
| (빌링키 발급 완료시 리턴받았던 receipt_id에 한정) 어떤 빌링키였는지 조회합니다. | ||
| ## 4-8. 빌링키 조회하기 | ||
| 클라이언트에서 빌링키 발급시, 보안상 클라이언트 이벤트에 빌링키를 전달해주지 않습니다. 그러므로 이 API를 통해 조회해야 합니다. | ||
| 다음은 빌링키 발급 요청했던 receiptId 로 빌링키를 조회합니다. | ||
| ```javascript | ||
@@ -296,6 +357,12 @@ (async () => { | ||
| 아래는 billingKey로 조회합니다. | ||
| ```javascript | ||
| const response = await Bootpay.lookupBillingKey('66542dfb4d18d5fc7b43e1b6') | ||
| console.log(response) | ||
| ``` | ||
| ## 5. 사용자 토큰 발급 | ||
| (부트페이 단독) 부트페이에서 제공하는 간편결제창, 생체인증 기반의 결제 사용을 위해서는 개발사에서 회원 고유번호를 관리해야하며, 해당 회원에 대한 사용자 토큰을 발급합니다. | ||
| 이 토큰값을 기반으로 클라이언트에서 결제요청 하시면 되겠습니다. | ||
| ## 5. 회원 토큰 발급요청 | ||
| ㅇㅇ페이 사용을 위해 가맹점 회원의 토큰을 발급합니다. 가맹점은 회원의 고유번호를 관리해야합니다. | ||
| 이 토큰값을 기반으로 클라이언트에서 결제요청(payload.user_token) 하시면 되겠습니다. | ||
| ```javascript | ||
@@ -401,3 +468,3 @@ (async () => { | ||
| [부트페이 개발매뉴얼](https://docs.bootpay.co.kr/next/)을 참조해주세요 | ||
| [부트페이 개발매뉴얼](https://developer.bootpay.co.kr/)을 참조해주세요 | ||
@@ -404,0 +471,0 @@ ## 기술문의 |
-61
| ### 2.3.2 | ||
| * 배송등록 api 필드 추가 | ||
| ### 2.3.1 | ||
| * requestSubscribePayment 함수 추가 | ||
| ### 2.3.0 | ||
| * 계좌 자동 결제 추가 | ||
| ### 2.1.11 | ||
| * 필드명 back_username -> bank_username 으로 오타 수정 | ||
| ### 2.1.4 | ||
| * 날짜 타입을 string -> Date 로 명시적으로 수정 | ||
| ### 2.1.3 | ||
| * 정기결제요청시 feedback_url, metadata, content_type 파라미터 정의 추가 | ||
| ### 2.1.2 | ||
| * 버전 재배포 | ||
| ### 2.1.1 | ||
| * 정기결제 예약시 order_id 파라미터 정의 추가 | ||
| ### 2.1.0 | ||
| * 결제취소 요청시 refund optional 로 수정 | ||
| ### 2.0.9 ( Stable ) | ||
| * 네이버페이 포인트, 페이코포인트, 카카오머니, 토스포인트 결제시 리턴되는 포맷 interface 추가 정의 | ||
| ### 2.0.8 | ||
| * 현금영수증 cash_receipt_data interface 정의 | ||
| ### 2.0.7 | ||
| * inteface model 정의 parameters 누락 및 optional 체크 | ||
| * 현금영수증 별건 발행 / 취소 API 추가 | ||
| ### 2.0.6 | ||
| * SubscriptionBillingResponseParameters interface 누락된 값 추가 ( status, status_locale, gateway_url, method_symbol ) | ||
| ### 2.0.5 | ||
| * typescript에서 TS7016 root에서 import가 되지 않는 문제 해결 | ||
| ### 2.0.4 | ||
| * package.json import가 되지 않는 환경 예외처리 | ||
| ### 2.0.3 | ||
| * 기존 결제 현금영수증 발행 | ||
| * 별건 현금영수증 발행 | ||
| * REST API 통신 요청시 Header에 버전 및 SDK 종류 명시 ( 부트페이 서버에서 CS용으로 수집 ) | ||
| ### 2.0.0 | ||
| 새로운 v2 API에 맞도록 수정 |
| import { BootpayBackendNodejsResource } from './lib/resource'; | ||
| import { AccessTokenResponseParameters, CancelPaymentParameters, CertificateResponseParameters, DestroySubscribeResponseParameters, ReceiptResponseParameters, SubscriptionBillingRequestParameters, SubscriptionBillingResponseParameters, SubscriptionCardPaymentRequestParameters, UserTokenRequestParameters, UserTokenResponseParameters, SubscribePaymentReserveParameters, SubscribePaymentReserveResponse, CancelSubscribeReserveResponse, ShippingRequestParameters, CashReceiptPublishOnReceiptParameters, CashReceiptCancelOnReceiptParameters, RequestCashReceiptParameters, CancelCashReceiptParameters, RequestAuthenticateParameters, SubscribePaymentLookupResponse, SubscriptionBillingTransferRequestParameters, SubscriptionPaymentRequestParameters } from './lib/response'; | ||
| declare class BootpayBackendNodejs extends BootpayBackendNodejsResource { | ||
| constructor(); | ||
| /** | ||
| * Get Access Token | ||
| * Comment by GOSOMI | ||
| * @returns Promise<AccessTokenResponseParameters> | ||
| */ | ||
| getAccessToken(): Promise<AccessTokenResponseParameters>; | ||
| /** | ||
| * Lookup Receipt | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @param lookupUserData: boolean | ||
| */ | ||
| receiptPayment(receiptId: string, lookupUserData?: boolean): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * Cancel Payment | ||
| * Comment by GOSOMI | ||
| * @param cancelPayment: CancelPaymentParameters | ||
| * @returns Promise<CancelPaymentParameters> | ||
| */ | ||
| cancelPayment(cancelPayment: CancelPaymentParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * Lookup Certificate Data | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @returns Promise<CertificateResponseParameters> | ||
| */ | ||
| certificate(receiptId: string): Promise<CertificateResponseParameters>; | ||
| /** | ||
| * ConfirmPayment | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @returns Promise<ReceiptResponseParameters> | ||
| */ | ||
| confirmPayment(receiptId: string): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * lookupSubscribeBillingKey | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @returns Promise<SubscriptionBillingResponseParameters> | ||
| */ | ||
| lookupSubscribeBillingKey(receiptId: string): Promise<SubscriptionBillingResponseParameters>; | ||
| /** | ||
| * lookupBillingKey | ||
| * Comment by ehowlsla | ||
| * @param billingKey: string | ||
| * @returns Promise<SubscriptionBillingResponseParameters> | ||
| */ | ||
| lookupBillingKey(billingKey: string): Promise<SubscriptionBillingResponseParameters>; | ||
| /** | ||
| * requestSubscribeBillingKey | ||
| * Comment by GOSOMI | ||
| * @param subscriptionBillingRequest: SubscriptionBillingRequestParameters | ||
| * @returns Promise<SubscriptionBillingResponseParameters> | ||
| */ | ||
| requestSubscribeBillingKey(subscriptionBillingRequest: SubscriptionBillingRequestParameters): Promise<SubscriptionBillingResponseParameters>; | ||
| /** | ||
| * requestSubscribeCardPayment | ||
| * Comment by GOSOMI | ||
| * @param subscriptionCardRequest: SubscriptionCardPaymentRequestParameters | ||
| * @returns Promise<ReceiptResponseParameters> | ||
| */ | ||
| requestSubscribeCardPayment(subscriptionCardRequest: SubscriptionCardPaymentRequestParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * requestSubscribePayment | ||
| * Comment by ehowlsla | ||
| * @param subscriptionRequest: SubscriptionPaymentRequestParameters | ||
| * @returns Promise<ReceiptResponseParameters> | ||
| */ | ||
| requestSubscribePayment(subscriptionRequest: SubscriptionPaymentRequestParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * destroyBillingKey | ||
| * Comment by GOSOMI | ||
| * @param billingKey:string | ||
| * @returns Promise<DestroySubscribeResponseParameters> | ||
| */ | ||
| destroyBillingKey(billingKey: string): Promise<DestroySubscribeResponseParameters>; | ||
| /** | ||
| * requestUserToken | ||
| * Comment by GOSOMI | ||
| * @param userTokenRequest:UserTokenRequestParameters | ||
| * @returns Promise<UserTokenResponseParameters> | ||
| */ | ||
| requestUserToken(userTokenRequest: UserTokenRequestParameters): Promise<UserTokenResponseParameters>; | ||
| /** | ||
| * subscribePaymentReserve | ||
| * Comment by GOSOMI | ||
| * @param subscribePaymentReserveRequest:SubscribePaymentReserveParameters | ||
| * @returns Promise<SubscribePaymentReserveResponse> | ||
| */ | ||
| subscribePaymentReserve(subscribePaymentReserveRequest: SubscribePaymentReserveParameters): Promise<SubscribePaymentReserveResponse>; | ||
| /** | ||
| * SubscribeReserve Lookup | ||
| * Comment by GOSOMI | ||
| * @date: 2023-03-07 | ||
| * @param reserveId: string | ||
| * @returns Promise<SubscribeLookupResponse> | ||
| */ | ||
| subscribePaymentReserveLookup(reserveId: string): Promise<SubscribePaymentLookupResponse>; | ||
| /** | ||
| * cancelSubscribeReserve | ||
| * Comment by GOSOMI | ||
| * @param reserveId:string | ||
| * @returns Promise<CancelSubscribeReserveResponse> | ||
| */ | ||
| cancelSubscribeReserve(reserveId: string): Promise<CancelSubscribeReserveResponse>; | ||
| /** | ||
| * 배송시작 REST API 시작 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-06-14 | ||
| */ | ||
| shippingStart(shippingRequest: ShippingRequestParameters): Promise<ReceiptResponseParameters | any>; | ||
| /** | ||
| * 기존결제 현금영수증 발행 API | ||
| * Comment by GOSOMI | ||
| * @date: 2022-07-28 | ||
| */ | ||
| cashReceiptPublishOnReceipt(cashReceiptPublishRequest: CashReceiptPublishOnReceiptParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * 기존 결제 현금영수증 발행 취소 API | ||
| * Comment by GOSOMI | ||
| * @date: 2022-08-09 | ||
| */ | ||
| cashReceiptCancelOnReceipt(cashReceiptCancelRequest: CashReceiptCancelOnReceiptParameters): Promise<null>; | ||
| /** | ||
| * 별건 현금영수증 발행하기 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-08-09 | ||
| */ | ||
| requestCashReceipt(cashReceiptRequest: RequestCashReceiptParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * 별건 현금영수증 취소하기 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-08-09 | ||
| */ | ||
| cancelCashReceipt(cancelCashReceiptRequest: CancelCashReceiptParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * 본인인증 REST API 요청 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-11-07 | ||
| */ | ||
| requestAuthentication(authenticateRequest: RequestAuthenticateParameters): Promise<CertificateResponseParameters>; | ||
| /** | ||
| * 본인인증 승인하기 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-11-07 | ||
| */ | ||
| confirmAuthentication(receipt_id: string, otp?: null | string): Promise<CertificateResponseParameters>; | ||
| /** | ||
| * 본인인증 SMS 재전송 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-11-07 | ||
| */ | ||
| realarmAuthentication(receipt_id: string): Promise<CertificateResponseParameters>; | ||
| /** | ||
| * 계좌 자동이체를 위한 빌링키 발급 요청 | ||
| * Comment by ehowlsla | ||
| * @date: 2024-05-27 | ||
| */ | ||
| requestSubscribeAutomaticTransferBillingKey(parameters: SubscriptionBillingTransferRequestParameters): Promise<ReceiptResponseParameters>; | ||
| /** | ||
| * 계좌 자동이체를 위한 출금 동의 확인 요청 | ||
| * Comment by ehowlsla | ||
| * @date: 2024-05-27 | ||
| */ | ||
| publishAutomaticTransferBillingKey(receipt_id: string): Promise<SubscriptionBillingResponseParameters>; | ||
| } | ||
| declare const Bootpay: BootpayBackendNodejs; | ||
| export { Bootpay }; | ||
| export default Bootpay; | ||
| export * from './lib/response'; | ||
| export * from './lib/resource'; |
-471
| "use strict"; | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| var desc = Object.getOwnPropertyDescriptor(m, k); | ||
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
| desc = { enumerable: true, get: function() { return m[k]; } }; | ||
| } | ||
| Object.defineProperty(o, k2, desc); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
| for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
| }; | ||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
| function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
| return new (P || (P = Promise))(function (resolve, reject) { | ||
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
| function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
| }); | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.Bootpay = void 0; | ||
| const resource_1 = require("./lib/resource"); | ||
| class BootpayBackendNodejs extends resource_1.BootpayBackendNodejsResource { | ||
| constructor() { | ||
| super(); | ||
| } | ||
| /** | ||
| * Get Access Token | ||
| * Comment by GOSOMI | ||
| * @returns Promise<AccessTokenResponseParameters> | ||
| */ | ||
| getAccessToken() { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const { application_id, private_key } = this.bootpayConfiguration; | ||
| const response = yield this.post('request/token', { | ||
| application_id, | ||
| private_key | ||
| }); | ||
| // set Token | ||
| this.setToken(response.access_token); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * Lookup Receipt | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @param lookupUserData: boolean | ||
| */ | ||
| receiptPayment(receiptId_1) { | ||
| return __awaiter(this, arguments, void 0, function* (receiptId, lookupUserData = false) { | ||
| try { | ||
| const response = yield this.get(`receipt/${receiptId}?lookup_user_data=${lookupUserData ? 'true' : 'false'}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * Cancel Payment | ||
| * Comment by GOSOMI | ||
| * @param cancelPayment: CancelPaymentParameters | ||
| * @returns Promise<CancelPaymentParameters> | ||
| */ | ||
| cancelPayment(cancelPayment) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('cancel', Object.assign({}, cancelPayment)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * Lookup Certificate Data | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @returns Promise<CertificateResponseParameters> | ||
| */ | ||
| certificate(receiptId) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.get(`certificate/${receiptId}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * ConfirmPayment | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @returns Promise<ReceiptResponseParameters> | ||
| */ | ||
| confirmPayment(receiptId) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('confirm', { | ||
| receipt_id: receiptId | ||
| }); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * lookupSubscribeBillingKey | ||
| * Comment by GOSOMI | ||
| * @param receiptId: string | ||
| * @returns Promise<SubscriptionBillingResponseParameters> | ||
| */ | ||
| lookupSubscribeBillingKey(receiptId) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.get(`subscribe/billing_key/${receiptId}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * lookupBillingKey | ||
| * Comment by ehowlsla | ||
| * @param billingKey: string | ||
| * @returns Promise<SubscriptionBillingResponseParameters> | ||
| */ | ||
| lookupBillingKey(billingKey) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.get(`billing_key/${billingKey}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * requestSubscribeBillingKey | ||
| * Comment by GOSOMI | ||
| * @param subscriptionBillingRequest: SubscriptionBillingRequestParameters | ||
| * @returns Promise<SubscriptionBillingResponseParameters> | ||
| */ | ||
| requestSubscribeBillingKey(subscriptionBillingRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/subscribe', Object.assign({}, subscriptionBillingRequest)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * requestSubscribeCardPayment | ||
| * Comment by GOSOMI | ||
| * @param subscriptionCardRequest: SubscriptionCardPaymentRequestParameters | ||
| * @returns Promise<ReceiptResponseParameters> | ||
| */ | ||
| requestSubscribeCardPayment(subscriptionCardRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('subscribe/payment', Object.assign({}, subscriptionCardRequest)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * requestSubscribePayment | ||
| * Comment by ehowlsla | ||
| * @param subscriptionRequest: SubscriptionPaymentRequestParameters | ||
| * @returns Promise<ReceiptResponseParameters> | ||
| */ | ||
| requestSubscribePayment(subscriptionRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('subscribe/payment', Object.assign({}, subscriptionRequest)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * destroyBillingKey | ||
| * Comment by GOSOMI | ||
| * @param billingKey:string | ||
| * @returns Promise<DestroySubscribeResponseParameters> | ||
| */ | ||
| destroyBillingKey(billingKey) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.delete(`subscribe/billing_key/${billingKey}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * requestUserToken | ||
| * Comment by GOSOMI | ||
| * @param userTokenRequest:UserTokenRequestParameters | ||
| * @returns Promise<UserTokenResponseParameters> | ||
| */ | ||
| requestUserToken(userTokenRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/user/token', Object.assign({}, userTokenRequest)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * subscribePaymentReserve | ||
| * Comment by GOSOMI | ||
| * @param subscribePaymentReserveRequest:SubscribePaymentReserveParameters | ||
| * @returns Promise<SubscribePaymentReserveResponse> | ||
| */ | ||
| subscribePaymentReserve(subscribePaymentReserveRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('subscribe/payment/reserve', Object.assign({}, subscribePaymentReserveRequest)); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * SubscribeReserve Lookup | ||
| * Comment by GOSOMI | ||
| * @date: 2023-03-07 | ||
| * @param reserveId: string | ||
| * @returns Promise<SubscribeLookupResponse> | ||
| */ | ||
| subscribePaymentReserveLookup(reserveId) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.get(`subscribe/payment/reserve/${reserveId}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * cancelSubscribeReserve | ||
| * Comment by GOSOMI | ||
| * @param reserveId:string | ||
| * @returns Promise<CancelSubscribeReserveResponse> | ||
| */ | ||
| cancelSubscribeReserve(reserveId) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.delete(`subscribe/payment/reserve/${reserveId}`); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 배송시작 REST API 시작 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-06-14 | ||
| */ | ||
| shippingStart(shippingRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.put(`escrow/shipping/start/${shippingRequest.receipt_id}`, shippingRequest); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 기존결제 현금영수증 발행 API | ||
| * Comment by GOSOMI | ||
| * @date: 2022-07-28 | ||
| */ | ||
| cashReceiptPublishOnReceipt(cashReceiptPublishRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/receipt/cash/publish', cashReceiptPublishRequest); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 기존 결제 현금영수증 발행 취소 API | ||
| * Comment by GOSOMI | ||
| * @date: 2022-08-09 | ||
| */ | ||
| cashReceiptCancelOnReceipt(cashReceiptCancelRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.delete(`request/receipt/cash/cancel/${cashReceiptCancelRequest.receipt_id}`, { | ||
| params: cashReceiptCancelRequest | ||
| }); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 별건 현금영수증 발행하기 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-08-09 | ||
| */ | ||
| requestCashReceipt(cashReceiptRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/cash/receipt', cashReceiptRequest); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 별건 현금영수증 취소하기 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-08-09 | ||
| */ | ||
| cancelCashReceipt(cancelCashReceiptRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.delete(`request/cash/receipt/${cancelCashReceiptRequest.receipt_id}`, { | ||
| params: cancelCashReceiptRequest | ||
| }); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 본인인증 REST API 요청 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-11-07 | ||
| */ | ||
| requestAuthentication(authenticateRequest) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/authentication', authenticateRequest); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 본인인증 승인하기 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-11-07 | ||
| */ | ||
| confirmAuthentication(receipt_id_1) { | ||
| return __awaiter(this, arguments, void 0, function* (receipt_id, otp = null) { | ||
| try { | ||
| const response = yield this.post('authenticate/confirm', { | ||
| receipt_id, | ||
| otp | ||
| }); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 본인인증 SMS 재전송 | ||
| * Comment by GOSOMI | ||
| * @date: 2022-11-07 | ||
| */ | ||
| realarmAuthentication(receipt_id) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('authenticate/realarm', { | ||
| receipt_id | ||
| }); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 계좌 자동이체를 위한 빌링키 발급 요청 | ||
| * Comment by ehowlsla | ||
| * @date: 2024-05-27 | ||
| */ | ||
| requestSubscribeAutomaticTransferBillingKey(parameters) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/subscribe/automatic-transfer', parameters); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| /** | ||
| * 계좌 자동이체를 위한 출금 동의 확인 요청 | ||
| * Comment by ehowlsla | ||
| * @date: 2024-05-27 | ||
| */ | ||
| publishAutomaticTransferBillingKey(receipt_id) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.post('request/subscribe/automatic-transfer/publish', { | ||
| "receipt_id": receipt_id | ||
| }); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| } | ||
| const Bootpay = new BootpayBackendNodejs(); | ||
| exports.Bootpay = Bootpay; | ||
| exports.default = Bootpay; | ||
| __exportStar(require("./lib/response"), exports); | ||
| __exportStar(require("./lib/resource"), exports); |
| import { AxiosInstance, AxiosRequestConfig } from 'axios'; | ||
| export interface BootpayRestApiErrorResponse<T = any> { | ||
| error_code?: number; | ||
| pg_error_code?: number; | ||
| message?: string; | ||
| } | ||
| interface BootpayEntrypoints { | ||
| development: string; | ||
| stage: string; | ||
| production: string; | ||
| } | ||
| interface BootpayConfiguration { | ||
| application_id: string; | ||
| private_key: string; | ||
| mode?: 'development' | 'production' | 'stage'; | ||
| } | ||
| export declare class BootpayBackendNodejsResource { | ||
| $http: AxiosInstance; | ||
| $token?: string; | ||
| mode: 'development' | 'production' | 'stage'; | ||
| bootpayConfiguration: BootpayConfiguration; | ||
| API_ENTRYPOINTS: BootpayEntrypoints; | ||
| apiVersion: string; | ||
| sdkVersion: string; | ||
| constructor(); | ||
| /** | ||
| * Environments | ||
| * Comment by GOSOMI | ||
| * @date: 2022-04-12 | ||
| * @param configuration: BootpayConfiguration | ||
| * @returns void | ||
| */ | ||
| setConfiguration(configuration: BootpayConfiguration): void; | ||
| /** | ||
| * SET API Version | ||
| * Comment by GOSOMI | ||
| * @date: 2022-07-29 | ||
| */ | ||
| setApiVersion(version: string): void; | ||
| /** | ||
| * Set Access Token | ||
| * Comment by GOSOMI | ||
| * @date: 2022-04-12 | ||
| */ | ||
| setToken(token: string): void; | ||
| entrypoints(url: string): string; | ||
| get<T = any, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<T>; | ||
| post<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>; | ||
| put<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>; | ||
| delete<T = any, D = any>(url: string, config?: AxiosRequestConfig<D>): Promise<T>; | ||
| } | ||
| export {}; |
| "use strict"; | ||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
| function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
| return new (P || (P = Promise))(function (resolve, reject) { | ||
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
| function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
| }); | ||
| }; | ||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||
| return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.BootpayBackendNodejsResource = void 0; | ||
| const axios_1 = __importDefault(require("axios")); | ||
| class BootpayBackendNodejsResource { | ||
| constructor() { | ||
| this.apiVersion = '5.0.0'; | ||
| this.sdkVersion = '2.3.0'; | ||
| this.mode = 'production'; | ||
| this.$http = axios_1.default.create({ | ||
| timeout: 60000 | ||
| }); | ||
| this.$token = undefined; | ||
| this.bootpayConfiguration = { | ||
| application_id: '', | ||
| private_key: '', | ||
| mode: 'production' | ||
| }; | ||
| this.API_ENTRYPOINTS = { | ||
| development: 'https://dev-api.bootpay.co.kr/v2', | ||
| stage: 'https://stage-api.bootpay.co.kr/v2', | ||
| production: 'https://api.bootpay.co.kr/v2' | ||
| }; | ||
| this.$http.interceptors.response.use((response) => { | ||
| if (response.request !== undefined && response.headers !== undefined) { | ||
| return response.data; | ||
| } | ||
| else { | ||
| // 오류를 리턴 | ||
| return response.data; | ||
| } | ||
| }, (error) => { | ||
| if (error.response !== undefined) { | ||
| return Promise.reject(error.response.data); | ||
| } | ||
| else { | ||
| return Promise.reject({ | ||
| error_code: -100, | ||
| message: `Request Rest Api Failed to Bootpay Server, ${error.message}` | ||
| }); | ||
| } | ||
| }); | ||
| // @ts-expect-error | ||
| this.$http.interceptors.request.use((config) => { | ||
| if (config.headers !== undefined) { | ||
| if (this.$token !== undefined) { | ||
| config.headers.authorization = `Bearer ${this.$token}`; | ||
| } | ||
| config.headers['Content-Type'] = 'application/json'; | ||
| config.headers['Accept'] = 'application/json'; | ||
| config.headers['BOOTPAY-SDK-VERSION'] = this.sdkVersion; | ||
| config.headers['BOOTPAY-API-VERSION'] = this.apiVersion; | ||
| config.headers['BOOTPAY-SDK-TYPE'] = 301; | ||
| } | ||
| return config; | ||
| }, (error) => { | ||
| return Promise.reject(error); | ||
| }); | ||
| } | ||
| /** | ||
| * Environments | ||
| * Comment by GOSOMI | ||
| * @date: 2022-04-12 | ||
| * @param configuration: BootpayConfiguration | ||
| * @returns void | ||
| */ | ||
| setConfiguration(configuration) { | ||
| if (configuration.mode === undefined) { | ||
| configuration.mode = 'production'; | ||
| } | ||
| this.bootpayConfiguration = configuration; | ||
| } | ||
| /** | ||
| * SET API Version | ||
| * Comment by GOSOMI | ||
| * @date: 2022-07-29 | ||
| */ | ||
| setApiVersion(version) { | ||
| this.apiVersion = version; | ||
| } | ||
| /** | ||
| * Set Access Token | ||
| * Comment by GOSOMI | ||
| * @date: 2022-04-12 | ||
| */ | ||
| setToken(token) { | ||
| this.$token = token; | ||
| } | ||
| entrypoints(url) { | ||
| return [this.API_ENTRYPOINTS[this.bootpayConfiguration.mode === undefined ? 'production' : this.bootpayConfiguration.mode], url].join('/'); | ||
| } | ||
| get(url, config) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.$http.get(this.entrypoints(url), config); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| post(url, data, config) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.$http.post(this.entrypoints(url), data, config); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| put(url, data, config) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.$http.put(this.entrypoints(url), data, config); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| delete(url, config) { | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| try { | ||
| const response = yield this.$http.delete(this.entrypoints(url), config); | ||
| return Promise.resolve(response); | ||
| } | ||
| catch (e) { | ||
| return Promise.reject(e); | ||
| } | ||
| }); | ||
| } | ||
| } | ||
| exports.BootpayBackendNodejsResource = BootpayBackendNodejsResource; |
| export interface AccessTokenResponseParameters { | ||
| expire_in: number; | ||
| access_token: string; | ||
| } | ||
| export interface ReceiptResponseParameters { | ||
| receipt_id: string; | ||
| order_id: string; | ||
| price: number; | ||
| tax_free: number; | ||
| cancelled_price: number; | ||
| cancelled_tax_free: number; | ||
| order_name: string; | ||
| company_name: string; | ||
| gateway_url: string; | ||
| metadata: string; | ||
| sandbox: boolean; | ||
| pg: string; | ||
| method: string; | ||
| method_symbol: string; | ||
| method_origin: string; | ||
| method_origin_symbol: string; | ||
| purchased_at?: Date; | ||
| requested_at: Date; | ||
| cancelled_at?: Date; | ||
| status: number; | ||
| status_locale: string; | ||
| receipt_url?: string; | ||
| card_data?: CardData; | ||
| phone_data?: PhoneData; | ||
| bank_data?: BankData; | ||
| vbank_data?: BankData; | ||
| escrow_data?: EscrowData; | ||
| cash_receipt_data?: CashReceiptData; | ||
| naver_point_data?: NaverPointData; | ||
| kakao_moneny_data?: KakaoMoneyData; | ||
| payco_point_data?: PaycoPointData; | ||
| toss_point_data?: TossPointData; | ||
| currency?: string; | ||
| } | ||
| export interface ExtraModel { | ||
| subscribe_test_payment: boolean; | ||
| } | ||
| export interface UserModel { | ||
| id?: string; | ||
| username?: string; | ||
| phone?: string; | ||
| email?: string; | ||
| } | ||
| export interface CompanyModel { | ||
| name?: string; | ||
| phone?: string; | ||
| zipcode?: string; | ||
| addr1?: string; | ||
| addr2?: string; | ||
| } | ||
| export interface ItemModel { | ||
| id?: string; | ||
| name?: string; | ||
| qty?: number; | ||
| price?: number; | ||
| } | ||
| export interface BillingData { | ||
| card_no: string; | ||
| card_company: string; | ||
| card_company_code: string; | ||
| card_type: number; | ||
| card_hash?: string; | ||
| rtn_key_info?: string; | ||
| } | ||
| export interface CardData { | ||
| tid: string; | ||
| card_approve_no: string; | ||
| card_no: string; | ||
| card_quota: string; | ||
| card_company_code: string; | ||
| card_company: string; | ||
| card_interest: string; | ||
| receipt_url?: string; | ||
| card_type?: string; | ||
| card_owner_type?: string; | ||
| point?: number; | ||
| } | ||
| export interface PhoneData { | ||
| tid: string; | ||
| auth_no?: string; | ||
| phone?: string; | ||
| receipt_url?: string; | ||
| } | ||
| export interface BankData { | ||
| tid: string; | ||
| bank_code: string; | ||
| bank_name: string; | ||
| bank_username: string; | ||
| bank_account?: string; | ||
| sender_name?: string; | ||
| expired_at?: Date; | ||
| cash_receipt_tid?: string; | ||
| cash_receipt_type?: string; | ||
| cash_receipt_no?: string; | ||
| receipt_url?: string; | ||
| } | ||
| export interface EscrowData { | ||
| status: number; | ||
| status_locale: string; | ||
| shipping_started_at: Date; | ||
| receipt_confirmed_at: Date | null; | ||
| } | ||
| export interface CashReceiptData { | ||
| tid?: string; | ||
| cash_receipt_type?: number; | ||
| cash_receipt_no?: string; | ||
| receipt_url?: string; | ||
| } | ||
| export interface KakaoMoneyData { | ||
| tid?: string; | ||
| } | ||
| export interface NaverPointData { | ||
| tid?: string; | ||
| } | ||
| export interface PaycoPointData { | ||
| tid?: string; | ||
| } | ||
| export interface TossPointData { | ||
| tid?: string; | ||
| } | ||
| export interface CancelPaymentParameters { | ||
| receipt_id: string; | ||
| cancel_price?: number; | ||
| cancel_tax_free?: number; | ||
| cancel_id?: string; | ||
| cancel_username?: string; | ||
| cancel_message?: string; | ||
| refund?: Refund; | ||
| } | ||
| export interface Refund { | ||
| bank_account: string; | ||
| bank_username: string; | ||
| bank_code: string; | ||
| } | ||
| export interface CertificateResponseParameters { | ||
| receipt_id: string; | ||
| authenticate_id: string; | ||
| pg: string; | ||
| method: string; | ||
| method_origin: string; | ||
| method_origin_symbol: string; | ||
| authenticated_at: Date; | ||
| requested_at: Date; | ||
| status: number; | ||
| status_locale: string; | ||
| authenticate_data: AuthenticateData; | ||
| } | ||
| export interface AuthenticateData { | ||
| name?: string; | ||
| phone?: string; | ||
| unique?: string; | ||
| birth?: Date; | ||
| gender?: number; | ||
| foreigner?: number; | ||
| carrier?: string; | ||
| number_of_realarms?: number; | ||
| tid: string; | ||
| } | ||
| export interface SubscriptionBillingRequestParameters { | ||
| pg: string; | ||
| method?: string; | ||
| order_name: string; | ||
| subscription_id: string; | ||
| card_no: string; | ||
| card_pw: string; | ||
| card_identity_no: string; | ||
| card_expire_year: string; | ||
| card_expire_month: string; | ||
| price?: number; | ||
| tax_free?: number; | ||
| extra: ExtraModel; | ||
| user: UserModel; | ||
| metadata?: object; | ||
| } | ||
| export interface SubscriptionBillingTransferRequestParameters { | ||
| pg: string; | ||
| method?: string; | ||
| order_name: string; | ||
| subscription_id: string; | ||
| auth_type: 'ARS' | '간편인증'; | ||
| username: string; | ||
| bank_name: string; | ||
| bank_account: string; | ||
| identity_no: string; | ||
| cash_receipt_type?: '소득공제' | '지출증빙'; | ||
| cash_receipt_identity_no?: string; | ||
| phone?: string; | ||
| price?: number; | ||
| tax_free?: number; | ||
| extra: ExtraModel; | ||
| user: UserModel; | ||
| metadata?: object; | ||
| } | ||
| export interface SubscriptionBillingResponseParameters { | ||
| billing_key: string; | ||
| billing_data: BillingData; | ||
| receipt_id: string; | ||
| subscription_id: string; | ||
| gateway_url?: string; | ||
| metadata: object; | ||
| pg: string; | ||
| method: string; | ||
| method_origin?: string; | ||
| method_origin_symbol?: string; | ||
| method_symbol?: string; | ||
| published_at: Date; | ||
| requested_at: Date; | ||
| receipt_data: ReceiptResponseParameters; | ||
| billing_expire_at: Date; | ||
| status: number; | ||
| status_locale?: string; | ||
| } | ||
| export interface SubscriptionCardPaymentRequestParameters { | ||
| billing_key: string; | ||
| order_name: string; | ||
| price: number; | ||
| tax_free?: number; | ||
| card_quota?: string; | ||
| card_interest?: string; | ||
| order_id: string; | ||
| feedback_url?: string; | ||
| content_type?: string; | ||
| metadata?: any; | ||
| items?: Array<ItemModel>; | ||
| user?: UserModel; | ||
| extra?: ExtraModel; | ||
| } | ||
| export interface SubscriptionPaymentRequestParameters { | ||
| billing_key: string; | ||
| order_name: string; | ||
| price: number; | ||
| tax_free?: number; | ||
| card_quota?: string; | ||
| card_interest?: string; | ||
| order_id: string; | ||
| feedback_url?: string; | ||
| content_type?: string; | ||
| metadata?: any; | ||
| items?: Array<ItemModel>; | ||
| user?: UserModel; | ||
| extra?: ExtraModel; | ||
| } | ||
| export interface DestroySubscribeResponseParameters { | ||
| billing_key: string; | ||
| } | ||
| export interface UserTokenRequestParameters { | ||
| user_id: string; | ||
| email?: string; | ||
| username?: string; | ||
| gender?: number; | ||
| birth?: string; | ||
| phone?: string; | ||
| } | ||
| export interface UserTokenResponseParameters { | ||
| user_token: string; | ||
| expired_at: Date; | ||
| } | ||
| export interface SubscribePaymentReserveParameters { | ||
| billing_key: string; | ||
| order_name: string; | ||
| price: number; | ||
| tax_free?: number; | ||
| order_id: string; | ||
| reserve_execute_at: Date; | ||
| user?: UserModel; | ||
| items?: ItemModel; | ||
| metadata?: any; | ||
| feedback_url?: string; | ||
| content_type?: 'application/json' | 'application/x-www-form-urlencoded'; | ||
| } | ||
| export interface ShippingRequestParameters { | ||
| receipt_id: string; | ||
| receipt_url: string; | ||
| tracking_number: string; | ||
| delivery_corp: string; | ||
| shipping_prepayment?: boolean; | ||
| shipping_day?: number; | ||
| user?: UserModel; | ||
| company?: CompanyModel; | ||
| } | ||
| export interface SubscribePaymentReserveResponse { | ||
| reserve_id: string; | ||
| reserve_execute_at: Date; | ||
| } | ||
| export interface CancelSubscribeReserveResponse { | ||
| reserve_id: string; | ||
| success: boolean; | ||
| } | ||
| export interface CashReceiptPublishOnReceiptParameters { | ||
| receipt_id: string; | ||
| username?: string; | ||
| email?: string; | ||
| phone?: string; | ||
| identity_no: string; | ||
| cash_receipt_type: '소득공제' | '지출증빙'; | ||
| currency?: string; | ||
| } | ||
| export interface CashReceiptCancelOnReceiptParameters { | ||
| receipt_id: string; | ||
| cancel_username?: string; | ||
| cancel_message?: string; | ||
| } | ||
| export interface RequestCashReceiptParameters { | ||
| pg: string; | ||
| price: number; | ||
| tax_free?: number; | ||
| order_name: string; | ||
| cash_receipt_type: '소득공제' | '지출증빙'; | ||
| identity_no: string; | ||
| purchased_at?: Date; | ||
| order_id: string; | ||
| user?: UserModel; | ||
| extra?: ExtraModel; | ||
| } | ||
| export interface CancelCashReceiptParameters { | ||
| receipt_id: string; | ||
| cancel_username?: string; | ||
| cancel_message?: string; | ||
| } | ||
| export interface RequestAuthenticateParameters { | ||
| authentication_id: string; | ||
| pg: string; | ||
| method: string; | ||
| username: string; | ||
| identity_no: string; | ||
| carrier: string; | ||
| phone: string; | ||
| site_url?: string; | ||
| authenticate_type?: 'sms' | 'pass'; | ||
| order_name: string; | ||
| extra?: ExtraModel; | ||
| user?: UserModel; | ||
| metadata?: object; | ||
| } | ||
| export interface SubscribePaymentLookupResponse { | ||
| reserve_id: string; | ||
| receipt_id?: string; | ||
| order_id: string; | ||
| price: number; | ||
| tax_free: number; | ||
| order_name: string; | ||
| user: UserModel; | ||
| feedback_url: string; | ||
| metadata?: any; | ||
| content_type: 'application/json' | 'application/x-www-form-urlencoded'; | ||
| version: number; | ||
| extra: ExtraModel; | ||
| reserve_requested_at: string; | ||
| reserve_execute_at: string; | ||
| reserve_started_at: string; | ||
| reserve_finished_at: string; | ||
| reserve_revoked_at: string; | ||
| status: number; | ||
| } |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); |
-401
| # Bootpay Server Side Package for Node.js [](https://www.npmjs.com/package/@bootpay/backend-js) | ||
| ## Bootpay Node.js Server Side Library | ||
| 부트페이 공식 Node.js 라이브러리 입니다 (서버사이드 용) | ||
| node환경에서 작성된 어플리케이션, 프레임워크 등에서 사용가능합니다. | ||
| * PG 결제창 연동은 클라이언트 라이브러리에서 수행됩니다. (Javascript, Android, iOS, React Native, Flutter 등) | ||
| * 결제 검증 및 취소, 빌링키 발급, 본인인증 등의 수행은 서버사이드에서 진행됩니다. (Java, PHP, Python, Ruby, Node.js, Go, ASP.NET 등) | ||
| ## 기능 | ||
| 1. (부트페이 통신을 위한) 토큰 발급 | ||
| 2. 결제 단건 조회 | ||
| 3. 결제 취소 (전액 취소 / 부분 취소) | ||
| 4. 신용카드 자동결제 (빌링결제) | ||
| 4-1. 빌링키 발급 | ||
| 4-2. 발급된 빌링키로 결제 승인 요청 | ||
| 4-3. 발급된 빌링키로 결제 예약 요청 | ||
| 4-4. 발급된 빌링키로 결제 예약 - 취소 요청 | ||
| 4-5. 빌링키 삭제 | ||
| 4-6. 빌링키 조회 | ||
| 5. (생체인증, 비밀번호 결제를 위한) 구매자 토큰 발급 | ||
| 6. 서버 승인 요청 | ||
| 7. 본인 인증 결과 조회 | ||
| 8. (에스크로 이용시) PG사로 배송정보 보내기 | ||
| ## npm으로 설치하기 | ||
| ``` | ||
| npm install --save @bootpay/backend-js | ||
| ``` | ||
| # 사용하기 | ||
| ```javascript | ||
| import { Bootpay } from "@bootpay/backend-js"; | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '5b8f6a4d396fa665fdc2b5ea', | ||
| private_key: 'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw=' | ||
| }) | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.cancelPayment({ | ||
| receipt_id: '628b2206d01c7e00209b6087', | ||
| cancel_price: 1000, | ||
| cancel_username: '테스트 사용자', | ||
| cancel_message: '테스트 취소입니다.' | ||
| }) | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## 1. (부트페이 통신을 위한) 토큰 발급 | ||
| 부트페이와 서버간 통신을 하기 위해서는 부트페이 서버로부터 토큰을 발급받아야 합니다. | ||
| 발급된 토큰은 30분간 유효하며, 최초 발급일로부터 30분이 지날 경우 토큰 발급 함수를 재호출 해주셔야 합니다. | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '59b731f084382614ebf72215', | ||
| private_key: 'WwDv0UjfwFa04wYG0LJZZv1xwraQnlhnHE375n52X0U=' | ||
| }) | ||
| try { | ||
| let response = await Bootpay.getAccessToken() | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## 2. 결제 단건 조회 | ||
| 결제창 및 정기결제에서 승인/취소된 결제건에 대하여 올바른 결제건인지 서버간 통신으로 결제검증을 합니다. | ||
| ```javascript | ||
| (async () => { | ||
| const Bootpay = require('@bootpay/backend-js').Bootpay | ||
| Bootpay.setConfiguration({ | ||
| application_id: '5b8f6a4d396fa665fdc2b5ea', | ||
| private_key: 'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw=' | ||
| }) | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.receiptPayment('62b12f4b6262500007629fec') | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## 3. 결제 취소 (전액 취소 / 부분 취소) | ||
| price를 지정하지 않으면 전액취소 됩니다. | ||
| * 휴대폰 결제의 경우 이월될 경우 이통사 정책상 취소되지 않습니다 | ||
| * 정산받으실 금액보다 취소금액이 클 경우 PG사 정책상 취소되지 않을 수 있습니다. 이때 PG사에 문의하시면 되겠습니다. | ||
| * 가상계좌의 경우 CMS 특약이 되어있지 않으면 취소되지 않습니다. 그러므로 결제 테스트시에는 가상계좌로 테스트 하지 않길 추천합니다. | ||
| 부분취는 카드로 결제된 건만 가능하며, 일부 PG사만 지원합니다. 요청시 price에 금액을 지정하시면 되겠습니다. | ||
| * (지원가능 PG사: 이니시스, kcp, 다날, 페이레터, 나이스페이, 카카오페이, 페이코) | ||
| 간혹 개발사에서 실수로 여러번 부분취소를 보내서 여러번 취소되는 경우가 있기때문에, 부트페이에서는 부분취소 중복 요청을 막기 위해 cancel_id 라는 필드를 추가했습니다. cancel_id를 지정하시면, 해당 건에 대해 중복 요청방지가 가능합니다. | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '5b8f6a4d396fa665fdc2b5ea', | ||
| private_key: 'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw=' | ||
| }) | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.cancelPayment({ | ||
| receipt_id: '628b2206d01c7e00209b6087', | ||
| cancel_price: 1000, | ||
| cancel_username: '테스트 사용자', | ||
| cancel_message: '테스트 취소입니다.' | ||
| }) | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## 4-1. 빌링키 발급 | ||
| REST API 방식으로 고객으로부터 카드 정보를 전달하여, PG사에게 빌링키를 발급받을 수 있습니다. | ||
| 발급받은 빌링키를 저장하고 있다가, 원하는 시점, 원하는 금액에 결제 승인 요청하여 좀 더 자유로운 결제시나리오에 적용이 가능합니다. | ||
| * 비인증 정기결제(REST API) 방식을 지원하는 PG사만 사용 가능합니다. | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '5b8f6a4d396fa665fdc2b5ea', | ||
| private_key: 'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw=' | ||
| }) | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.requestSubscribeBillingKey({ | ||
| pg: '나이스페이', | ||
| order_name: '테스트결제', | ||
| subscription_id: (new Date()).getTime(), | ||
| card_no: '5570********1074', //카드번호 | ||
| card_pw: '**', //카드 비밀번호 2자리 | ||
| card_identity_no: '******', //카드 소유주 생년월일 6자리 | ||
| card_expire_year: '**', //카드 유효기간 년 2자리 | ||
| card_expire_month: '**', //카드 유효기간 월 2자리 | ||
| user: { | ||
| username: '홍길동', | ||
| phone: '01012345678' | ||
| } | ||
| }) | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## 4-2. 발급된 빌링키로 결제 승인 요청 | ||
| 발급된 빌링키로 원하는 시점에 원하는 금액으로 결제 승인 요청을 할 수 있습니다. 잔액이 부족하거나 도난 카드 등의 특별한 건이 아니면 PG사에서 결제를 바로 승인합니다. | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '5b8f6a4d396fa665fdc2b5ea', | ||
| private_key: 'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw=' | ||
| }) | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.requestSubscribeCardPayment({ | ||
| billing_key: '62b3d166cf9f6d001bd20d59', | ||
| order_name: '테스트 결제', | ||
| order_id: (new Date()).getTime(), | ||
| price: 100, | ||
| tax_free: 0 | ||
| }) | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## 4-3. 발급된 빌링키로 결제 예약 요청 | ||
| 원하는 시점에 4-1로 결제 승인 요청을 보내도 되지만, 빌링키 발급 이후에 바로 결제 예약 할 수 있습니다. (빌링키당 최대 10건) | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '5b8f6a4d396fa665fdc2b5ea', | ||
| private_key: 'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw=' | ||
| }) | ||
| try { | ||
| // console.log(new Date((new Date()).getTime() + 5000)) | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.subscribePaymentReserve({ | ||
| billing_key: '62b3d166cf9f6d001bd20d59', | ||
| order_name: '테스트 결제', | ||
| order_id: (new Date()).getTime(), | ||
| price: 1000, | ||
| reserve_execute_at: new Date((new Date()).getTime() + 5000) | ||
| }) | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## 4-4. 발급된 빌링키로 결제 예약 - 취소 요청 | ||
| 빌링키로 예약된 결제건을 취소합니다. | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '5b8f6a4d396fa665fdc2b5ea', | ||
| private_key: 'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw=' | ||
| }) | ||
| try { | ||
| // console.log(new Date((new Date()).getTime() + 5000)) | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.subscribePaymentReserve({ | ||
| billing_key: '62b3d166cf9f6d001bd20d59', | ||
| order_name: '테스트 결제', | ||
| order_id: (new Date()).getTime(), | ||
| price: 1000, | ||
| reserve_execute_at: new Date((new Date()).getTime() + 5000) | ||
| }) | ||
| if (response.reserve_id !== undefined) { | ||
| const cancel = await Bootpay.cancelSubscribeReserve(response.reserve_id) | ||
| console.log(cancel) | ||
| } | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## 4-5. 빌링키 삭제 | ||
| 발급된 빌링키로 더 이상 사용되지 않도록, 삭제 요청합니다. | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '5b8f6a4d396fa665fdc2b5ea', | ||
| private_key: 'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw=' | ||
| }) | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.destroyBillingKey('62b3d166cf9f6d001bd20d59') | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## 4-6. 빌링키 조회 | ||
| (빌링키 발급 완료시 리턴받았던 receipt_id에 한정) 어떤 빌링키였는지 조회합니다. | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '5b8f6a4d396fa665fdc2b5ea', | ||
| private_key: 'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw=' | ||
| }) | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.lookupSubscribeBillingKey('62b3cbbecf9f6d001bd20ce8') | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## 5. 사용자 토큰 발급 | ||
| (부트페이 단독) 부트페이에서 제공하는 간편결제창, 생체인증 기반의 결제 사용을 위해서는 개발사에서 회원 고유번호를 관리해야하며, 해당 회원에 대한 사용자 토큰을 발급합니다. | ||
| 이 토큰값을 기반으로 클라이언트에서 결제요청 하시면 되겠습니다. | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '5b8f6a4d396fa665fdc2b5ea', | ||
| private_key: 'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw=' | ||
| }) | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.requestUserToken({ | ||
| user_id: 'gosomi1', | ||
| phone:'01012345678' | ||
| }) | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## 6. 서버 승인 요청 | ||
| 결제승인 방식은 클라이언트 승인 방식과, 서버 승인 방식으로 총 2가지가 있습니다. | ||
| 클라이언트 승인 방식은 웹, 앱에서 진행하는 일반적인 방법입니다만, 경우에 따라 서버 승인 방식이 필요할 수 있습니다. | ||
| 필요한 이유 | ||
| 1. 100% 안정적인 결제 후 고객 안내를 위해 - 클라이언트에서 PG결제 진행 후 승인 완료될 때 onDone이 수행되지 않아 (인터넷 환경 등), 결제 이후 고객에게 안내하지 못할 수 있습니다 | ||
| 2. 단일 트랜잭션의 개념이 필요할 경우 - 재고파악이 중요한 커머스를 운영할 경우 트랜잭션 개념이 필요할 수 있겠으며, 이를 위해서는 서버 승인을 사용해야 합니다. | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '5b8f6a4d396fa665fdc2b5ea', | ||
| private_key: 'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw=' | ||
| }) | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.confirmPayment('62876963d01c7e00209b6028') | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## 7. 본인 인증 결과 조회 | ||
| 다날 본인인증 후 결과값을 조회합니다. | ||
| 다날 본인인증에서 통신사, 외국인여부, 전화번호 이 3가지 정보는 다날에 추가로 요청하셔야 받으실 수 있습니다. | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '59b731f084382614ebf72215', | ||
| private_key: 'WwDv0UjfwFa04wYG0LJZZv1xwraQnlhnHE375n52X0U=' | ||
| }) | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.certificate('625783a6cf9f6d001d0aed19') | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| 8. (에스크로 이용시) PG사로 배송정보 보내기 | ||
| 현금 거래에 한해 구매자의 안전거래를 보장하는 방법으로, 판매자와 구매자의 온라인 전자상거래가 원활하게 이루어질 수 있도록 중계해주는 매매보호서비스입니다. 국내법에 따라 전자상거래에서 반드시 적용이 되어 있어야합니다. PG에서도 에스크로 결제를 지원하며, 에스크로 결제 사용을 원하시면 PG사 가맹시에 에스크로결제를 미리 얘기하고나서 진행을 하시는 것이 수월합니다. | ||
| PG사로 배송정보( 이니시스, KCP만 지원 )를 보내서 에스크로 상태를 변경하는 API 입니다. | ||
| ```javascript | ||
| (async () => { | ||
| Bootpay.setConfiguration({ | ||
| application_id: '59b731f084382614ebf72215', | ||
| private_key: 'WwDv0UjfwFa04wYG0LJZZv1xwraQnlhnHE375n52X0U=' | ||
| }) | ||
| try { | ||
| await Bootpay.getAccessToken() | ||
| const response = await Bootpay.shippingStart({ | ||
| receipt_id: "62a9379ad01c7e001f7dc1f3", | ||
| tracking_number: '123456', | ||
| delivery_corp: 'CJ대한통운', | ||
| user: { | ||
| username: '테스트', | ||
| phone: '01000000000', | ||
| address: '서울특별시 종로구', | ||
| zipcode: '08490' | ||
| } | ||
| }) | ||
| console.log(response) | ||
| } catch (e) { | ||
| console.log(e) | ||
| } | ||
| })() | ||
| ``` | ||
| ## Example 프로젝트 | ||
| [적용한 샘플 프로젝트](https://github.com/bootpay/backend-python-example)을 참조해주세요 | ||
| ## Documentation | ||
| [부트페이 개발매뉴얼](https://docs.bootpay.co.kr/next/)을 참조해주세요 | ||
| ## 기술문의 | ||
| [부트페이 홈페이지](https://www.bootpay.co.kr) 우측 하단 채팅을 통해 기술문의 주세요! | ||
| ## License | ||
| [MIT License](https://opensource.org/licenses/MIT). | ||
-21
| MIT License | ||
| Copyright (c) 2017 bootpay | ||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| of this software and associated documentation files (the "Software"), to deal | ||
| in the Software without restriction, including without limitation the rights | ||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| copies of the Software, and to permit persons to whom the Software is | ||
| furnished to do so, subject to the following conditions: | ||
| The above copyright notice and this permission notice shall be included in all | ||
| copies or substantial portions of the Software. | ||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
| SOFTWARE. |
Unpublished package
Supply chain riskPackage version was not found on the registry. It may exist on a different registry and need to be configured to pull from that registry.
Found 1 instance in 1 package
Unpopular package
QualityThis package is not very popular.
Found 1 instance in 1 package
1330
9.92%0
-100%469
16.67%61737
-14.98%8
-27.27%1
Infinity%