了解 Laravel Cashier 的核心特征:深入探讨
Laravel Cashier 提供了几个处理 Stripe 集成的强大特性。今天,我们将探讨三个核心特征及其公共方法:ManagesSubscriptions、ManagesCustomer 和 ManagesInvoices。了解这些特征对于在 Laravel 应用程序中实现基于订阅的计费至关重要。
管理订阅特征
订阅创建和管理
newSubscription($type, $prices = [])
创建新的订阅构建器实例。类型定义订阅名称(例如“默认”),价格可以是单个 ID 或数组。
试验管理
newSubscription($type, $prices = [])
- 无参数:仅检查通用(模型级)试验
- 使用 $type:检查特定于订阅的试用
- 同时使用:检查特定价格是否处于试用状态
- 返回布尔值
onTrial($type = 'default', $price = null)
- 无参数:检查通用试用期
- 使用 $type:检查特定订阅试用期
- 同时使用:验证具体价格试用期
- 返回布尔值
hasExpiredTrial($type = 'default', $price = null)
- 检查模型级试用状态
- 如果 Trial_ends_at 存在且为未来,则返回 true
- 无需参数
onGenericTrial()
- 筛选通用试用客户的范围
- 用于查询生成器
- 需要查询构建器实例
scopeOnGenericTrial($query)
- 检查模型级试用是否已过期
- 如果 Trial_ends_at 存在且已过去,则返回 true
- 无需参数
hasExpiredGenericTrial()
- 过滤仿制药过期客户的范围
- 用于查询生成器
- 需要查询构建器实例
scopeHasExpiredGenericTrial($query)
- 无参数:如果进行通用试用,则返回通用试用结束日期
- 使用 $type:返回订阅特定的试用结束日期
- 返回 Carbon 实例或 null
订阅状态检查
trialEndsAt($type = 'default')
- Just $type:检查有效订阅是否存在
- With $price:检查具体价格订阅
- 返回布尔值
subscribed($type = 'default', $price = null)
- 按类型获取订阅
- 返回订阅模型或 null
subscription($type = 'default')
- 获取所有订阅
- 返回有很多关系
- 无需参数
subscriptions()
- 检查订阅付款是否不完整
- 返回布尔值
hasIncompletePayment($type = 'default')
- $products:单个产品 ID 或数组
- $type:要检查的订阅类型
- 返回布尔值
- 检查是否订阅了任何给定产品
subscribedToProduct($products, $type = 'default')
- $prices:单个价格 ID 或数组
- $type:要检查的订阅类型
- 返回布尔值
- 检查是否订阅了任何给定的价格
subscribedToPrice($prices, $type = 'default')
- 检查特定产品的有效订阅
- 返回布尔值
- 比 subscribedToProduct 更具体
onProduct($product)
- 检查特定价格的有效订阅
- 返回布尔值
- 比 subscribedToPrice 更具体
onPrice($price)
- 获取订阅税率
- 返回数组
- 默认为空,需要被覆盖
taxRates()
- 获取单个订阅项目的税率
- 返回数组
- 默认为空,需要被覆盖
管理客户特征
客户识别
newSubscription($type, $prices = [])
- 返回 Stripe 客户 ID 或 null
- 无需参数
- 返回字符串|null
onTrial($type = 'default', $price = null)
- 检查客户是否有 Stripe ID
- 返回布尔值
- 无需参数
客户创建和管理
hasExpiredTrial($type = 'default', $price = null)
- 创建新的 Stripe 客户
- 选项影响客户元数据、电子邮件、姓名等
- 如果客户已存在则抛出异常
- 返回 Stripe Customer 对象
onGenericTrial()
- 更新现有 Stripe 客户
- 选项决定更新内容
- 返回更新后的 Stripe Customer 对象
- 需要现有客户
scopeOnGenericTrial($query)
- 获取现有客户或创建新客户
- 如果需要,选项会影响创建
- 返回 Stripe Customer 对象
- 比 createAsStripeCustomer 更宽容
hasExpiredGenericTrial()
- 更新现有客户或创建新客户
- 选项会影响更新和创建
- 返回 Stripe Customer 对象
- 结合了更新和创建功能
scopeHasExpiredGenericTrial($query)
- 将本地详细信息同步到 Stripe
- 返回 Stripe Customer 对象
- 使用模型属性进行同步
trialEndsAt($type = 'default')
- 同步(如果存在)或创建新客户
- 如果需要,选项会影响创建
- 返回 Stripe Customer 对象
subscribed($type = 'default', $price = null)
- 获取 Stripe 客户对象
- 展开参数确定相关数据
- 返回 Stripe Customer 对象
- 需要现有客户
客户属性
subscription($type = 'default')
- 获取 Stripe 同步的名称
- 返回字符串|null
- 默认返回$this->name
subscriptions()
- 获取 Stripe 同步电子邮件
- 返回字符串|null
- 默认返回$this->email
hasIncompletePayment($type = 'default')
- 获取手机进行 Stripe 同步
- 返回字符串|null
- 默认返回$this->phone
subscribedToProduct($products, $type = 'default')
- 获取 Stripe 同步地址
- 返回数组|null
- 默认为空
subscribedToPrice($prices, $type = 'default')
- 获取 Stripe 的首选区域设置
- 返回数组
- 默认为空
onProduct($product)
- 获取 Stripe 的元数据
- 返回数组
- 默认为空
折扣管理
onPrice($price)
- 获得活跃客户折扣
- 返回折扣对象或 null
- 无需参数
taxRates()
- 向客户应用优惠券
- 无效退货
- 需要优惠券 ID
priceTaxRates()
- 向客户应用促销代码
- 无效退货
- 需要促销代码 ID
newSubscription($type, $prices = [])
- 找到促销代码
- 返回 PromotionCode 对象或 null
- 选项影响搜索
onTrial($type = 'default', $price = null)
- 找到有效的促销代码
- 返回 PromotionCode 对象或 null
- 影响搜索的选项
余额管理
hasExpiredTrial($type = 'default', $price = null)
- 获取格式化的客户余额
- 返回字符串
- 无需参数
onGenericTrial()
- 获取原始客户余额
- 返回整数
- 无需参数
scopeOnGenericTrial($query)
- 获取客户余额交易
- 退货集合
- 限制影响返回计数
hasExpiredGenericTrial()
- 贷记客户余额
- 返回客户余额交易
- 金额为必填项
scopeHasExpiredGenericTrial($query)
- 借记客户余额
- 返回客户余额交易
- 金额为必填项
trialEndsAt($type = 'default')
- 应用平衡调整
- 返回客户余额交易
- 金额为必填项
税务管理
subscribed($type = 'default', $price = null)
- 获取客户税号
- 退货集合
- 选项影响检索
subscription($type = 'default')
- 创建新的税号
- 返回 Stripe TaxId
- 两个参数都是必需的
subscriptions()
- 删除税号
- 无效退货
- 需要税号
hasIncompletePayment($type = 'default')
- 查找特定税号
- 返回 Stripe TaxId 或 null
- 需要税号
税务状况检查
subscribedToProduct($products, $type = 'default')
- 检查客户是否不免税
- 返回布尔值
- 无需参数
subscribedToPrice($prices, $type = 'default')
- 检查客户是否免税
- 返回布尔值
- 无需参数
onProduct($product)
- 检查是否适用反向收费
- 返回布尔值
- 无需参数
计费门户
onPrice($price)
- 获取 Stripe 计费门户 URL
- 返回字符串
- ReturnUrl 可选
taxRates()
- 重定向到 Stripe 计费门户
- 返回重定向响应
- ReturnUrl 可选
管理发票特征
发票项目
priceTaxRates()
- 添加发票项目
- 返回 Stripe 发票项目
- 所需说明及金额
stripeId()
- 添加基于价格的商品
- 返回 Stripe 发票项目
- 需要价格 ID
发票创建
hasStripeId()
- 创建即时发票
- 返回发票对象
- 所需说明及金额
createAsStripeCustomer(array $options = [])
- 创建基于价格的发票
- 返回发票对象
- 需要价格 ID
newSubscription($type, $prices = [])
- 生成发票
- 返回发票对象
- 选项影响创作
onTrial($type = 'default', $price = null)
- 创建 Stripe 发票
- 返回发票对象
- 选项影响创作
发票检索
hasExpiredTrial($type = 'default', $price = null)
- 获取即将到来的发票
- 返回 Invoice 对象或 null
- 选项影响预览
onGenericTrial()
- 查找特定发票
- 返回 Invoice 对象或 null
- 需要发票 ID
scopeOnGenericTrial($query)
- 查找发票或抛出异常
- 返回发票对象
- 需要发票 ID
- 抛出 NotFoundHttpException 或 AccessDeniedHttpException
hasExpiredGenericTrial()
- 获取发票 PDF
- 返回响应
- ID 必填,文件名可选
scopeHasExpiredGenericTrial($query)
- 获取所有发票
- 退货集合
- 参数影响过滤
trialEndsAt($type = 'default')
- 获取所有发票,包括待处理的
- 退货集合
- 发票的简写(true)
subscribed($type = 'default', $price = null)
- 获取分页发票
- 返回 CursorPaginator
- 多个参数影响分页
主要观察结果
- 参数敏感性:方法通常根据参数的存在而具有不同的行为。
- 返回类型:方法始终返回特定类型(布尔值、对象、集合)。
- 默认值:许多参数都有合理的默认值,但可以被覆盖。
- 特征相互依赖:方法通常依赖于其他特征方法。
- Stripe 集成:大多数方法直接或间接与 Stripe 的 API 交互。
最佳实践
- 始终检查所需行为的参数要求。
- 处理潜在的异常,尤其是 *OrFail 方法。
- 扩展这些特征时使用正确的类型提示。
- 彻底测试不同的参数组合。
- 考虑缓存频繁调用以减少 API 请求。
结论
这些特征构成了 Laravel Cashier 功能的支柱。了解可用方法及其参数行为的全部范围对于正确实现至关重要。请务必参阅本参考资料的官方文档以获取最新信息。
以上是了解 Laravel Cashier 的核心特征:深入探讨的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

在PHP中使用预处理语句和PDO可以有效防范SQL注入攻击。1)使用PDO连接数据库并设置错误模式。2)通过prepare方法创建预处理语句,使用占位符和execute方法传递数据。3)处理查询结果并确保代码的安全性和性能。

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。
