韩国境外企业如何申请支付宝商城跨境支付
结论
韩国注册企业可以接入支付宝跨境在线支付,供中国内地支付宝用户在其运营的商城中付款。常见的办理方式有两种:
- 向支付宝跨境业务渠道或国际业务平台直接申请,由韩国公司签约、收款和结算。
- 通过韩国当地或具备跨境收单资质的支付服务商(PSP)接入支付宝。
能否直接签约,以及支持的商品类型、结算币种和费率,都要经过商户审核、行业审核及风险评估。普通支付宝个人账户或中国境内企业使用的“当面付”产品,不能代替境外商户跨境收单产品。
为什么需要申请跨境支付产品
这类交易涉及中国支付宝用户、韩国境外商户,以及负责跨境收单、换汇和资金结算的支付机构。
消费者可能看到人民币金额并使用支付宝付款,韩国商户则按合同约定以韩元、美元等币种结算。支付机构还要完成商户身份核验、反洗钱审查、交易监控、退款处理和跨境结算。因此,注册一个普通支付宝账号并不能满足这些要求。
申请前需要满足的条件
韩国企业通常需要具备以下条件:
- 已在韩国依法注册,且经营状态正常;
- 实际经营内容与登记的经营范围基本一致;
- 拥有可用于对公收款的韩国公司银行账户;
- 商城已经上线,或至少提供可供审核的测试环境;
- 网站清楚展示公司信息、商品价格、物流方式、退款规则和联系方式;
- 商品或服务属于支付机构允许受理的行业;
- 可以提供订单、物流、退款和客户投诉等交易资料;
- 遵守韩国当地法律,以及面向中国消费者销售时适用的跨境贸易、海关、税务和数据保护要求。
药品、医疗服务、金融投资、虚拟资产、博彩、成人内容、部分数字商品及其他高风险行业,通常会受到限制或需要额外审批。具体业务和商品能否受理,应以支付机构出具的书面审核结果为准。
应当选择哪种接入模式
直接签约
韩国公司可以直接申请成为境外商户,由支付宝国际业务渠道或相关跨境支付平台负责审核和签约。
这种方式通常适合交易规模较大、有完整技术团队,并且能够自行处理风控、对账和退款的商城。直接申请是否开放、是否设有最低交易规模,并没有适用于所有商户的统一标准。
通过支付服务商接入
韩国公司也可以与当地收单机构或跨境 PSP 签约,由服务商提供支付宝支付方式。
这种方式通常接入较快,还可能同时支持银行卡和其他电子钱包。不过,费率、结算周期、退款规则及保证金均由服务商合同约定。选择服务商时,应核实其合法资质,并确认合同中的实际收单主体和资金结算路径。
办理流程
1. 整理业务信息
申请前需要明确以下信息:
- 商城域名和运营主体;
- 主要销售的商品或服务;
- 目标客户所在地区;
- 预计月交易额和平均客单价;
- 商品使用人民币、韩元还是美元标价;
- 希望采用的结算币种;
- 发货地点和物流方式;
- 退款、取消及拒付处理机制;
- 使用网站支付、移动网页支付还是 App 支付。
支付机构会根据这些信息判断适用的产品和审核流程。
2. 联系官方渠道或合规服务商
提交咨询时,应把需求说清楚,例如:
韩国注册企业运营跨境商城,希望接入支付宝在线支付,由中国内地支付宝用户付款,款项结算至韩国公司银行账户。
不要只询问“申请支付宝账号”,否则申请可能被分配到个人账户、境内商户或线下二维码产品。
3. 提交商户入驻申请
申请资料一般包括韩国公司的注册信息、受益所有人信息、网站资料、预计交易规模和银行账户信息。支付机构还可能要求企业董事、法定代表人或最终受益所有人完成身份验证。
4. 接受业务及合规审核
审核内容通常包括:
- 企业真实性核验;
- 董事和最终受益所有人核验;
- 网站及商品审核;
- 制裁名单和反洗钱检查;
- 交易规模及风险评估;
- 银行账户归属核验;
- 物流、退款和投诉机制审查。
如果网站尚未完善、网站显示的公司名称与申请主体不一致,或商户无法说明商品来源和履约方式,支付机构通常会要求补充材料。
5. 签订合同并确认商务条款
签订合同时,应重点确认以下条款:
- 支付手续费;
- 是否收取开户费、网关费或最低服务费;
- 结算币种及换汇规则;
- 结算周期;
- 退款后是否退还手续费;
- 是否设置滚动保证金;
- 拒付和争议的处理方式;
- 单笔及单日交易限额;
- 禁售商品范围;
- 提前终止合同和暂缓资金结算的条件。
消费者支付币种、订单币种和商户结算币种可能并不相同,应要求服务商提供完整的汇率计算示例。
6. 开通测试环境并完成技术接入
审核通过后,平台会提供商户号、测试环境、SDK 或 API 文档,以及签名密钥或证书的配置方法。典型的支付流程如下:
- 商城后端创建本地订单;
- 后端调用支付机构的创建支付接口;
- 前端跳转至或展示支付宝收银台;
- 用户在支付宝中确认付款;
- 支付机构向商城后端发送异步通知;
- 商城验证签名,并主动查询支付结果;
- 确认支付成功后更新订单并履约;
- 每日下载账单并完成对账。
7. 联调、验收并上线
上线前至少应测试以下情况:
- 正常支付;
- 用户取消支付;
- 支付超时;
- 重复通知;
- 全额及部分退款;
- 金额或币种不一致;
- 网络超时后的主动查询;
- 通知验签失败;
- 重复提交订单;
- 日终对账存在差异。
通常需要准备的材料
不同签约渠道对材料的要求可能不同,以下是常见清单。
企业材料
- 韩国公司注册证明;
- 商业登记证;
- 公司章程或股东结构文件;
- 公司注册地址证明;
- 董事、法定代表人信息;
- 最终受益所有人声明;
- 董事及最终受益所有人的身份证件或护照;
- 必要时提供文件的英文或中文翻译件。
银行材料
- 韩国公司名下的银行账户证明;
- 银行出具的账户文件或近期银行对账单;
- 银行名称、账户号码、SWIFT/BIC 等信息;
- 账户名称与签约公司名称不一致时的关系说明。
原则上应使用签约公司自己的对公账户。使用第三方账户、个人账户或关联公司账户,通常会增加审核难度。
网站及业务材料
- 商城网址或测试账号;
- 商品或服务说明;
- 商品价格和币种;
- 购买及履约流程;
- 退款、退货和取消政策;
- 配送范围和预计时效;
- 隐私政策和用户协议;
- 客服邮箱、电话及营业地址;
- 供应商合同、采购凭证或品牌授权文件;
- 预计月交易额、平均客单价和退款率;
- 已开展业务时的历史交易数据。
商城页面显示的公司名称最好与签约主体一致。如果商城使用品牌名称,应在网站中说明该品牌与韩国公司的关系。
后端接入示例
实际接口地址、请求字段、签名算法和 API 名称,必须以签约后取得的官方文档为准。下面的代码只用于说明安全的后端处理结构,并不对应某个支付产品的正式接口。
import express from "express";
const app = express();
app.use(express.json());
app.post("/checkout", async (req, res) => {
const order = await createLocalOrder({
merchantOrderId: crypto.randomUUID(),
amount: req.body.amount,
currency: req.body.currency,
status: "PENDING"
});
// paymentClient 由签约平台提供的官方 SDK 初始化。
const payment = await paymentClient.createPayment({
merchantOrderId: order.merchantOrderId,
amount: {
value: order.amount,
currency: order.currency
},
paymentMethod: "ALIPAY",
returnUrl: "https://shop.example.kr/payment/return",
notificationUrl: "https://shop.example.kr/webhooks/payment"
});
res.json({
orderId: order.merchantOrderId,
checkoutUrl: payment.checkoutUrl
});
});
处理异步通知时,不能只读取请求中的 status 字段。系统必须先验证签名,再核对订单号、金额和币种:
app.post("/webhooks/payment", async (req, res) => {
const signature = req.headers["payment-signature"];
const valid = paymentClient.verifyNotification({
body: req.body,
signature
});
if (!valid) {
return res.status(400).send("invalid signature");
}
const localOrder = await findOrder(req.body.merchantOrderId);
if (!localOrder) {
return res.status(404).send("order not found");
}
if (
localOrder.amount !== req.body.amount.value ||
localOrder.currency !== req.body.amount.currency
) {
return res.status(400).send("amount or currency mismatch");
}
// 通知可能重复发送,订单状态更新必须具备幂等性。
if (localOrder.status !== "PAID") {
const result = await paymentClient.queryPayment({
paymentId: req.body.paymentId
});
if (result.status === "SUCCESS") {
await markOrderAsPaid(localOrder.merchantOrderId, result.paymentId);
}
}
res.status(200).send("success");
});
示例中的 paymentClient、createPayment、verifyNotification 及相关字段名称都是结构性占位符,不能直接作为支付宝正式 SDK 的接口使用,也不能据此猜测签名算法。
技术实现中的注意事项
金额使用最小货币单位或十进制定点数
不要直接使用二进制浮点数计算金额。接口要求传入整数最小单位还是十进制字符串,应以正式文档为准。
const amount = "129900"; // 示例值,单位含义由具体接口规定
商户订单号必须唯一
同一个订单再次发起支付时,应按照平台的幂等规则处理,避免重复扣款。服务端还需要保存支付单号与商城订单号之间的对应关系。
以服务端结果为准
用户跳回 returnUrl,只能说明浏览器完成了跳转,不能证明支付已经成功。发货前,应结合异步通知和主动查询接口确认支付状态。
正确保存原始通知数据
可以保留通知原文、请求头、验签结果和处理时间,但不要在日志中记录完整身份证件、银行卡信息、密钥或非必要的个人数据。
使用官方 SDK 管理签名
私钥、证书和 API 凭证只能保存在服务端,并通过密钥管理系统或受控环境变量加载。不得将这些信息写入网页 JavaScript、App 包或代码仓库。
容易忽略的事项
- 支付宝支付成功,不代表韩国出口申报、税务处理或中国进口清关已经完成。
- 销售实物商品时,应保存订单、支付、物流和签收信息,用于处理投诉和风险审查。
- 退款通常必须原路退回,不能私下转入其他支付宝账户。
- 合同约定的结算周期不等于实际到账时间。到账还可能受到周末、节假日、外汇兑换和风控审核影响。
- 不要用中国关联公司的名义签约后,再私下将资金转给韩国公司,除非相关交易、税务和资金关系真实,并得到收单机构认可。
- 网站上线后,如果新增高风险商品、改变经营模式或大幅提高交易额,应提前通知支付机构。
- “支付宝境外收款码”通常用于线下门店,不能直接用于商城网站的在线收银。
- API 产品名称和开放范围可能因地区、签约渠道及业务类型而异,应以申请时的商户后台、正式合同和对应技术文档为准。
如果韩国企业还没有确定服务商,可以先完善商城中的公司信息、退款和物流政策及商品页面,同时整理公司注册、最终受益所有人和对公银行账户材料,再向官方跨境业务渠道或韩国当地合规 PSP 提交预审。
备注:内容仅供参考。
