A免签+易支付对接过程,适用于独立个人开发者的收款方式

A免签+易支付对接过程,适用于独立个人开发者的收款方式

对于需要接入支付功能的app或者博客、资源站来说,申请一个支付通道,过于麻烦,每年还需要申报公司税务等等

如果只是个人搭建的博客站,或者资源站、线下收费等小额场景,可以使用免签服务。

申请账号获取参数

市面上许多的发卡平台,如 zfaka、风铃发卡、独角数卡等,都支持使用易支付。易支付接口绝大多数平台都兼容支持

如果自己搭建发卡平台,或者自建公众号等资源站,只需要前往平台注册账号即可,

免签易支付平台

注册完成后,都会提供一个 appId 以及 key , 这两个参数各家平台命名不一样,可能叫 pid 或者 key 但本质都是一个东西。

如果有技术能力,可以自行搭建开源的 V免签

服务器接入

对于拥有博客服务器的来说,接入主要实现两个接口:

  • 一个是创建订单。用于生成订单请求。
  • 二是通知接口,用于支付成功后,后续处理

客户端接入

如果是个人开发者的 app,没有服务器,或者使用的是 autojs 等脚本文件,单独去购买服务器,搭建、运维等,成本高,也不一定有能力完成。有第二个方案,同样需要实现两个接口 :

  • 一个是创建订单。用于生成订单请求。
  • 二是轮询查询订单,看是否完成订单支付

第二种方式相对第一种安全性降低。由于没有自己的服务器参与,可能存在客户端被破解、被篡改等问题。推荐第一种服务器接入

创建订单接口

接口:/createOrder

创建订单需要提供参数,以及签名,防止数据篡改,

参数 参数类型 参数说明
appId 字符串 【必传】商户唯一识别号
payId 字符串 【必传】商户订单号,可以是时间戳,不可重复
type 整数 【必传】微信支付传入1 支付宝支付传入2
price 小数 【必传】订单金额
sign 字符串 【必传】签名,计算方式为 md5(payId+param+type+price+通讯密钥)
param 字符串 【可选】传输参数,将会原样返回到异步和同步通知接口
notifyUrl 字符串 【可选】传输参数,支付成功后的同步通知接口
returnUrl 字符串 【可选】传输参数,支付成功后的同步通知接口
isHtml 整数 【可选】传入1则自动跳转到支付页面,否则返回创建结果的json数据

如果没有服务器,纯客户端创建订单isHtml 传入 0 ,然后获取 json 数据,再保存其中的 .data 节点下的 orderId ,通过 orderId 轮询,判断订单是否完成

获取完成通知

服务器接入方式:在生成订单的时候,需要填入 notifyUrl , 当订单完成时,会发送通知到这个链接中,通知参数如下:

payId 字符串 商户订单号
param 字符串 创建订单的时候传入的参数
type 整数 支付方式 :微信支付为1 支付宝支付为2
price 小数 订单金额
reallyPrice 小数 实际支付金额
sign 字符串 校验签名,计算方式 = md5(payId + param + type + price + reallyPrice + 通讯密钥)

一般传入了 notifyUrl 链接的,意味着是服务端创建订单并搭建。所以必须校验 sign 签名确保安全。

轮询订单判断是否完成

以前面提到的为例,如果是以 客户端接入 的方式,没有服务器的 notifyUrl 参数。那么可以通过查询接口,查看之前创建的订单是否完成,涉及到的参数只有一个:orderId ,这个 orderId 就是之前创建订单时,返回的一个参数

查询方式:/getOrder

返回参数 参数类型 参数说明
code 整数 返回代码(1:成功,-1:调用失败)
msg 字符串 api调用结果说明
data 数组 api调用结果(如果code为-1,则data为null)
返回参数 参数类型 参数说明
payId 字符串 商户订单号
orderId 字符串 云端订单号,可用于查询订单是否支付成功
payType 整数 微信支付为1 支付宝支付为2
price 小数 订单金额
reallyPrice 小数 实际需付金额
payUrl 字符串 支付二维码内容
isAuto 整数 1需要手动输入金额 0扫码后自动输入金额
state 整数 订单状态:-1 订单过期 0 等待支付 1 完成 2 支付完成但通知失败
timeOut 整数 订单有效时间(分钟)
date 长整数 订单创建时间时间戳(13位)

每个支付平台参数都不一样,仅供参考。通过返回字段的 data 中的 state 可以得知,订单是否已经完成。由于是客户端接入,通知服务必定失败。所以,当订单状态为 1 或者订单状态为 2 时,可以视为订单完成。

通过客户端接入,可以 0 成本的接入收款系统,但也正是由于客户端接入,生成订单的 pid 已经 key 都是需要保存在客户端代码中,所以风险也很高,需要自行评估这种接入方式的 破解、篡改成本。

最近使用了 AutoJs 编写了很多脚本文件,对于 AutoJs 来说,可以使用客户端接入方式,直接生成订单。不需要额外成本。但是脚本文件一定要使用 js 加密工具处理

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://zwc365.com/2024/05/15/a免签易支付对接过程适用于独立个人开发者的收款方式

Buy me a cup of coffee ☕.