# 选择Bayarcash SDK

> 官方PHP、Node.js、Python、Go、.NET、Dart、Ruby和Rust库，以及Laravel和Django package和安装命令。
>
> Source: https://docs.bayarcash.com/zh/sdks/

Bayarcash为八种编程语言发布了官方SDK，也为Laravel和Django提供package。每一个都会处理base URL、你的Personal Access Token、request checksum和callback验证，让你少写代码。它们全部开源，放在[github.com/bayarcash](https://github.com/bayarcash)。

## 各编程语言的SDK

用你的编程语言的package manager安装对应的SDK：

| 编程语言 | Package | 安装 | 要求 | 源代码 |
|---|---|---|---|---|
| PHP | `bayarcash/php-sdk` | `composer require bayarcash/php-sdk` | PHP 7.4或更新版本 | [php-sdk](https://github.com/bayarcash/php-sdk) |
| Node.js和TypeScript | `bayarcash` | `npm install bayarcash` | Node.js 18或更新版本 | [node-sdk](https://github.com/bayarcash/node-sdk) |
| Python | `bayarcash` | `pip install bayarcash` | Python 3.8或更新版本 | [python-sdk](https://github.com/bayarcash/python-sdk) |
| Go | `github.com/bayarcash/go-sdk` | `go get github.com/bayarcash/go-sdk` | Go 1.21或更新版本 | [go-sdk](https://github.com/bayarcash/go-sdk) |
| C#和.NET | `Bayarcash` | `dotnet add package Bayarcash` | .NET Standard 2.0或更新版本 | [dotnet-sdk](https://github.com/bayarcash/dotnet-sdk) |
| Dart和Flutter | `bayarcash` | `dart pub add bayarcash` | Dart 2.17或更新版本 | [dart-sdk](https://github.com/bayarcash/dart-sdk) |
| Ruby | `bayarcash` | `gem install bayarcash` | Ruby 2.7或更新版本 | [ruby-sdk](https://github.com/bayarcash/ruby-sdk) |
| Rust | `bayarcash` | `cargo add bayarcash` | Rust 1.75或更新版本 | [rust-sdk](https://github.com/bayarcash/rust-sdk) |

最低版本以撰写时为准。每个repository的README都有最新的要求、完整指南和示例。

## 框架package

如果你的App在Laravel或Django上运行，请使用框架package，而不是普通的SDK。它会加入配置、现成的callback和return route（替你验证checksum）、可选的数据库记录，以及定时对账。

| 框架 | Package | 安装 | 要求 | 源代码 |
|---|---|---|---|---|
| Laravel | `bayarcash/laravel` | `composer require bayarcash/laravel` | PHP 8.1或更新版本，Laravel 10至12 | [laravel](https://github.com/bayarcash/laravel) |
| Django | `django-bayarcash` | `pip install django-bayarcash` | Python 3.8或更新版本，Django 3.2至5 | [django](https://github.com/bayarcash/django) |

这两个package都一直使用API v3。

## 把SDK切换到API v3

各编程语言的SDK支持API v2和v3，并从**v2**开始。API v2已停用（deprecated），所以创建client后要马上切换到v3。有些method，例如搜索交易，只能在v3使用。

| SDK | 切换到v3 | 使用sandbox |
|---|---|---|
| PHP | `$bayarcash->setApiVersion('v3')` | `$bayarcash->useSandbox()` |
| Node.js | `bayarcash.setApiVersion('v3')` | `bayarcash.useSandbox()` |
| Python | `bayarcash.set_api_version("v3")` | `bayarcash.use_sandbox()` |
| Go | `bayarcash.WithAPIVersion("v3")`选项 | `bayarcash.WithSandbox(true)`选项 |
| .NET | `bayarcash.SetApiVersion("v3")` | `bayarcash.UseSandbox()` |
| Dart | `bayarcash.setApiVersion('v3')` | `bayarcash.useSandbox()` |
| Ruby | `bayarcash.set_api_version("v3")` | `bayarcash.use_sandbox` |
| Rust | `.set_api_version(ApiVersion::V3)` | `.use_sandbox()` |

在正式环境（production）中删除sandbox调用。PHP的完整指南，见[使用PHP SDK收款](/zh/php-sdk/)。

## 无代码选项

如果要在自动化工作流程中使用Bayarcash而不写代码，见[在n8n中使用Bayarcash](/zh/n8n/)。

## 小贴士

- **把token和secret key放在环境变量中**。每个SDK的README都使用`YOUR_API_TOKEN`之类的占位符。绝对不要把真实的key提交（commit）到你的repository。
- **在项目中固定SDK的版本**。package manager的lock file能防止更新在两次部署之间改变运行方式。升级前先阅读SDK的changelog。

## 常见问题

### 我安装了SDK，但某个method说它只适用于API版本v3。为什么？

大多数SDK一开始使用API v2。在发出任何request之前，先把client切换到v3，例如PHP中的setApiVersion('v3')。Laravel和Django package已经设为v3。

### 如果列表中没有我用的编程语言，应该选哪个SDK？

直接调用REST API。把你的Personal Access Token作为bearer token发送，并按照api-reference.bayarcash.com (https://api-reference.bayarcash.com)操作。见用Bayarcash API开发 (/zh/developers/)。
