后端 /
接入支付宝收款
AI 已经能替你写支付的代码了——你只要说一句「帮我接入支付宝」,购买按钮、生成订单、跳转到支付宝、收到到账通知后标记已付款,这些它都能写好。
但有一件事 AI 替不了你:支付宝的 APPID、密钥和收款账号,只能由你本人到支付宝开放平台去申请。这些信息决定「钱打给谁」,支付宝只认账号主人自己操作。
所以这篇文章不讲代码,只帮你做一件事:把支付宝那边的几项信息找齐、填对。剩下的交给 AI。
全程三步:
- 到支付宝开放平台拿四项信息(本文的主要篇幅)
- 把它们填进 Creght 的「后端 → 集成」
- 跟 AI 说一句话,它把页面接起来
开始之前
你需要一个已完成企业认证的支付宝账号,并且在支付宝开放平台签约了「电脑网站支付」。个人账号无法签约这个产品,这是支付宝的规定,没有绕过的办法。
目前支持电脑网站支付;手机网站支付、App 支付、当面付暂不支持。
第一步:到支付宝开放平台拿四项信息
登录 支付宝开放平台,进入用于收款的那个应用。要拿的四项分布在两个不同的页面,下面按页面分开讲。
1. APPID
在左侧「应用详情」页面顶部,一串以 2021 开头的数字,复制下来。
2. 应用私钥与支付宝公钥
点左侧开发设置,找到「开发信息」这一块,点第一行「接口加签方式(密钥/证书)」右侧的查看(还没配过就显示「设置」)。

在这个页面上做三件事:
- 用 支付宝开放平台开发助手 生成一对 RSA2 密钥,选密钥模式(不要选证书模式,暂不支持)。
- 工具会给你两串:应用私钥自己留着(等下填进 Creght),应用公钥粘贴到这个页面上传。
- 上传成功后,同一个页面会显示一串支付宝公钥,复制它。
这一步最容易出错,因为前后一共出现了三串东西,名字还很像:
| 名称 | 谁生成 | 用途 | 填到哪 |
|---|---|---|---|
| 应用私钥 | 你(开发助手) | 给请求签名 | Creght 的「应用私钥」 |
| 应用公钥 | 你(开发助手) | 让支付宝验证你的签名 | 上传到支付宝,不填进 Creght |
| 支付宝公钥 | 支付宝 | 让你验证支付宝的通知 | Creght 的「支付宝公钥」 |
顺便看一眼这个页面上的支付宝网关地址,正式环境就是 https://openapi.alipay.com/gateway.do,所以 Creght 里的「网关地址」留空即可。
3. AES 密钥(大多数人可以跳过)
只有「开发信息」第二行「接口内容加密方式」显示「已设置」时才需要它:点查看,复制那串 Base64。没设置过就跳过,后面的步骤都不受影响。
4. 收款账号 PID
这一项不在「开发设置」里,而在另一个页面:打开 合作伙伴身份页面 (或左侧密钥管理 → mapi 网关产品密钥),页面顶部的「合作伙伴身份(PID)」就是它,点复制。

