nlybe / stripe
此插件提供了一种与 Stripe 交互的 Elgg API 层
Requires
- composer/installers: >=1.0.8
- stripe/stripe-php: 7.*
Conflicts
- elgg/elgg: <3.0
README
Elgg 的 Stripe.com API 层
此插件主要用于开发者,他们正在实施支付流程。
简介
此插件实现了一个用于与 Elgg 交互的 API 层。它实现了大多数常见方法,包括创建和更新客户、创建收费、添加和删除卡片等。
目标是提供一个统一的 API,它能够与 Elgg 的实体架构协同工作,这包括维护例如 Elgg 用户和 Stripe 客户之间的引用。
此外,该插件还提供了一个用户界面,用户可以通过该界面管理他们的支付方式、查看他们的交易历史等。
架构设计旨在尽可能避免在 Elgg 中存储数据,这样您的网站就能保持 PCI 合规性,同时提供广泛的电子商务可能性。
此插件提供 API 用于创建/更新/删除/查看
- 客户
- 卡片
- 收费
- 计划
- 订阅
- 发票
其他功能,如 Stripe Connect 或转账,可以/可能通过单独的插件实现。
安全考虑
网站所有者有责任启用 SSL 加密,并采取额外的预防措施来保护用户免受未经授权访问其个人数据(尽管这些数据未存储在 Elgg 数据库中,但某些信息将实时提供给观众)以及防止未经授权的网站商品支付(如果信用卡存储在客户实体中)。
可能是一个好主意确保用户会话定期超时,或者对与 stripe 相关的页面进行密码保护。
Webhooks
为了确保 Elgg 接收一些关键更新,请按以下方式设置您的 Stripe webhooks
测试 https://YOUR-SITE/services/api/rest/json?method=stripe.webhooks&environment=sandbox
生产 https://YOUR-SITE/services/api/rest/json?method=stripe.webhooks&environment=production
设置好 webhooks 后,您可以在 Elgg 中添加处理程序,以处理 $stripe_event_type, 'stripe.events'
插件钩子,以实现额外的逻辑。您的回调函数将接收到一个 Stripe 事件对象和环境描述符。
Stripe 事件的列表可以在以下位置找到: https://stripe.com/docs/api#event_types
客户
每当您通过 API 传递电子邮件、用户 guid 或用户实体时,都会自动创建客户。
每当有用户通过电子邮件注册并拥有 Stripe 客户账户时,Stripe 客户账户将被映射到该用户,并且交易历史将可供用户查看。
示例:添加一张卡片
$token = get_input('token'); // this would have been generated by stripe.js $user = elgg_get_logged_in_user_entity(); $client = new StripeClient(); $client->createCard($user, $token);
示例:创建收费
$user_guid = elgg_get_logged_in_user_guid(); $charge = array( 'amount' => 12545, // amount in cents 'currency' => 'USD', 'card' => $card_id, // optional if the customer has a card on file 'metadata' => array( 'cart_guid' => $cart_guid, 'shop_guid' => $shop_guid, ), ); $client = new StripeClient(); $client->createCharge($user_guid, $charge);