fake-iamport-server
Version:
Fake iamport server for testing
61 lines (57 loc) • 2.26 kB
text/typescript
import core from "@nestia/core";
import { Controller } from "@nestjs/common";
import { IIamportPayment } from "iamport-server-api/lib/structures/IIamportPayment";
import { IIamportResponse } from "iamport-server-api/lib/structures/IIamportResponse";
import { IIamportUser } from "iamport-server-api/lib/structures/IIamportUser";
import { IIamportPaymentCancel } from "../api/structures/IIamportPaymentCancel";
import { FakeIamportUserAuth } from "../decorators/FakeIamportUserAuth";
import { FakeIamportPaymentProvider } from "../providers/FakeIamportPaymentProvider";
import { FakeIamportResponseProvider } from "../providers/FakeIamportResponseProvider";
import { FakeIamportStorage } from "../providers/FakeIamportStorage";
("payments")
export class FakeIamportPaymentsController {
/**
* 결제 기록 열람하기.
*
* 아임포트를 통하여 발생한 결제 기록을 열람한다.
*
* @param imp_uid 대상 결제 기록의 {@link IIamportPayment.imp_uid}
* @param query 결제 수단이 페이팔인 경우에 사용
* @returns 결제 정보
*
* @security bearer
* @author Samchon
*/
.TypedRoute.Get(":imp_uid")
public at(
() _user: IIamportUser.IAccessor,
.TypedParam("imp_uid") imp_uid: string,
.TypedQuery() query: IIamportPayment.IQuery,
): IIamportResponse<IIamportPayment> {
query;
const payment: IIamportPayment = FakeIamportStorage.payments.get(imp_uid);
return FakeIamportResponseProvider.success(payment);
}
/**
* 결제 취소하기.
*
* 만약 가상 계좌를 통한 결제였다면, 반드시 환불 계좌 정보를 입력해줘야 한다.
*
* @param input 결제 취소 입력 정보
* @returns 취소된 결제 정보
*
* @security bearer
* @author Samchon
*/
.TypedRoute.Post("cancel")
public cancel(
() _user: IIamportUser.IAccessor,
.TypedBody() input: IIamportPaymentCancel.ICreate,
): IIamportResponse<IIamportPayment> {
const payment: IIamportPayment = FakeIamportStorage.payments.get(
input.imp_uid,
);
FakeIamportPaymentProvider.cancel(payment, input);
return FakeIamportResponseProvider.success(payment);
}
}