Skip to content

Alipay+ / Antom 配置(东南亚钱包) ​

一句话

接一个 Antom,买家就能用 GCash、TrueMoney、DANA、Touch n Go、KakaoPay、支付宝 等一批本地钱包付款 —— 不用一个个去谈。

整件事其实只有四步 ​

别被下面的篇幅吓到 —— 正常情况下你只需要复制粘贴四个值, 后面那些长篇都是"万一出问题查哪里",不用先读。

  1. 去 https://www.antom.com/ 注册,集成方式选 CKP 全托管式
  2. 打开控制台的「快速开始」,右侧卡片上就有三个值;私钥在「密钥配置」里
  3. 后台 → 站点管理 → 支付通道 → 新增 Alipay+,填四个值,点「测试连接」
  4. 下一单沙箱走一遍

没有任何命令行操作,也不需要开发介入。 卡住了就翻到最后那张 排错表,上面是系统会弹给你的原话。

什么时候需要它 ​

Stripe 和 PayPal 在东南亚的覆盖是有限的:印尼、菲律宾、泰国、马来西亚的买家 很多人没有信用卡,用的是手机里的电子钱包。

你的目标市场建议
欧美为主Stripe + PayPal 够了,不用接这个
东南亚 / 港澳台 / 韩国加一个 Antom,转化率差别很大
全球都卖三个都开,买家在结算页自己挑

这不是"多一个按钮"那么简单

每多一个支付通道,上线前就多一套要测的东西(真实下单、真实退款、回调)。 没有明确的东南亚订单需求时,先不要接。

和 Stripe / PayPal 最大的三点不同 ​

① 回调地址不用你去填 ​

Stripe 和 PayPal 要你在它们后台建一个 webhook 端点。Antom 不用 —— 系统在每一笔请求里都带上回调地址,Antom 按那个地址回。

控制台里那一格怎么办

Antom 控制台里如果有「通知地址 / Notification URL」这一格: 留空或随便填都行,以我们每笔请求带的为准。

如果它是必填项,填这个(通道ID 在后台建完通道后,通道列表里能看到):

https://你的域名/api/open/payment/callback/antom/通道ID

这样设计是有原因的:换收款账号之后,老订单的回调仍然会打回老通道, 拿得到当时那套密钥去验签。填死一个全局地址就做不到这一点。

② 你要保管一把私钥 ​

Stripe / PayPal 给你的是「密钥字符串」,丢了随时能回它们后台再看一次。 Antom 是非对称加密:控制台帮你生成密钥对,但私钥只显示那一次,Antom 自己不保存。

私钥丢了只能重新生成一对

丢了 = 重新生成密钥对 + 重新上传公钥 + 重新在后台填一遍。 过程中支付会中断。生成完立刻离线备份一份。

③ 沙箱和正式的 Client ID 长得不一样 ​

沙箱的以 SANDBOX_ 开头,正式的没有这个前缀。

系统会强制检查这两件事一致:通道的「环境」开关选了沙箱,Client ID 就必须是 SANDBOX_ 开头的;不一致会直接拒绝,并告诉你是哪一边不对。

为什么要卡这么死

不卡的话最坏的情况是:通道标着「正式」、握着沙箱密钥 —— 测试单混进真实营业额, 而报表数字"看着差不多对",是最难发现的一类错误。

你要拿的四个值 ​

后台字段长什么样在 Antom 哪里
网关地址https://open-sea-global.alipay.com快速开始 → 测试集成资源 →「网关端点」
Client IDSANDBOX_5XXX...(沙箱)同一张卡片 →「Client ID」
Antom 公钥MIIBIjANBgkqhkiG9w0...同一张卡片 →「Antom公钥」
商户私钥MIIEwA...(长四倍)开发者 → 密钥配置(只显示一次)

Antom 给你的是三段,只有两段要填

控制台上「Antom公钥」和「您的公钥」是挨在一起列的,长得几乎一模一样。 按标签认,别按位置认:

标签长度开头结尾填到哪
Antom 公钥392MIIBIjIDAQAB→「Antom 公钥」
您的公钥392MIIBIjIDAQAB哪都不填(这是你上传给 Antom 的)
商户私钥约 1628MIIE各不相同→「商户私钥」

私钥一眼就能认出来:它比公钥长四倍。 只要「商户私钥」那格里的东西不到四百字符、 或者以 MIIBIj 开头,就一定是填错了。

而两把公钥的指纹完全一样(都是 392 / MIIBIj / IDAQAB), 没有任何办法从内容上分辨 —— 只能靠 Antom 控制台上那个标签。复制的时候看准了。

填反了会怎样

  • 公钥填进「商户私钥」:一个请求都发不出去。系统会直接告诉你 「你填的是一把公钥(长 392,MIIBIj 开头、IDAQAB 结尾)。私钥要长得多——约 1600 字符、MIIE 开头」。
  • 私钥填进「Antom 公钥」:同样当场报错点名。
  • 两把公钥搞混(填了「您的公钥」而不是「Antom公钥」):★ 这个测试连接查不出来, 下一节会讲 —— 要等第一笔真实回调才发作,而那时钱已经收了。

