[ 작업 환경 ]

 

Centos 7.8

Python 3.6

Flask 1.1

 

부트페이 활용 신청을 정상적으로 완료하여 승인이 된 후에 아래 작업을 진행해주셔야합니다.

 

 

 

 

1. 결제 검증 요청시 필요한 인증키와 어플리케이션 ID 확인하기

 

https://admin.bootpay.co.kr/install/key

 

 

 

 

 

2. 접근 허용 IP 관리 설정하기

 

권장대로 저는 사용하는 서버의 IP만을 허용하기로 했습니다.

이후 서버 IP가 변경되면 아래 설정 또한 함께 변경해줘야하니 추후 주의가 필요하겠습니다.

 

 

 

 

 

3. 어플리케이션 ID & Private Key & 허용된 IP에서의 요청 정상인지 확인

 

curl -H "Content-Type: application/json" \
-d '{"application_id": "[ REST용 Application ID ]", "private_key": "[ Project의 Private Key ( 보안 문제상 예제에 표기하지 않습니다. 부트페이 관리자에서 확인해주세요. ) ]"}' \
-X POST https://api.bootpay.co.kr/request/token

정상인 경우, status 200 으로 올바른 데이터가 return됩니다.

어플리케이션 ID가 틀렸거나 Private Key가 틀렸거나 허용되지 않은 IP에서의 요청이 들어올 경우 status 401 로 올바르지 않은 접근이라는 내용으로 return됩니다.

 

 

 

 

4. 정상 요청 여부 확인을 위한 access token 수령 및 결제 정보 확인하기 소스 예시

 

from bootpay_master.lib.BootpayApi import BootpayApi

bootpay = BootpayApi(
    '[[ application_id ]]',
    '[[ private_key ]]'
)

result = bootpay.get_access_token()
if result['status'] is 200:
    verify_result = bootpay.verify('[[ receipt_id ]]')
    if verify_result['status'] is 200:
        # 원래 주문했던 금액이 일치하는가?
        # 그리고 결제 상태가 완료 상태인가?
        if verify_result['data']['status'] is 1 and verify_result['data']['price'] is price:
            # TODO: 이곳이 상품 지급 혹은 결제 완료 처리를 하는 로직으로 사용하면 됩니다.

 

에러 발생시 아래 페이지를 참조하여 해결할 수 있습니다.

https://growingsaja.tistory.com/513

 

 

 

 

5. verify_result 예시

 

{
  "status": 200,
  "code": 0,
  "message": "",
  "data": {
    "receipt_id": "5df6e67d4f74b4002a77e0eb",
    "order_id": "1576461949",
    "name": "테스트결제",
    "price": 3000,
    "tax_free": 1500,
    "remain_price": 3000,
    "remain_tax_free": 1500,
    "cancelled_price": 0,
    "cancelled_tax_free": 0,
    "receipt_url": "https://app.bootpay.co.kr/bill/ZVN3cXdRNTlEbTYzVi8xNmIyWCtFS0VrcWJncXkweFBoT200WXRPQkgzVC9u%0AZz09LS1KNU1MRW5JdGNMa3RMZDRLLS1lWkhFaTFkMmVnVkR0SmRTMUxUNXdR%0APT0=%0A",
    "unit": "krw",
    "pg": "payapp",
    "method": "card_rebill_rest",
    "pg_name": "페이앱",
    "method_name": "카드정기결제(REST)",
    "payment_data": {
      "card_name": "하나",
      "card_no": "94308100****4569",
      "card_quota": "00",
      "card_auth_no": "09286221",
      "receipt_id": "5df6e67d4f74b4002a77e0eb",
      "n": "테스트결제",
      "p": 3000,
      "tid": "48585753",
      "pg": "페이앱",
      "pm": "카드정기결제(REST)",
      "pg_a": "payapp",
      "pm_a": "card_rebill_rest",
      "o_id": "1576461949",
      "p_at": "2019-12-16 11:05:50",
      "s": 1,
      "g": 2
    },
    "requested_at": "2019-12-16 11:05:50",
    "purchased_at": "2019-12-16 11:05:50",
    "status": 1,
    "status_en": "complete",
    "status_ko": "결제완료"
  }
}

 

참고 부트페이 링크 : https://docs.bootpay.co.kr/rest/verify

 

 

 

 

6. 결제 정보 저장 DB 테이블 구조 예시

 

 - idx

 자사에서 구분하는 고유 id

 - regdate

해당 데이터 insert 일시

 - last_change

해당 데이터 최근 수정 일시

 

이외 나머지 컬럼들은 모두 부트페이 API 에서 제공해주는 데이터들입니다.

CREATE TABLE IF NOT EXISTS `bootpay_history` (
  `idx` int(11) NOT NULL AUTO_INCREMENT,
  `receipt_id` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `order_id` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `price` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `tax_free` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `remain_tax_free` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `remain_price` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `cancelled_price` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `cancelled_tax_free` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `receipt_url` text COLLATE utf8_unicode_ci,
  `unit` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `pg` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `method` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `pg_name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `method_name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `card_name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `card_no` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `card_quota` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `card_auth_no` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `requested_at` timestamp NULL DEFAULT NULL,
  `purchased_at` timestamp NULL DEFAULT NULL,
  `revoked_at` timestamp NULL DEFAULT NULL,
  `status` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `regdate` timestamp NULL DEFAULT NULL,
  `last_change` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`idx`),
  KEY `regdate` (`regdate`),
  KEY `status` (`status`),
  KEY `receipt_id` (`receipt_id`),
  KEY `order_id` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

 

 

 

 

 

+ Recent posts