标题:统一支付处理利器:Elixir库Gringotts
项目简介
Gringotts是一款基于Elixir的支付处理库,它整合了多种支付网关,灵感来源于Shopify的activemerchant
和commerce_billing
。这个项目提供了一个实时演示供你体验。
技术分析
Gringotts设计了一个简单而统一的API,可以访问到各种有着不同API、响应模式、文档和术语的支付网关。它不依赖GenServer
作为“支付工作者”,而是通过一致化的文档和充分的测试确保其可靠性和易用性。此外,Gringotts还支持更多的支付网关。
应用场景
无论你是构建一个电子商务平台,还是需要在应用中集成多种支付方式,Gringotts都能为你提供便利。你可以轻松地使用Gringotts来处理购买、授权、捕获、退款、撤销等支付操作,无需关心背后复杂的支付网关实现细节。
项目特点
- 统一API:无论哪个支付网关,你只需调用相同接口。
- 简化流程:无需管理支付工作者进程。
- 全面测试:代码覆盖率高,保证稳定运行。
- 广泛支持:目前支持包括Authorize.Net、CAMS、MONEI、PAYMILL、Stripe和TREXLE在内的多个支付网关,更多网关正在持续增加中。
- 配合优秀的Money库:建议与
ex_money
一起使用,以精确处理货币计算。
安装与使用
添加gringotts
为你的Elixir应用依赖,并配置相应的支付网关参数即可开始使用。例如,以下代码展示了如何使用MONEI网关进行一次购买操作:
# config/config.exs
config :gringotts, Gringotts.Gateways.Monei,
userId: "your_secret_user_id",
password: "your_secret_password",
entityId: "your_secret_channel_id"
# 使用示例
alias Gringotts.Gateways.Monei
alias Gringotts.CreditCard
card = %CreditCard{
...
}
amount = Money.new(42, :USD)
case Gringotts.purchase(Monei, amount, card) do
{:ok, %{id: id}} -> IO.puts("Payment authorized, reference token: '#{id}'")
{:error, %{status_code: error, raw: raw_response}} -> IO.puts("Error: #{error}\nRaw:\n#{raw_response}")
end
结论
如果你正在寻找一种易于集成、功能强大的支付解决方案,Gringotts无疑是理想之选。它的强大能力和灵活性使其成为Elixir开发者处理在线支付的必备工具。现在就加入,开启你的无缝支付之旅吧!