说明
目前 GeekAI 已经集成了下面几种支付渠道:
- 支付宝 (opens new window):支付宝官方支付渠道,交易费率低,需要企业资质才能申请。
- 虎皮椒 (opens new window):聚合支付通道,支持微信和支付宝两种支付方式,申请比较简单,支持个人申请,开通费用118,交易费用 1-2%+0.6%
- PayJs (opens new window):聚合支付通道,只支持微信支付,方便快捷,SDK 齐全。支持个人申请,没有开通费用,交易费用 %1+0.6%。
# 支付宝配置
首先使用支付宝扫码登录支付宝开放平台 (opens new window),点击【网页/移动应用开发】按钮。
# 生产环境
进入应用创建页面,点击前往创建 (opens new window)。 填入应用相关的信息,提交审核。
审核通过之后,你就可以开始进行开发设置了。主要就设置【接口加签方式】,至于【接口内容加密方式】,【服务器IP白名单】,【授权回调地址】这些,你可以根据你自的需求按需设置。 生产环境建议设置,这样更安全一些。
选择证书签名方式,也是本项目使用的方式。
接下来你需要下载支付宝的 密钥工具 (opens new window) 并安装。
按照说明创建秘钥:
选择 .csr
后缀的秘钥文件:
然后把你生成的证书上传到支付宝开放平台:
上传成功之后,支付宝会生成对应的应用公钥证书,支付宝公钥证书,以及支付宝根证书,你分别把这些证书下载下来。
绑定产品,本项目只用到了 【手机网站支付】 和 【电脑网站支付】 这两个产品,所以你只需绑定这两个即可。
然后把 App 相关信息和证书都配置到 config.toml 文件。相关证书拷贝到 cert/alipay
目录下。
[AlipayConfig]
Enabled = true # 启用支付宝支付通道
SandBox = false # 是否启用沙盒模式,生产环境设置为 false
UserId = "2088721020750581" # 商户ID
AppId = "9021000131658023" # App Id
PrivateKey = "certs/alipay/privateKey.txt" # 应用私钥
PublicKey = "certs/alipay/appPublicCert.crt" # 应用公钥证书
AlipayPublicKey = "certs/alipay/alipayPublicCert.crt" # 支付宝公钥证书
RootCert = "certs/alipay/alipayRootCert.crt" # 支付宝根证书
注意:
最后一步,你需要把你的证书文件拷贝到 certs/alipay
目录下,命名需要保持跟上面配置文档一致。 通过修改 docker-compose.yaml 文件:
# 沙盒环境
如果你想本地调试项目,那么你可能需要一个沙盒支付环境来测试订单支付逻辑。创建沙箱环境非常简单,进入 支付宝开放平台控制台 (opens new window),进入 【开发工具推荐】 栏,选择沙箱。
点击之后会直接进入沙箱环境面板,稍加设置下,不需要审核就可以直接使用了。
下载好证书,复制私钥到 privateKey.txt
,复制商户ID,APPID 填入配置文档,大功告成。
配置好之后重启应用生效:
docker-compose down
docker-compose up -d
# 微信支付配置
# 申请账号
首先,你需要到 微信支付开放平台 (opens new window) 申请一个商户支付账号。
第二步,进入 API安全 (opens new window) 一次申请 “API证书”,“APIv3密钥”以及“平台证书 ”。
第三步,进入 产品中心 (opens new window) 申请对应的支付产品。
="'https://blog.img.r9it.com/2ae56c0feda3d941187f9dbb5a89ac0c.png'" />第四步,进入 商户信息 (opens new window) 页面,获取微信支付商户号。
# 配置支付
将上面获取到的相关信息填入配置文档 conf/config.toml
[WechatPayConfig]
Enabled = true
AppId = "" # AppId
MchId = "" # 商户ID
SerialNo = "" # API 证书序列号
PrivateKey = "res/certs/wechat/apiclient_key.pem" # 将私钥拷贝到对应的目录
ApiV3Key = "" # APIv3密钥
配置完成之后重启容器生效。
docker-compose down
docker-compose up -d
# 虎皮椒支付服务
虎皮椒支付是 GeekAI 对接的聚合支付工具,主要为那些没有企业营业执照,无法直接签约微信,支付宝这种第三方支付渠道的个人用户提供一个收款方式。
虎皮椒支付的开通方法请参考虎皮椒官方的 微信支付签约教程 (opens new window)
建议申请微信支付!!!
然后编辑配置文档 conf/config.toml
,加入虎皮椒支付的配置信息:
[HuPiPayConfig]
Enabled = true
Name = "wechat" # 请不要改动此配置项
AppId = ""
AppSecret = ""
ApiURL = "https://api.xunhupay.com"
配置好之后重启应用生效:
docker-compose down
docker-compose up -d
# 易支付开通
易支付 (opens new window)一款非常优秀的聚合支付工具,GeekPay 是基于易支付开发的一款多功能聚合支付系统,支持个人开户,对个人开发者非常友好,支持每日提现。目前正在促销活动,免开户费🎉🎉🎉。
对接非常简单,首先你到 GeekPay 官方页面 注册一个商户账号,然后登录到商家支付管理后台,点击 “个人资料” -> “API信息” 页面。
第二步,把支付API相关信息直接填入 GeekAI 的配置文档 conf/config.toml
:
[GeekPayConfig]
Enabled = true
AppId = "" # 商户ID
PrivateKey = "" # 商户私钥
ApiURL = "https://pay.geekai.cn" # 支付API地址
Methods = ["alipay", "wxpay", "qqpay", "jdpay", "douyin", "paypal"] # 支持的支付方式
配置好之后重启应用生效:
docker-compose down
docker-compose up -d
# 常见错误处理
一、开启了支付之后,geekai-api 容器启动失败,访问页面API报错 502
这种报错通常是由于你的支付证书加载失败。接下来你需要确认两件事情。
第一,确保你在 conf/config.toml
配置的支付路径是正确的。
假如你的秘钥和证书文件放在 certs 目录(certs和docker-compose.yaml在同一个目录),certs 的目录结构如下:
certs/
└── alipay
├── alipayPublicCert.crt
├── alipayRootCert.crt
├── appPublicCert.crt
└── privateKey.txt
那么你的支付配置应该是类似下面这样的:
[AlipayConfig]
Enabled = true
SandBox = false
AppId = ""
UserId = ""
PrivateKey = "certs/alipay/privateKey.txt"
PublicKey = "certs/alipay/appPublicCert.crt"
AlipayPublicKey = "certs/alipay/alipayPublicCert.crt"
RootCert = "certs/alipay/alipayRootCert.crt"
NotifyURL = "https://r9it.com/api/payment/alipay/notify"
ReturnURL = ""
第二,把 certs 目录挂载到你的 geekai-api docker 容器中,修改 docker-compose.yaml
# 后端 API 程序
geekai-api:
image: registry.cn-shenzhen.aliyuncs.com/geekmaster/geekai-plus-api:v4.0.9.2-amd64
container_name: geekai-api
restart: always
ports:
- "5678:5678"
- "6012:6012"
volumes:
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
- ./conf/config.toml:/var/www/app/config.toml
- ./static:/var/www/app/static
- ./certs:/var/www/app/certs # 挂载 certs 目录
- ./data:/var/www/app/data
environment:
- CONFIG_FILE=config.toml
二、为什么我配置好了支付渠道,但是在前端的“会员计划”页面的充值产品下面没有支付按钮呢?
没有支付按钮通常意味着你没有启用任何支付渠道。此时你需要检查一下 config.toml 配置文档中的支付配置段,每个支付渠道都有一个 Enabled
字段,确保这个字段的值是 true
。
Enabled = true
AppId = ""
UserId = ""
PrivateKey = "certs/alipay/privateKey.txt"
PublicKey = "certs/alipay/appPublicCert.crt"