它是一串以 2088 开头的数字,代表实际收款的账号。Creght 用它核对「这笔钱确实是打给你的」,所以必须和你实际收款的账号一致。
第二步:填进 Creght
打开编辑器的后端 → 集成,在「添加应用」里选支付宝,按下表填写:
| 字段 | 填什么 |
|---|---|
| 名字 | 自己看的名称。同一个网站接多份时用来区分,例如「主收款账号」 |
| 渠道 tag | 用来区分多份配置,默认 default 就够。只有两个收款账号才需要两个不同的 tag |
| 应用私钥 | 上一步自己留着的那串(不是应用公钥) |
| APPID | 上一步那串以 2021 开头的数字 |
| 收款账号 PID | 上一步那串以 2088 开头的数字 |
| 支付宝公钥 | 支付宝给你的那串(不是你自己的应用公钥) |
| 异步通知地址 | https://你的正式域名/func/alipay.notify,照着填,见下方说明 |
| 支付后返回地址 | 可选。付款后跳回哪个页面,只影响体验 |
| AES 密钥 | 只有开了内容加密才填,大多数人留空 |
| 网关地址 | 留空即正式环境。只有用沙箱测试才填沙箱网关 |
「异步通知地址」照着填就好,不用自己创建任何东西。一笔钱到没到账,只能由支付宝的服务器回调你的网站来告知(用户付完款跳回页面这件事不算凭据,因为那个页面谁都能直接打开)。/func/alipay.notify 是固定写法,AI 在第三步会替你把这个接收地址建好,所以你现在直接填上它即可。
域名要填你网站正式对外访问的那个——绑定的自定义域名,或者发布后 Creght 给你的正式域名,必须是 https。不要填预览域名,支付宝的线上通知发不到预览域名。以后换了域名,记得回来把这一格改掉。
点保存时,Creght 会真的调用一次支付宝来验证这套信息,一次验四件事:APPID 是否存在、应用私钥和你上传的应用公钥是否配对、支付宝公钥对不对、网关选得对不对。填错当场就报错,不用等到有客户付款才发现。
保存时报错了怎么办
| 报错里出现 | 原因和处理 |
|---|---|
isv.invalid-signature | 应用私钥和上传给支付宝的应用公钥不是同一对。重新用开发助手生成一对,私钥填 Creght、公钥传支付宝 |
isv.invalid-app-id | APPID 填错,或者用了沙箱的 APPID 但没填沙箱网关 |
| 提到「支付宝公钥」验签失败 | 「支付宝公钥」填成了自己的应用公钥。回开放平台复制支付宝显示的那一串 |
isv.decrypt-error | AES 密钥不对,或支付宝后台改过它 |
isv.insufficient-isv-permissions | 这个应用没签约「电脑网站支付」,去开放平台的产品签约里开通 |
| 「应用私钥格式不对」 | 私钥内容不完整。PKCS#8 和 PKCS#1 都支持,带不带 BEGIN/END 头都行,但不能少字符或夹杂多余内容 |
第三步:让 AI 把页面接起来
保存成功之后,回到编辑器,跟 AI 说一句:
我已经集成了支付宝,帮我在页面上接入支付宝。
AI 会替你把余下的事做完:建好接收到账通知的地址、生成订单、把「购买」按钮连到支付宝、收到通知后标记已付款。如果你顺便说清楚要卖什么、付完款给什么,效果会更好,例如:
我已经集成了支付宝,帮我在课程详情页加一个「立即购买」按钮。付款成功后显示购买成功,并且我能在后台看到所有订单。
AI 写完之后要发布网站:支付宝只会把到账通知发到已发布的正式域名,没发布就收不到通知。以后每次改动和支付有关的代码,也都要重新发布一次。
AI 做完之后,确认这三点
这三点是收款的安全底线,AI 默认会处理,你也可以直接问它确认:
- 价格由服务端的商品数据决定,不能由浏览器传上来——否则等于让顾客自己定价。
- 只有验签通过的支付宝通知才算付款成功,用户跳回页面不算。
- 同一笔订单的通知会重复到达,所以发货或开通权限要做到重复通知也只生效一次。
想让 AI 有更明确的参考,可以把这个链接一起发给它: 使用集成接入支付宝支付——那是写给开发者和 AI 看的代码文档,你不需要自己读。
上线前一定要真付一笔
支付宝提供沙箱环境,可以不动真钱走完整个流程。沙箱有自己独立的 APPID、密钥和网关地址,不能和正式环境混用:用沙箱就在「网关地址」里填沙箱网关,APPID 和密钥也都换成沙箱那一套。
但沙箱测通不等于正式环境能用。正式上线前,把某个商品价格临时改成 0.01 元,在正式域名上真实付一笔,确认网站收到了通知、订单变成已支付。这一步没有替代品。
常见问题
付款成功了,但网站没反应?按顺序查三件事:集成里的「异步通知地址」是不是已发布正式域名下的 https 地址;网站是不是已经发布(改完支付相关代码要重新发布);这个地址和 AI 实际创建的地址是否一致——直接问 AI「我的支付宝通知地址是什么」就能对上。
能接两个收款账号吗?可以。添加两份支付宝集成,给它们不同的渠道 tag,然后告诉 AI 哪个页面用哪个 tag 收款。注意同一个 tag 不能标在两份支付配置上——那会报错,因为订单和收款账号必须一一对应。
密钥会泄漏吗?不会。应用私钥只保存在服务端,签名和验签都由平台完成,网站代码、日志和浏览器都拿不到它。支付类集成也不允许把密钥暴露给代码,所以 AI 写出的代码里同样看不到你的密钥。
