我们在 Legend Base SDK 中提供两种 Apple Pay 的集成方式:
- 在重定向的网页完成支付。
- 在当前网页内完成支付。
在开始集成前我们建议阅读下面的文档说明:
重定向的支付流程
优点:运行环境兼容性高,不用另外配置 Apple Pay(商户 id,证书,验证域名等)。
缺点:交互流程长,数据消息传输路径长。
- 调用
canSetupApplePay()方法,获取当前运行环境是否支持 Apple Pay。
const resp = await legend.canSetupApplePay()
console.log("canSetupApplePay: \n", resp);- 调用
startApplePay()方法,获取跳转支付的地址。
const { url, payment_intent_id } = await legend.startApplePay({
app_state,
address: "",
network: "ETH",
pair: "USDCUSD",
side: "buy",
size: 50,
external_order_id: `otcsb-applepay-${Date.now().toString()}`,
layout: 'legend', // 'mini', 'legend'
redirect: "https://www.legendtrading.com" // 用于接收支付结果的重定向地址
});
console.log("url: %o", url);
console.log("payment_intent_id: %o", payment_intent_id);- 将用户重定向到上述方法返回的 url。
重定向的目标网页UI和数据消息可以定制,需要定制的需求请和我们具体沟通。

- 用户完成支付后会被重定向回到调用
startApplePay()方法时传入的 redirect 地址。重定向的请求参数会包含额外的status,order_id,trade_id和payment_intent_id。
https://www.legendtrading.com/?status=error&order_id=otcsb-applepay-1750724991438&trade_id=&payment_intent_id=200aeaa9-6b7e-49ee-a766-491253a99f3d
https://www.legendtrading.com/zh_Hans?status=success&order_id=otcsb-applepay-1750725740082&trade_id=45856e7d-ff06-43a7-88cb-22eee5e09ac4&payment_intent_id=
- 使用
getIntentStatus()方法查询支付订单的状态。
const resp = await legend.getIntentStatus({
payment_intent_id: "92a8527c-01e3-47c6-bf07-e9ac3c8d8cda"
});
console.log("intent status: \n%o", resp);当前网页的支付流程
优点:交互流程短,数据消息传输直接。
缺点:运行环境要求高,需要额外配置 Apple Pay(商户 id,证书,验证域名等)。在安全合规方面有额外风险。
- 调用
canSetupApplePay()方法,获取当前运行环境是否支持 Apple Pay。
const resp = await legend.canSetupApplePay()
console.log("canSetupApplePay: \n", resp);- 调用
setupApplePay()方法,初始化 Apple Pay 的支付按钮。
await legend.setupApplePay({
wrapperSelector: '.apple-pay-wrapper',
button: {
style: 'black',
type: 'plain',
locale: 'en-US',
},
order: {
app_state,
address: "",
network: "ETH",
pair: "USDCUSD",
side: "buy",
size: 50,
external_order_id: `otcsb-applepay-${Date.now().toString()}`
}
});

