simple-pay-api
결제 테이블
CREATE TABLE IF NOT EXISTS `pay`.`transaction`
(
`ID` BIGINT(20) NOT NULL AUTO_INCREMENT,
`TRANSACTION_ID` VARCHAR(20) NOT NULL COMMENT '트랜잭션 아이디',
`TRANSACTION_TYPE` VARCHAR(15) NOT NULL COMMENT '트랜잭션 타입',
`ENCRYPTED_CARD_INFO` VARCHAR(300) NOT NULL COMMENT '카드정보',
`MESSAGE` VARCHAR(500) NOT NULL COMMENT '카드사 전문',
`INSTALLMENT` BIGINT(3) NOT NULL COMMENT '할부 개월 수',
`AMOUNT` BIGINT(20) NOT NULL COMMENT '결제 금액',
`VAT` BIGINT(20) NOT NULL COMMENT '부가가치세',
`REMAIN_AMOUNT` BIGINT(20) NOT NULL COMMENT '남은 결제 금액',
`REMAIN_VAT` BIGINT(20) NOT NULL COMMENT '남은 부가가치세',
`PAY_TRANSACTION_ID` VARCHAR(20) NOT NULL COMMENT '결제 트랜잭션 아이디',
`CREATED_AT` TIMESTAMP NOT NULL COMMENT '생성일시',
`UPDATED_AT` TIMESTAMP NULL COMMENT '수정일시',
PRIMARY KEY (`ID`),
CONSTRAINT `UK_TRANSACTION_ID` UNIQUE(`TRANSACTION_ID`),
CONSTRAINT `FK_PAY_TRANSACTION_ID` FOREIGN KEY (`PAY_TRANSACTION_ID`) REFERENCES `pay`.`transaction` (`TRANSACTION_ID`)
);
카드 테이블
CREATE TABLE IF NOT EXISTS `pay`.`card`
(
`ID` BIGINT(20) NOT NULL AUTO_INCREMENT,
`MESSAGE` VARCHAR(500) NOT NULL COMMENT '카드사 전문',
PRIMARY KEY (`ID`)
);
필수 문제
curl -X POST http://localhost:8080/pay/transactions -H "Content-Type: application/json" -d '
{"cardNumber":"01234567890","expirationMonthYear":"1212","cvc":"123","installment":0,"amount":11000,"vat":1000}
'
curl -X DELETE http://localhost:8080/pay/transactions/{transactionId} -H "Content-Type: application/json" -d '
{"amount":3000,"vat":300}
'
curl -X GET http://localhost:8080/pay/transactions/{transactionId} -H "Content-Type: application/json"
부분 취소 테스트 (선택 문제 부분취소 API를 구현하고 Test Case를 통과시켜주세요.)
./gradlew test --tests 'com.pay.api.integration*'
Multi Thread 테스트
./gradlew test --tests 'com.pay.api.multithread*'
./gradlew test --tests com.pay.api.domain.CardInfoCryptoTest
메세지 테스트
./gradlew test --tests com.pay.api.domain.MessageBuilderTest
git clone https://github.com/il-kyun/simple-pay-api.git
cd simple-pay-api
./gradlew clean build
java -jar build/libs/simple-pay-api.jar