24.10. 21. gmail로 들어온 요금제 안내문입니다. 2025년 1월 1일부터는 아래와 같은 유료 요금제가 적용된다고 합니다.
한 번의 연동으로 PG사로부터 완전히 독립적인 결제 인프라를 구축할 수 있다는 의미에서 기존의 통합 결제 연동 서비스를 “원 페이먼트 인프라(One payment infra)”라고 명명하였습니다.
위에 소개해 드린 모든 변화를 포함하고 발전할 수 있는 기반을 마련하기 위해, 원 페이먼트 인프라는 2025년 1월 1일부터 유료 요금제로 전환될 예정입니다. 월 순 거래액 5천만 원 이하 고객은 여전히 무료로 이용하실 수 있으며, 이 구간을 초과할 경우 고정 요금제가 적용됩니다.

Free Trial 요금제를 통해 초기 커머스를 시작하는 기업들이 빠르고 편리하게 결제를 도입하고, 다음 성장단계까지 도약할 수 있도록 무료로 지원하고자 하며, Growth 요금제는 포트원의 확장성을 충분히 누리시되, 고객의 수익성에 부담이 되지 않는 최소한의 비용으로 구성했습니다.
AI 서비스 개발에 파이썬을 사용하는 것은 매우 일반적이지만, 반드시 파이썬을 사용해야 하는 것은 아닙니다. AI 서비스는 다양한 프로그래밍 언어로 개발할 수 있으며, 특히 머신러닝 및 딥러닝 라이브러리가 잘 지원되는 언어들이 선호됩니다. 그중 파이썬은 다음과 같은 이유로 많이 사용됩니다:
pandas, numpy, matplotlib)그렇지만 AI 서비스를 제공하는 방식에 따라 다른 언어(예: Java, C++, Go 등)가 더 적합할 수도 있습니다.
저희는 Flask나 Djang로 웹 개발을 한 후 파이썬으로 개발한 AI 서비스들을 판매학소자 합니다. 이를 위해서는 PG가 필수 요소입니다. 이하에서는 포트원(구, 아임포트)로 AI PG 개발을 하는 것을 단계별로 정리해 보겠습니다.
포트원 인증결제의 이해-쇼핑몰 멀티PG 연동하기(10:20)
필요한 라이브러리 설치: 주로 requests 라이브러리를 사용하여 HTTP 요청을 보냅니다
pip install requests
수정된 코드는 다음과 같은 사항을 포함합니다:
Authorization 헤더에 ‘Bearer’ 접두사를 추가합니다.또한, 다음 사항을 확인해 주세요:
API_KEY와 API_SECRET이 올바르게 설정되었는지 확인하세요.아래의 코드중 your_api_key는 REST API Key를, your_api_secret는 REST API Secret를 의미합니다. 콘솔에서 [결제 연동] -> [연동 정보]를 차례로 클릭하시면 REST API Key와 REST API Secret을 확인할 수 있습니다.

import requests
API_URL = "https://api.iamport.kr"
API_KEY = "your_api_key"
API_SECRET = "your_api_secret"
def get_access_token():
url = f"{API_URL}/users/getToken"
data = {
'imp_key': API_KEY,
'imp_secret': API_SECRET
}
response = requests.post(url, data=data)
# 응답 상태 코드 확인
if response.status_code != 200:
print(f"Error: {response.status_code}")
print(response.text)
return None
# 응답 내용 확인
result = response.json()
if 'response' not in result or 'access_token' not in result['response']:
print("Unexpected response format:")
print(result)
return None
return result['response']['access_token']
def create_payment(order_id, amount, name):
access_token = get_access_token()
if not access_token:
return {"error": "Failed to get access token"}
url = f"{API_URL}/payments/prepare"
headers = {'Authorization': f"Bearer {access_token}"}
data = {
'merchant_uid': order_id,
'amount': amount,
'name': name
}
response = requests.post(url, headers=headers, data=data)
# 응답 상태 코드 확인
if response.status_code != 200:
print(f"Error: {response.status_code}")
print(response.text)
return {"error": "Payment preparation failed"}
return response.json()
# 사용 예
result = create_payment('order_12345', 10000, '테스트 상품')
print(result)
import requests
API_URL = "https://api.iamport.kr"
API_KEY = "7118418008741707" # 실제 API 키로 교체하세요
API_SECRET = "jALPNGylSp6SCWAyopCneqKq9RnM3Vj2tVQqusTycqAYlN2Bhmqt9ferU3irdbD3bIfXUNAK48rW722G" # 실제 API 시크릿으로 교체하세요
def get_access_token():
url = f"{API_URL}/users/getToken"
data = {
'imp_key': API_KEY,
'imp_secret': API_SECRET
}
response = requests.post(url, data=data)
if response.status_code != 200:
print(f"Error: {response.status_code}")
print(response.text)
return None
result = response.json()
if 'response' not in result or 'access_token' not in result['response']:
print("Unexpected response format:")
print(result)
return None
return result['response']['access_token']
def verify_payment(imp_uid, amount):
access_token = get_access_token()
if not access_token:
return {'error': 'Failed to get access token'}
url = f"{API_URL}/payments/{imp_uid}"
headers = {'Authorization': f"Bearer {access_token}"}
response = requests.get(url, headers=headers)
if response.status_code != 200:
return {'error': 'Payment verification failed'}
result = response.json()
if result['code'] != 0:
return {'error': result['message']}
payment_data = result['response']
if payment_data['amount'] == amount:
if payment_data['status'] == 'paid':
return {'success': True, 'message': 'Payment verified successfully'}
else:
return {'success': False, 'message': f"Payment status is {payment_data['status']}"}
else:
return {'success': False, 'message': 'Amount mismatch'}
# 사용 예
result = verify_payment('imp_123456789', 10000)
print(result)
웹훅 처리를 위해서는 웹 서버가 필요합니다. 여기서는 Flask를 사용한 간단한 예시를 제공하겠습니다.
먼저 Flask를 설치해야 합니다:
pip install flask
그리고 다음과 같이 코드를 작성합니다
from flask import Flask, request, jsonify
import requests
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def handle_webhook():
payload = request.json
# 웹훅 검증
if not verify_webhook(payload):
return jsonify({'message': 'Invalid webhook'}), 400
imp_uid = payload['imp_uid']
merchant_uid = payload['merchant_uid']
status = payload['status']
# 결제 상태에 따른 처리
if status == 'paid':
# 결제 완료 처리
process_payment(imp_uid, merchant_uid)
elif status == 'cancelled':
# 결제 취소 처리
process_cancellation(imp_uid, merchant_uid)
return jsonify({'message': 'Webhook processed successfully'}), 200
def verify_webhook(payload):
# 웹훅 검증 로직 (예: 시그니처 확인)
# 실제 구현시에는 PortOne에서 제공하는 검증 방법을 사용해야 합니다
return True
def process_payment(imp_uid, merchant_uid):
# 결제 완료 처리 로직
print(f"Payment completed for imp_uid: {imp_uid}, merchant_uid: {merchant_uid}")
def process_cancellation(imp_uid, merchant_uid):
# 결제 취소 처리 로직
print(f"Payment cancelled for imp_uid: {imp_uid}, merchant_uid: {merchant_uid}")
if __name__ == '__main__':
app.run(port=5000)