juspay/hyperswitch-prism

GitHub: juspay/hyperswitch-prism

Prism 是一个无状态的统一支付处理器连接器库,通过单一 API 接口对接多家支付服务商,消除支付集成的碎片化问题。

Stars: 1242 | Forks: 250

# Hyperswitch Prism **一次集成,连接所有支付处理器。** **只需几行代码即可切换处理器。**

Switch processors with few lines of code

[![许可证:Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [网站](https://hyperswitch.io/prism) · [文档](https://docs.hyperswitch.io/integrations/prism/prism) · [Slack 社区](https://join.slack.com/t/hyperswitch-io/shared_invite/zt-362xmn7hg-ujdw8Wvx_~BgNTLrCcdCPw)
## 什么是 Prism? Prism 是一个无状态的统一连接器库,用于连接任何支付处理器。它提取自 [Juspay Hyperswitch](https://github.com/juspay/hyperswitch) 内部经过多年使用、持续测试和迭代修复而不断完善的成熟集成方案。 ### 为什么支付处理器集成如此重要? 每个支付处理器都有各种各样的 API、错误代码、身份验证方法、需要阅读的 PDF 文档,以及实际环境与文档规范之间的行为差异。 一个小小的错误或疏忽都可能给接受支付的企业造成巨大的财务影响。全球成千上万的企业都经历了这个学习曲线,并在多年间不断迭代和修复他们的支付系统。所有这些修复/改进/迭代都作为内部知识被锁定在企业支付平台和 SaaS 支付编排解决方案中。 因此,**Prism** 应运而生——旨在向全世界开放支付多样性,提供简单、轻量级、零锁定、对开发者友好的支付库。 **Prism 由 [Juspay Hyperswitch](https://github.com/juspay/hyperswitch) 背后的团队提取、构建和维护——该开源支付平台拥有超过 4 万名 Github 星标用户,并被全球领先的企业级商户使用。** **注意:** 坦白说,支付并不比数据库驱动程序复杂。只是这个行业还没有达成一个统一的标准(而且永远也不会!!)。 ## Prism 擅长什么? - 每次支付都采用**统一的请求 schema**。相同的 authorize 调用可以无缝对接 Stripe、Adyen 等,无需编写额外的代码。 - **无状态。无数据库,不存储个人身份信息 (PII)。** 凭证不会被库存储/记录。其生命周期仅与您的 HTTP 客户端相同。 - **缩小 PCI 范围。** 卡数据是否流入该库完全由您决定。您可以选择利用任何支付处理器的保管库或您自己通过 PCI 认证的保管库。该库不会记录或存储任何数据。 ## 集成 - 状态 Prism 支持**多种连接器**,涵盖不同级别的支付方式和流程。每个连接器都会在真实的沙盒/生产环境中进行持续测试。 **图例:** ✓ 支持 | x 不支持 | ⚠ 进行中 | ? 需要验证 | 状态 | 描述 | |--------|-------------| | ✓ | 已完全实现并测试 | | x | 不适用或处理器不支持 | | ⚠ | 实现进行中或部分完成 | | ? | 实现需要针对真实环境进行验证 | **[查看完整的连接器支持范围 →](https://github.com/juspay/hyperswitch-prism/blob/main/docs-generated/all_connector.md)** ## Prism 暂不支持什么? - **内置保管库或 tokenization 服务。** 这是一个设计选择。您可以自带保管库,或使用支付处理器的保管库。 - **重试或路由逻辑。** 它存在于 [Juspay Hyperswitch](https://github.com/juspay/hyperswitch) 中。Prism 仅是转换层。 - **支付以外的功能。** 这种多样性不仅存在于支付领域,还延伸至订阅、欺诈、税务、付款等领域。我们的愿景是将 Prism 演进为一个无状态的商业库。 ## 架构 Prism 架构和组件的极高层级概述。如需了解更多,请[查阅文档](https://docs.hyperswitch.io/integrations/prism/architecture) ``` ┌─────────────────────────────────────────────────────────────────┐ │ Your Application │ └───────────────────────────────┬─────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ Prism Library │ │ (Type-safe, idiomatic interface, Multi-language SDK) │ └────────────────────────────────┬────────────────────────────────┘ │ ▼ ┌───────────────────────┼───────────────────────┬───────────────────────┐ ▼ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ Stripe │ │ Adyen │ │ Braintree│ │ + more │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ ``` ## 🚀 快速开始 **在集成之前**,请阅读您所使用语言的 SDK 指南——其中涵盖了连接器身份验证配置、每个连接器的必填字段、沙盒测试卡、状态码以及常见的运行时陷阱。 **演示应用程序**:查看 [E-Commerce Demo](./demo/e-commerce) 以获取包含 Stripe 和 Adyen 集成的完整工作示例。 ### 安装 Prism 库 首先,请使用您选择的语言安装该库。 #### **Node.js** ``` npm install hyperswitch-prism ``` #### **Python** ``` pip install hyperswitch-prism ``` #### **Java/Kotlin** 添加至您的 `pom.xml`: ``` io.hyperswitch prism 0.0.4 ``` 有关详细的安装说明,请参阅[安装指南](./getting-started/installation.md)。 ### 发起支付 #### **Node.js** ``` import { PaymentClient, types, IntegrationError, ConnectorError } from 'hyperswitch-prism'; let config: types.ConnectorConfig = { connectorConfig: { stripe: { apiKey: { value: "sk_test_" } } } } const main = async () => { try { let client = new PaymentClient(config) let request: types.PaymentServiceAuthorizeRequest = { merchantTransactionId: "authorize_123", amount: { minorAmount: 1000, // $10.00 currency: types.Currency.USD, }, captureMethod: types.CaptureMethod.AUTOMATIC, paymentMethod: { card: { cardNumber: { value: "4111111111111111" }, cardExpMonth: { value: "12" }, cardExpYear: { value: "2050" }, cardCvc: { value: "123" }, cardHolderName: { value: "Test User" }, }, }, authType: types.AuthenticationType.NO_THREE_DS, address: {}, orderDetails: [], } let response: types.PaymentServiceAuthorizeResponse = await client.authorize(request); switch (response.status) { case types.PaymentStatus.CHARGED: console.log("success"); break; default: console.error("failed"); } } catch (e: any) { //handle error } } main() ``` ## 🤖 借助 AI 助手进行构建 如果您正在使用 AI 助手进行构建,请指向 `curl` 以获取完整的 SDK 参考: 此文件包含完整的 SDK 文档,包括安装、支付操作、错误处理、连接器配置、字段探测数据,以及适用于所有支付处理器的示例。 ## 🔄 在支付服务商之间进行路由 一旦实现了基础管道,您就可以利用 Prism 的核心优势——**只需修改一行代码即可切换支付服务商**。 ``` // Routing rule: EUR -> Adyen, USD -> Stripe const currency = types.Currency.USD; let stripeConfig: types.ConnectorConfig = { connectorConfig: { stripe: { apiKey: { value: process.env.STRIPE_API_KEY! } } } } let adyenConfig: types.ConnectorConfig = { connectorConfig: { adyen: { apiKey: { value: process.env.ADYEN_API_KEY! }, merchantAccount: { value: process.env.ADYEN_MERCHANT_ACCOUNT! } } } } const config = currency === types.Currency.EUR ? adyenConfig : stripeConfig; const client = new PaymentClient(config); // Authorize call from previous step ``` 您可以根据任何业务规则和智能重试逻辑来切换客户端,实现支付处理器路由。无论底层处理器的 API 差异如何,每个流程都使用相同的统一 schema。 如果您想了解更多关于路由逻辑和智能重试的信息,可以查看[智能路由](https://docs.hyperswitch.io/explore-hyperswitch/workflows/intelligent-routing)和[智能重试](https://docs.hyperswitch.io/explore-hyperswitch/workflows/smart-retries)。它可以帮助配置和管理多样化的支付受理设置,并提高转化率。 ## 🛠️ 开发 ### 前置条件 - Rust 1.70+ - Protocol Buffers (protoc) ### 从源代码构建 ``` # Clone 仓库 git clone https://github.com/juspay/hyperswitch-prism.git cd hyperswitch-prism # 构建 cargo build --release # 运行测试 cargo test ``` ## 💻 平台支持 `hyperswitch-prism` SDK 包含针对以下平台和架构编译的特定平台原生库。 | 平台 | 架构 | |----------|--------------| | macOS (Apple Silicon) | arm64 | | Linux | x86_64 | ### 报告漏洞 请将安全问题报告至 [security@juspay.in](mailto:security@juspay.in)。
由 [Juspay hyperswitch](https://hyperswitch.io) 团队构建与维护 [网站](https://hyperswitch.io/prism) · [文档](https://docs.hyperswitch.io/integrations/prism/prism) · [Slack 社区](https://join.slack.com/t/hyperswitch-io/shared_invite/zt-362xmn7hg-ujdw8Wvx_~BgNTLrCcdCPw)
标签:API集成, Hyperswitch, JS文件枚举, MITM代理, Payment Orchestrator, 企业支付, 可观测性, 可视化界面, 多渠道支付, 开源支付, 支付中间件, 支付处理, 支付处理器, 支付接口, 支付系统, 支付编排, 支付网关, 支付路由, 无状态服务, 聚合支付, 逆向工具, 通知系统, 金融科技