3 回复
对于Python支付整合,我推荐使用stripe库,它提供了完整的支付解决方案。下面是一个完整的信用卡支付示例:
import stripe
# 设置API密钥
stripe.api_key = "sk_test_your_secret_key"
def create_payment_intent(amount, currency='usd'):
"""
创建支付意向
:param amount: 金额(单位:分)
:param currency: 货币类型
:return: 支付意向对象
"""
try:
intent = stripe.PaymentIntent.create(
amount=amount,
currency=currency,
payment_method_types=['card'],
metadata={'order_id': '12345'}
)
return intent
except stripe.error.StripeError as e:
print(f"支付创建失败: {e}")
return None
def confirm_payment(payment_intent_id, payment_method_id):
"""
确认支付
:param payment_intent_id: 支付意向ID
:param payment_method_id: 支付方式ID
:return: 确认结果
"""
try:
intent = stripe.PaymentIntent.confirm(
payment_intent_id,
payment_method=payment_method_id
)
return intent.status == 'succeeded'
except stripe.error.StripeError as e:
print(f"支付确认失败: {e}")
return False
# 使用示例
if __name__ == "__main__":
# 创建100美元的支付
intent = create_payment_intent(10000) # 100美元 = 10000美分
if intent:
print(f"客户端密钥: {intent.client_secret}")
print(f"支付意向ID: {intent.id}")
# 在实际应用中,前端使用client_secret完成支付
# 然后后端确认支付
# success = confirm_payment(intent.id, "pm_card_visa")
对于Webhook处理(支付成功回调):
from flask import Flask, request, jsonify
import stripe
app = Flask(__name__)
stripe.api_key = "sk_test_your_secret_key"
endpoint_secret = "whsec_your_webhook_secret"
@app.route('/webhook', methods=['POST'])
def webhook():
payload = request.get_data()
sig_header = request.headers.get('Stripe-Signature')
try:
event = stripe.Webhook.construct_event(
payload, sig_header, endpoint_secret
)
except ValueError:
return 'Invalid payload', 400
except stripe.error.SignatureVerificationError:
return 'Invalid signature', 400
# 处理支付成功事件
if event['type'] == 'payment_intent.succeeded':
payment_intent = event['data']['object']
print(f"订单 {payment_intent['metadata']['order_id']} 支付成功")
# 更新订单状态等业务逻辑
return jsonify({'status': 'success'}), 200
基本使用流程:1)安装pip install stripe;2)获取API密钥;3)前端收集支付信息;4)后端创建和确认支付;5)设置Webhook处理异步通知。
总结:用stripe库按文档流程走就行。
能留个 QQ 号交流下吗?
已 Watching

