Shopify第三方自定义支付网关集成实现问题咨询
Shopify第三方托管跳转类支付集成答疑
疑问1:是否仅开发payment extension即可满足需求
仅开发payment extension无法完成全流程对接,需要搭配自托管的应用后端服务,实际交互逻辑和你预想的webhook传参模式有差异:
- 你需要先在Partner Dashboard创建对应类型的Shopify应用,再为应用挂载
payments类型的extension,这个扩展的核心作用是在Shopify结账页注册你的支付选项、配置基础规则(支持币种、服务覆盖国家、支付交互类型),本身不承担支付请求处理逻辑 - 客户选中你的支付选项提交订单时,Shopify不会通过普通webhook推送支付请求,而是会调用你在扩展配置中预留的支付会话初始化接口(接口部署在你的自有服务端),你在接口内完成请求验签、订单信息校验后,直接返回自有支付页的跳转地址即可,Shopify会自动将客户重定向到该页面
- 客户在你托管的页面完成支付后,不能直接跳转回商家店铺,需要先调用Shopify支付会话完结接口,上传支付状态、交易流水号等核心参数,拿到Shopify返回的合法店铺跳转地址后再引导客户跳转,否则Shopify侧无法同步支付状态,对应订单会一直处于待支付挂起状态。
注:旧版Hosted Payments SDK废弃后,跳转类第三方支付没有其他替代SDK,所有同类服务商均采用上述「支付扩展注册+自托管后端处理」的对接模式。
疑问2:payment extension创建实操流程
不需要依赖零散的公开文档,按以下步骤即可完成创建配置:
- 安装最新版Shopify CLI,登录你的Partner账号,本地初始化应用模板,面向全量商家开放的支付服务选
Public app,仅服务指定商家的选Custom app - 进入本地应用项目根目录,执行扩展生成命令:
shopify app generate extension,在弹出的交互选项中选择Payments类型扩展,按提示填写支付方式展示名称、扩展标识 - 修改扩展生成目录下的两个核心配置:
- 扩展基础配置:填写自有服务端的支付初始化接口地址、支持的币种列表、可服务的国家/地区编码,将
hosted_redirect字段设为true(标记为跳转类支付) - 前端展示配置:定义结账页上你的支付选项显示的图标、说明文案、适用场景提示
- 扩展基础配置:填写自有服务端的支付初始化接口地址、支持的币种列表、可服务的国家/地区编码,将
- 配置完成后执行
shopify app deploy将扩展上传至Partner后台,关联到对应应用即可。跳转类支付不需要为扩展编写额外前端代码,不需要在Shopify结账页嵌入支付表单。
疑问3:第三方支付网关搭建核心逻辑
不需要找完整公开参考示例,覆盖三个强制核心模块即可跑通全流程:
- 签名校验模块:所有Shopify发往你服务端的请求(支付初始化、退款、支付状态查询)都会携带Shopify生成的签名,你必须使用应用的客户端密钥做HMAC-SHA256验签,拦截伪造请求
- 支付状态同步模块:除了客户支付完成后的主动同步逻辑,还需要预留支付状态查询接口——如果客户支付后直接关闭页面未触发跳转,Shopify会主动轮询该接口获取订单支付状态,你需要实时返回准确的支付结果、交易信息
- 退款适配模块:商家在Shopify后台发起退款、撤销订单操作时,Shopify会自动推送请求到你配置的退款处理接口,你需要在接口内完成自有支付侧的退款流程,再将退款结果同步回Shopify
调试阶段可以直接使用Shopify CLI自带的
tunnel命令做内网穿透,将本地服务暴露为公网HTTPS地址,不需要额外部署测试服务。
内容的提问来源于stack exchange,提问作者Michael Nortje
相关产品推荐
相关产品推荐

