Python으로 Stripe 로그 및 Invoice 정보 수집
Stripe를 운용하고 있어, 단번에 로그를 취득하고 싶은 경우나 다음에 오는 정기 지불의 Invoice를 정리해 확인하고 싶은 경우 등, 대시보드 경유라고 꽤 생각한 것처럼 가지 않는 일도 많을까 생각합니다. 나는 파이썬을 사용하여 처리하는 경우가 많기 때문에 그 방법을 정리해 보았습니다.
준비
pip install stripe
Stripe SDK를 설치합니다.
API 키 가져오기
API 요청에서 실수하지 않도록 제한된 API 키를 만듭니다.
Stripe 대시보드에서 만들 수 있습니다. "Restricted keys"라는 곳에서 제한된 API 키를 만들 수 있습니다.
LIVE 키를 사용하여 너무 골고루 하면 사고했을 때 매우 무섭기 때문에 참조 조작의 경우는 읽기만의 액세스를 붙인 키로 작업합니다.
로그의 일괄 취득(기본 조작)
로그를 정리해 취득하는 경우는, List all events 를 사용하는 것이 편리합니다.
htps : // st 리페. 코 m / 드 cs / 아피 / 에ゔ ㅇ ts / ぃ St
전체 코드는 이런 느낌이 듭니다. 2018년 11월의 이벤트를 모두 취득해, 이벤트의 타입을 화면에 표시하는 처리입니다.
get_log.pyimport stripe
import datetime
import time
stripe.api_key = "rk_test_1xxxxxxxxxxxxxxxxxxxxxxx"
# 日付の文字列を Stripe API で使う UNIX タイムスタンプに変換する関数
def convert_to_time(formated_date):
return int(time.mktime(datetime.datetime.strptime(formated_date, '%Y-%m-%d %H:%M:%S').timetuple()))
# 100件ずつリクエストして、次のデータがなくなるまで取得
starting_after = None
while True:
result = stripe.Event.list(
created = {
'gte': convert_to_time('2018-11-1 00:00:00'),
'lte': convert_to_time('2018-12-1 00:00:00')
},
starting_after=starting_after,
limit=100
)
if len(result) == 0:
break
# 結果を出力
for data in result['data']:
starting_after = data['id'] # ここで Event の Object id を保持
print(data['type'])
List event 의 API 는 1회의 리퀘스트로 취득할 수 있는 상한 건수가 100건입니다. starting_after 매개 변수를 지정하여 요청하면 첫 번째 데이터를 검색할 수 있습니다. 데이터를 표시하는 루프 안에서, Event 의 Object id 를 보관 유지해 두는 것으로, 다음의 요구시에 계속으로부터 데이터를 취득할 수 있게 됩니다.
다른 Stripe 의 API도 List 계의 것은 같은 생각이므로, 기본형으로서 마스터 해 두면 안심입니다.
이벤트 유형은 공식 문서에 기재되어 있습니다.
htps : // st 리페. 코 m / 드 cs / 아피 / 에 ぇ ts / ty ぺ s
모든 건의 로그를 가져오면 Stripe의 데이터 구조와 이벤트가 발생하는 흐름을 더 깊이 이해할 수 있을까 생각합니다.
로그의 일괄 취득(응용형)
파라미터에 type 을 지정하는 것으로 여러가지 좁힐 수 있습니다.
성공한 Invoice.py result = stripe.Event.list(
created = {
'gte': convert_to_time('2018-11-1 00:00:00'),
'lte': convert_to_time('2018-11-10 00:00:00')
},
starting_after=starting_after,
limit=100,
type='invoice.payment_succeeded'
)
Invoice 관련 .py type='invoice.payment*'
고객 정보 관련.py type='customer*'
이와 같이, 와일드 카드도 사용할 수 있으므로 비교적 유연하게 취득할 수 있습니다.
Invoice 집계
앞으로 발생하는 Invoice를 확인하고 집계하고 싶은 경우는 아래와 같습니다. 직접 Upcoming의 Invoice를 List 하는 방법을 찾을 수 없었기 때문에, 한 번 Subscription 의 리스트를 취득해 Customer 마다 취득하고 있습니다.
amount_of_upcomming.pycount = 0
total = 0
while True:
result = stripe.Subscription.list(
starting_after=starting_after,
limit=100
)
if len(result) == 0:
break
for data in result['data']:
starting_after = data['id']
invoices = stripe.Invoice.upcoming(
customer=data['customer']
)
count = count + 1
total = total + invoices['total']
print('人数: ' + str(count))
print('合計金額: ' + str(total))
요약
Stripe 에서는 SDK 를 사용하는 것으로 매우 간단하게 데이터를 취득하는 것이 가능하게 되어 있습니다. 기존 대시보드에서도 충분히 강력한 기능을 갖고 있습니다만, 독자적인 데이터를 집계하고 싶은 경우에도, 기본적인 데이터는 모두 API 경유로 취득할 수 있습니다.
이 근처의 유연성은 개발자로서 매우 고맙습니다.
KR_Stripes 히로시마
JP_Stripes 히로시마는 현재 Vol.3까지 개최되었습니다! 등단자가 부족하기 때문에, 히로시마에 올 예정이 있는 분, 또는 거주하는 분으로 「말해도 좋다!」라고 하는 분은 꼭 연락을 기다리고 있습니다.
Reference
이 문제에 관하여(Python으로 Stripe 로그 및 Invoice 정보 수집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/m_ando_japan/items/8ed674c10522f52783ce
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
pip install stripe
API 요청에서 실수하지 않도록 제한된 API 키를 만듭니다.
Stripe 대시보드에서 만들 수 있습니다. "Restricted keys"라는 곳에서 제한된 API 키를 만들 수 있습니다.
LIVE 키를 사용하여 너무 골고루 하면 사고했을 때 매우 무섭기 때문에 참조 조작의 경우는 읽기만의 액세스를 붙인 키로 작업합니다.
로그의 일괄 취득(기본 조작)
로그를 정리해 취득하는 경우는, List all events 를 사용하는 것이 편리합니다.
htps : // st 리페. 코 m / 드 cs / 아피 / 에ゔ ㅇ ts / ぃ St
전체 코드는 이런 느낌이 듭니다. 2018년 11월의 이벤트를 모두 취득해, 이벤트의 타입을 화면에 표시하는 처리입니다.
get_log.pyimport stripe
import datetime
import time
stripe.api_key = "rk_test_1xxxxxxxxxxxxxxxxxxxxxxx"
# 日付の文字列を Stripe API で使う UNIX タイムスタンプに変換する関数
def convert_to_time(formated_date):
return int(time.mktime(datetime.datetime.strptime(formated_date, '%Y-%m-%d %H:%M:%S').timetuple()))
# 100件ずつリクエストして、次のデータがなくなるまで取得
starting_after = None
while True:
result = stripe.Event.list(
created = {
'gte': convert_to_time('2018-11-1 00:00:00'),
'lte': convert_to_time('2018-12-1 00:00:00')
},
starting_after=starting_after,
limit=100
)
if len(result) == 0:
break
# 結果を出力
for data in result['data']:
starting_after = data['id'] # ここで Event の Object id を保持
print(data['type'])
List event 의 API 는 1회의 리퀘스트로 취득할 수 있는 상한 건수가 100건입니다. starting_after 매개 변수를 지정하여 요청하면 첫 번째 데이터를 검색할 수 있습니다. 데이터를 표시하는 루프 안에서, Event 의 Object id 를 보관 유지해 두는 것으로, 다음의 요구시에 계속으로부터 데이터를 취득할 수 있게 됩니다.
다른 Stripe 의 API도 List 계의 것은 같은 생각이므로, 기본형으로서 마스터 해 두면 안심입니다.
이벤트 유형은 공식 문서에 기재되어 있습니다.
htps : // st 리페. 코 m / 드 cs / 아피 / 에 ぇ ts / ty ぺ s
모든 건의 로그를 가져오면 Stripe의 데이터 구조와 이벤트가 발생하는 흐름을 더 깊이 이해할 수 있을까 생각합니다.
로그의 일괄 취득(응용형)
파라미터에 type 을 지정하는 것으로 여러가지 좁힐 수 있습니다.
성공한 Invoice.py result = stripe.Event.list(
created = {
'gte': convert_to_time('2018-11-1 00:00:00'),
'lte': convert_to_time('2018-11-10 00:00:00')
},
starting_after=starting_after,
limit=100,
type='invoice.payment_succeeded'
)
Invoice 관련 .py type='invoice.payment*'
고객 정보 관련.py type='customer*'
이와 같이, 와일드 카드도 사용할 수 있으므로 비교적 유연하게 취득할 수 있습니다.
Invoice 집계
앞으로 발생하는 Invoice를 확인하고 집계하고 싶은 경우는 아래와 같습니다. 직접 Upcoming의 Invoice를 List 하는 방법을 찾을 수 없었기 때문에, 한 번 Subscription 의 리스트를 취득해 Customer 마다 취득하고 있습니다.
amount_of_upcomming.pycount = 0
total = 0
while True:
result = stripe.Subscription.list(
starting_after=starting_after,
limit=100
)
if len(result) == 0:
break
for data in result['data']:
starting_after = data['id']
invoices = stripe.Invoice.upcoming(
customer=data['customer']
)
count = count + 1
total = total + invoices['total']
print('人数: ' + str(count))
print('合計金額: ' + str(total))
요약
Stripe 에서는 SDK 를 사용하는 것으로 매우 간단하게 데이터를 취득하는 것이 가능하게 되어 있습니다. 기존 대시보드에서도 충분히 강력한 기능을 갖고 있습니다만, 독자적인 데이터를 집계하고 싶은 경우에도, 기본적인 데이터는 모두 API 경유로 취득할 수 있습니다.
이 근처의 유연성은 개발자로서 매우 고맙습니다.
KR_Stripes 히로시마
JP_Stripes 히로시마는 현재 Vol.3까지 개최되었습니다! 등단자가 부족하기 때문에, 히로시마에 올 예정이 있는 분, 또는 거주하는 분으로 「말해도 좋다!」라고 하는 분은 꼭 연락을 기다리고 있습니다.
Reference
이 문제에 관하여(Python으로 Stripe 로그 및 Invoice 정보 수집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/m_ando_japan/items/8ed674c10522f52783ce
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import stripe
import datetime
import time
stripe.api_key = "rk_test_1xxxxxxxxxxxxxxxxxxxxxxx"
# 日付の文字列を Stripe API で使う UNIX タイムスタンプに変換する関数
def convert_to_time(formated_date):
return int(time.mktime(datetime.datetime.strptime(formated_date, '%Y-%m-%d %H:%M:%S').timetuple()))
# 100件ずつリクエストして、次のデータがなくなるまで取得
starting_after = None
while True:
result = stripe.Event.list(
created = {
'gte': convert_to_time('2018-11-1 00:00:00'),
'lte': convert_to_time('2018-12-1 00:00:00')
},
starting_after=starting_after,
limit=100
)
if len(result) == 0:
break
# 結果を出力
for data in result['data']:
starting_after = data['id'] # ここで Event の Object id を保持
print(data['type'])
파라미터에 type 을 지정하는 것으로 여러가지 좁힐 수 있습니다.
성공한 Invoice.py
result = stripe.Event.list(
created = {
'gte': convert_to_time('2018-11-1 00:00:00'),
'lte': convert_to_time('2018-11-10 00:00:00')
},
starting_after=starting_after,
limit=100,
type='invoice.payment_succeeded'
)
Invoice 관련 .py
type='invoice.payment*'
고객 정보 관련.py
type='customer*'
이와 같이, 와일드 카드도 사용할 수 있으므로 비교적 유연하게 취득할 수 있습니다.
Invoice 집계
앞으로 발생하는 Invoice를 확인하고 집계하고 싶은 경우는 아래와 같습니다. 직접 Upcoming의 Invoice를 List 하는 방법을 찾을 수 없었기 때문에, 한 번 Subscription 의 리스트를 취득해 Customer 마다 취득하고 있습니다.
amount_of_upcomming.pycount = 0
total = 0
while True:
result = stripe.Subscription.list(
starting_after=starting_after,
limit=100
)
if len(result) == 0:
break
for data in result['data']:
starting_after = data['id']
invoices = stripe.Invoice.upcoming(
customer=data['customer']
)
count = count + 1
total = total + invoices['total']
print('人数: ' + str(count))
print('合計金額: ' + str(total))
요약
Stripe 에서는 SDK 를 사용하는 것으로 매우 간단하게 데이터를 취득하는 것이 가능하게 되어 있습니다. 기존 대시보드에서도 충분히 강력한 기능을 갖고 있습니다만, 독자적인 데이터를 집계하고 싶은 경우에도, 기본적인 데이터는 모두 API 경유로 취득할 수 있습니다.
이 근처의 유연성은 개발자로서 매우 고맙습니다.
KR_Stripes 히로시마
JP_Stripes 히로시마는 현재 Vol.3까지 개최되었습니다! 등단자가 부족하기 때문에, 히로시마에 올 예정이 있는 분, 또는 거주하는 분으로 「말해도 좋다!」라고 하는 분은 꼭 연락을 기다리고 있습니다.
Reference
이 문제에 관하여(Python으로 Stripe 로그 및 Invoice 정보 수집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/m_ando_japan/items/8ed674c10522f52783ce
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
count = 0
total = 0
while True:
result = stripe.Subscription.list(
starting_after=starting_after,
limit=100
)
if len(result) == 0:
break
for data in result['data']:
starting_after = data['id']
invoices = stripe.Invoice.upcoming(
customer=data['customer']
)
count = count + 1
total = total + invoices['total']
print('人数: ' + str(count))
print('合計金額: ' + str(total))
Stripe 에서는 SDK 를 사용하는 것으로 매우 간단하게 데이터를 취득하는 것이 가능하게 되어 있습니다. 기존 대시보드에서도 충분히 강력한 기능을 갖고 있습니다만, 독자적인 데이터를 집계하고 싶은 경우에도, 기본적인 데이터는 모두 API 경유로 취득할 수 있습니다.
이 근처의 유연성은 개발자로서 매우 고맙습니다.
KR_Stripes 히로시마
JP_Stripes 히로시마는 현재 Vol.3까지 개최되었습니다! 등단자가 부족하기 때문에, 히로시마에 올 예정이 있는 분, 또는 거주하는 분으로 「말해도 좋다!」라고 하는 분은 꼭 연락을 기다리고 있습니다.
Reference
이 문제에 관하여(Python으로 Stripe 로그 및 Invoice 정보 수집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/m_ando_japan/items/8ed674c10522f52783ce
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Python으로 Stripe 로그 및 Invoice 정보 수집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/m_ando_japan/items/8ed674c10522f52783ce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)