网关地址填错,每一笔都会失败

Antom 按区域分了好几个网关,填错区域的报错看不出是区域问题。 以控制台上写的那个为准,别照抄别人的。

区域网关
东南亚https://open-sea-global.alipay.com
美洲https://open-na-global.alipay.com
欧洲https://open-eu-global.alipay.com
全球https://open-global.alipay.com

第 1 步:注册,然后打开「快速开始」 ​

  1. 去 https://www.antom.com/ 注册商户账号
  2. 登录后直接打开这一页:开发者 → 快速开始 (https://dashboard.antom.com/global-payments/developers/quickStart)

你要的东西基本都在这一页上。 页面右侧有一张「测试集成资源」卡片, 四个值里的三个直接列在上面,复制就行:

卡片上的标签对应后台哪一格
网关端点网关地址
Client IDClient ID
Antom公钥Antom 公钥
您的公钥哪都不填(这是你上传给 Antom 的那把)

需要企业主体

Antom 面向企业商户,注册要提供公司资料(营业执照 / 注册证明、法人身份、对公账户), 个人开不了。

但审核和激活不挡开发 —— 注册完就能拿到上面那套沙箱资源,整条链路先跑通再说。

集成方式选「CKP 全托管式集成」

页面中间的「集成引导」第一步要你选集成方式,选错后面全对不上。

本系统接的是 CKP 全托管式(收银台托管页):买家整页跳到 Antom 的页面, 上面列着各个钱包,他自己挑。

其它几种都不要选 —— 代扣 / 订阅要先签约,线下扫码是给收银机器用的, 嵌入式组件要在我们页面里嵌它的 JS(本系统没接这种)。

「集成引导」的 5 步,你只需要做前 3 步

  1. 选集成方式 → CKP 全托管式
  2. 沙箱集成 → 就是拿上面那几个值填进我们后台
  3. 集成用例测试 → 下一单沙箱走通就算过
  4. 切换至生产模式 → 要先激活商家账户(见下)
  5. 集成上线

前三步做完,沙箱就能完整收款和退款了。

想收真钱要先「激活账户」

账户没激活时,第 4 步是灰的点不动,页面上会写 「检测到您的商家账户暂未激活,还无法切换生产模式。请联系您的业务人员激活账户」。

这一步不是技术问题,是商务流程 —— 找 Antom 的对接人推进。 在那之前顶部一直挂着「你正在使用测试数据,不会处理任何真实的交易」。

第 2 步:拿私钥 ​

四个值里只有商户私钥不在「快速开始」那张卡片上 —— 它在左边菜单的 开发者 → 密钥配置 里。

私钥只显示一次

Antom 不保存你的私钥,只在生成那一刻显示一次,刷新就没了。 当场复制到安全的地方(密码管理器 / 加密笔记),别只留在浏览器标签页里。

丢了不是灾难,但要重新生成一对、重新在后台填一遍,中间支付会中断。

不用管格式,粘进去就行

-----BEGIN PRIVATE KEY----- 那两行头尾、中间的换行、前后多余的空格 —— 带着一起粘贴都没问题,系统会自己清掉。

公司规定必须自己生成密钥?(一般人不用看)

少数商户的安全规范要求私钥不能由第三方生成。这种情况下自己生成一对, 把公钥上传到「密钥配置」:

bash
openssl genrsa -out private.pem 2048 && openssl pkcs8 -topk8 -inform PEM -in private.pem -outform PEM -nocrypt -out private_pkcs8.pem && openssl rsa -in private.pem -pubout -out public.pem

上传 public.pem 的内容,后台「商户私钥」填 private_pkcs8.pem 的内容。 ★ 必须是 PKCS#8(private_pkcs8.pem),直接用 private.pem 是 PKCS#1,系统会拒绝并提示你转换。

控制台自带的排查工具(出问题时很有用)

左边菜单 开发者 下面:

  • 请求日志 —— 我们发给 Antom 的每一个请求和它的回复,报错原文在这里
  • 通知日志 —— Antom 回调我们的记录,「支付成功了订单没变」时看这里
  • API 调用模拟 / 错误场景模拟 —— 手动造一个请求或一个失败场景

第 3 步:在后台建通道 ​

后台 → 站点管理 → 支付通道 → 新增

  1. 支付方式选 Alipay+
  2. 环境先选 沙箱
  3. 把上面四个值填进去
  4. 点「测试连接」

「测试连接」做了什么

它拿一个不存在的支付单号去 Antom 查一次单 —— 不会产生任何真实动作, 但能一次验证四件事:网关区域对不对、Client ID 对不对、私钥对不对、沙箱开关对不对。 另外还会把「Antom 公钥」解析一遍,确认它至少是一把格式合法的公钥。

显示「连接成功(沙箱)」才算过。

「测试连接」唯一查不出来的事

它证明不了你填的是Antom 那把公钥 —— 因为你手上两把公钥的格式一模一样, 填哪把都能通过。

原因是:发请求只用私钥签名,公钥要等第一个回调才用得到。 填错的表现是「支付发起正常、买家也付了钱,但所有回调被判为伪造,订单一直停在待付款」。

所以保存之后一定要真的跑一单沙箱(下一节),那是唯一能验出这一格的办法。

会要求输入验证器的 6 位数字

改支付通道要过手机验证器(TOTP),这是全站唯一需要二次验证的地方。 详见 支付通道总览。

第 4 步:跑一单沙箱 ​

  1. 在 C 端下一单,结算时选 Alipay+
  2. 会整页跳到 Antom 的收银台,上面列着各个钱包
  3. 按 Antom 沙箱的说明完成支付(沙箱的钱包会直接放行)
  4. 跳回你的站点,支付结果页会自己轮询

跳回来时显示"处理中"是正常的

回调是异步的,你跳回来的时候它可能还没到。页面会自己轮询, 别把这一刻的"处理中"当成失败。

如果十几秒后还是待付款,去后台 → 订单 → 那一单,看看回调有没有到。

第 5 步:换成正式 ​

沙箱跑通之后:

  1. 先让 Antom 把你的商家账户激活(集成引导第 4 步「切换至生产模式」在那之前是灰的)
  2. 切到生产模式后,控制台会给你一套新的 Client ID / 密钥(不带 SANDBOX_ 前缀)
  3. 后台把通道的环境开关改成 正式
  4. 四个值全部重填一遍

切换环境时密钥框会被清空,这是故意的

不清空的话,框里显示的是掩码(看着像填好了),实际还握着沙箱的密钥 —— 通道标着「正式」却连的是沙箱,每一笔真实付款的回调都会失败。

看到框空了不要慌,重填就是。

上线前别忘了停用沙箱通道

python deploy/deploy.py check 会检查这一项并报警。

出问题时对照这张表 ​

大部分错误系统会直接告诉你该改哪一格,照着提示改就行。下面这张表只列 「提示本身不够明显」或者「根本不报错」的情况:

提示 / 现象怎么办
「你填的是一把公钥(长 392…)。私钥要长得多——约 1600 字符、MIIE 开头」「商户私钥」填成公钥了,换成那段 1628 字符的
「你填的是一把私钥。这一格要的是 Antom 给你的公钥,约 392 字符、MIIBIj 开头」两格填反了,对调
「这是 PKCS#1 格式(BEGIN RSA PRIVATE KEY),要先转成 PKCS#8」照提示里那条 openssl pkcs8 -topk8 命令转一下
「通道设为沙箱,但 Client ID 不是 SANDBOX_ 开头」沙箱/正式的凭据拿混了,按提示改一边
「Antom 拒绝了这次请求:SIGNATURE_INVALID…」密钥格式是对的但签名不被接受 —— 八成是网关区域选错了
「Antom 拒绝了这次请求:ACCESS_DENIED / CLIENT_INVALID」Client ID 和这把私钥不是一对,或者该产品还没开通
「无法连接支付服务,请稍后重试」这个现在只代表真的网络不通(服务器出不去网、网关地址拼错)
发起支付报「Antom 没有返回收银台地址」Antom 那边这个币种或产品没开通,看控制台的开通状态
★ 支付发起正常、买家也付了钱,但订单一直停在「待付款」两种可能:①「Antom 公钥」填成了你自己那把(最常见,测试连接查不出来);② 站点设置里的域名没填或填错 —— 回调地址是用它拼的
退款报「Antom 退款被拒:XXX …」括号里就是 Antom 的原话,按它说的改
Antom 一直重复推送同一条通知正常情况下不会发生。真遇到就是我们回给它的应答格式不对,找技术

日志在哪

回调的处理结果记在服务器的 /opt/mall/logs/mall.log 里,搜 支付回调处理完成。 被判为伪造的会记成 支付回调被拒。

退款 ​

和其它通道一样,走售后工单,不用去 Antom 后台操作。

Antom 的退款是异步的

点了退款之后,后台可能先显示「处理中」,钱实际到账要等 Antom 的结果通知。 Stripe / PayPal 是当场就有结论的,这一点不一样,别以为卡住了。

在 Antom 后台怎么和我们的单子对上

控制台的请求日志里,退款那一条的 refundRequestId 就是后台的退款单号 (形如 R202609050206492057),一一对应,不用另找线索。

支付那一条同理:paymentRequestId 就是我们的支付单号(P2026…), 而 paymentId 是 Antom 自己的流水号。

常见问题 ​

问:接了 Antom 还要不要留 Stripe? 要。Antom 覆盖的是钱包,欧美买家的信用卡还是走 Stripe。三个通道可以同时开着, 买家在结算页自己选。

问:Antom 的手续费多少? 按国家和支付方式分档,以你和 Antom 签的合同为准,系统不参与这件事。

问:结算币种怎么算? 用你在 Antom 那边配的结算币种,系统按订单自己的币种发起收款,不做任何汇率换算。

这份文档只讲后台怎么用,不含任何真实密钥