creem.io 支付对接

creem.io 支付对接
MeteorCat对于个人出海而言, 很多人会误以为海外支付和自己无关, 宁愿走国内繁杂的企业挂靠/资质审批流程来搭建收款/付款通道
但事实上海外大量合规支付渠道原生支持个人主体接入, 开通门槛、资料手续、审核难度, 远低于国内必须依托企业主体才能开通支付接口的规则
需要注意: 最好选择靠谱可信的第三方支付商不要只看低汇率, 否则可能会出现金融风控问题(甚至直接跑路)
在网上对比各家支付商之后, 这里选择 creem.io 来说明个人海外支付对接功能
官网(点击Sign跳转输入邮箱验证, 不存在会帮助创建, 手续费 3.9% + $0.4) https://www.creem.io
注意: creem.io 目前是邀请码机制, 也就是需要排队等待 creem.io 通知可以开通账号, 如下图
这里就代表正在排队等待审核申请, 一般没有邀请码自然申请时间是很久的, 所以建议选择下面选项
-
Tell us about your business: 可以直接声明自己商品类型申请跳过排队
这里点击之后就是具体主要支付的商品和额度类型:
-
Company Name: 公司|个人组织名称, 必填 -
Website: 提供服务的站点, 可以选择性填写 -
Monthly Processing Volume: 每月交易额度, 一般个人直接选择 0-10K 美元即可 -
Tell us about your business: 商品交易的信息
这里填写好公司|个人组织名称等信息, 如果是个人开发者使用, 商品交易的信息内容填写以下内容(可以直接复制):
1 | I am an independent developer / indie hacker, |
提交之后等待 creem.io 联系即可, 注意留意好你注册邮件内部的垃圾邮箱时候有通知, 一般周期是3~7个工作周处理完
商户账号说明: https://docs.creem.io/merchant-of-record/account-reviews/account-reviews
不过自从 creem.io 后面采用邀请码机制之后就很难发放下来, 现在单纯邀请码在国内平台都要收费200左右, 所以这部分申请速度一直被人诟病
申请完成之后会有邮件通知, 最后进后台创建生成独有商户连接最后就能进入 creem.io 的后台
创建商品
申请账号完成之后就是创建我们对外的首个产品, 这里点击管理后台的 Commerce - Products 进入点击 Create Product:
这里分为以下需要填写的内容:
-
Product Details: 基础的商品信息 -
Payment Details: 支付的详情信息(包含有货币和支付类型) -
Product Image(可以暂时不处理): 商品的图片信息 -
Product Features(可以暂时不处理): 商品的特性说明, 比如支付完成自动下载文件和密钥, 用于解锁付费应用等 -
Advanced Options(看情况填写资源): 其他附带的高级字段信息, 支付成功订单附加的支付信息 -
Abandoned Cart Recovery(电商产品推荐开启): 设置购物付款未结算是否提示继续支付, 开启该功能即可自动挽回未结算的购物车订单提升销售额
这里我分步骤说明下应该填写什么信息, 首先是 Product Details:
-
Name: 支付商品名称 -
Return URL(可选): 订单完成之后跳转界面地址(注意:此时并不清楚订单是否完成, 只是支付完成之后跳转页面) -
Description: 支付商品的信息内容, 支持 markdown 格式文档
上面填写以下就会提示 Complete 代表信息没问题, 之后就是 Payment Details 信息, 这里有几种支付类型:
-
Single Payment: 一次性支付类型, 最常见支付类型, 直接付款然后调用发货逻辑 -
Subscription: 订阅会员支付类型, 分为月付/季度/年度会员这种(注意: 订阅服务最开选择SaaS会提供含税信息)
支付的货币类型默认有集中 USD(美元)/EUR(欧元)/SEK(瑞典货币), 一般推荐直接采用 USD 做锚定货币, 之后就去商品分类:
-
Digital goods or services: 数字商品或服务(通用大类, 纯线上虚拟产品首选, 如果不清楚商品类型直接选这个) -
Software as a service (SaaS): 软件即服务(订阅/在线工具/会员/在线系统) -
Ebooks: 电子书(仅售卖电子书籍/文档/教程PDF)
这里还有个 Tax Behaviour(价格是否已含税) 配置, 需要结合业务选取
-
开启之后支付金额是
价格含税的最终金额, 在购买之前能够看到税务信息从而明白自身具体支付金额 -
不开启就是会在用户结账时额外加税, 这也用户在获得账单才可能发现具体的加税的支付金额, 很容易直接投诉
这部分建议直接启用
Tax Behaviour来避免最后支付纠纷
之后的 Product Image/Product Features/Advanced Options/Abandoned Cart Recovery 可以不用管直接创建
我这里为了看起来正规生成一张 icon 图片来处理
这样就创建我们首个 creem.io 支付商品, 只需要花费 1 美元的支付道具(后面点击 Share 旁边的按钮 Edit Product 编辑):
完成之后就是服务端对接支付的流程, 后续就是自己挂载处理支付系统处理
支付对接
我这边先采用 REST API 调试模式来对接, 后面在按照其他编程语言来处理, 具体都是万变不离其宗
注意: 正式创建订单域名为
https://api.creem.io, 测试订单域名为https://test-api.creem.io
创建订单发起请求的如下
1 | 这里采用测试域名 |
如果创建订单成功就会响应以下内容, 需要将用户重定向 checkout_url 支付网页地址:
1 | { |
如果用户支付完成就会附带支付参数回调到 success_url 地址, 最后的回调URL内容如下
1 | https://yoursite.com/success?checkout_id=ch_xxx&order_id=ord_xxx&customer_id=cust_xxx&product_id=prod_xxx |
这里面几个回调参数具体代表意义如下, 回调之后验证参数和订单就可以安排服务端发货
| 查询参数 | 说明 |
|---|---|
| checkout_id | 本次支付所创建结账会话的ID |
| order_id | 支付成功后生成的订单ID |
| customer_id | 客户ID, 根据完成支付的邮箱生成 |
| subscription_id | 对应产品的订阅ID |
| product_id | 该支付关联的产品ID |
| request_id | 选填, 创建结账时你自行传入的请求/参考标识ID |
| signature | Creem 使用你的API密钥对以上所有参数进行加密签名, 可供你自行校验真伪 |
这里先明确这部分概念, 后面将一步一步说明怎么去处理这方面功能, 首先就是创建 API KEY:
这里点击之后会要求提供 KEY 授权范围, 除非要做比较精细的权限区分, 否则可以直接启用 Full Access:
这里点击之后就会成功生成 ApiKey, 默认测试模式 KEY 为 creem_test_xxx 格式, 而正式则是 creem_live_yyy
这里跑下测试支付网关请求确认最后带有具体的 id/checkout_url/status=pending 信息, 完成之后移交给客户端渲染即可
signature需要去验证是否符合, 一般以传入参数 KEY 为正序排列构建成aa=bb&cc=dd最后采用sha256+API KEY哈希处理
一般到这步已经能够跑通整个流程, 但是可以看到官方更加推荐 WebHooks 方式来处理异步回调通知, 这部分支付流程相对更加安全
WebHooks 可以对整体服务端做更加细致的白名单安全控制, 资金安全毕竟是最需要关注的



