支付宝 当面付(扫描支付) 对接逻辑
这两天给网站 博客下方添加了 打赏功能 使用的是 支付宝的 当面付功能 特此记录一下,觉得不错的可以在下方打赏 嘿嘿 ,下面先来看一下效果图。
1.当面付产品介绍
本篇主要介绍 扫码支付
当面付帮助商家在线下消费场景中实现快速收款,支持 条码支付 和 扫码支付 两种付款方式。商家可通过以下两种任一方式进行收款,提升收银效率,实现资金实时到账
- 条码支付:买家出示支付宝钱包中的条码、二维码,商家扫描用户条码即可完成 条码支付 收款。
扫码支付
:买家通过使用支付宝 扫一扫 功能,扫描商家收款二维码即可完成 扫码支付 付款。
2.扫码支付应用场景
适用于单件商品单独定价、无人值守
、自助售货机 打赏
等商家。用户打开支付宝中的 扫一扫 功能,扫描商家展示的二维码进行支付。该模式适用于线下实体店支付、面对面支付、自助售货机等场景。
3.准入条件 (商家想用该功能的条件)
需要有营业执照和门头照片,门头照片可以网上随便找一个上传上去, 营业执照需要和商家账户名相同 ,本人是没有的 ,所以大概 30天后 就无法使用了。。
该能力对企业支付宝账户和个体工商户开放。
商家的收银系统需要有红外扫描枪设备,或其他的扫码、展示码设备。
签约申请提交资料:
经营场所照片。
- 有门头照的经营场所,需提供门头照。
- 无门头照的经营场所,需提供内景照或场景照。
同名的营业执照(即与支付宝账户认证名称一致)。
您可以在支付宝 PC 端登录 商家中心,进入 产品签约管理,通过资质凭证补全来恢复产品的正常使用。
账户类型 收款额度规则 入驻资质要求(页面需要填写) 使用时间 个人账户 单笔收款 ≤ 500元,单日收款 ≤ 5000元,不区分借记或贷记渠道。 1、需按规范提交经营场景照片(如门头照、门店地址);2、提供本人同名营业执照。 30天。如提交资料均不通过,商家需要在合约生效后的30天内补全门头照等资料,否则会影响正常收款
。温馨提示:当使用时间到期(从合约生效开始计算 30天)系统会在到期前 15 天和 3 天发出代办通知,30 天到期,为了更好的产品使用体验,建议您及时补全资质)。个人账户 收款不受限额。 1、需按规范提交经营场景照片(如门头照、门店地址);2、提供本人同名营业执照。 若提交资料均通过,收款不受限。 企业账户 收款不受限额。 无 无
- 若签约时提供了同名营业执照,或者签约后补充了同名营业执照,商家收款无限额。
4.接入准备
需要获取 以下参数供 后续调用接口:
APPID :通过创建应用后 应用头像下发的 202100xxxxx 这个就是APPID
应用私钥: 通过密钥在线生成器 可以直接生成
应用公钥: 通过密钥在线生成器 可以直接生成
支付宝公钥: 这个要注意,是通过 上面的应用公钥 去换取的 ,在应用 开发信息 -》 接口加签方式 -》设置
4.1 创建应用
登录 支付宝开放平台,创建应用并提交审核,审核通过后会生成应用唯一标识 APPID,并且可以申请开通开放产品使用权限。通过 APPID 应用才能调用开放产品的接口能力。详情请参考 创建应用。
4.2 配置应用
应用创建完成后,系统会自动跳转到应用详情页面。您可以在 能力列表 中点击 添加能力 来添加 当面付 功能
4.3 设置接口加签方式
在 应用 -》开发信息 -》 接口加签方式 -》设置
支付宝开放平台的应用管理体系,使用了公私钥的机制,商户可通过设置接口加签方式为自身应用配置 公私钥/公私钥证书 来保障商户应用和支付宝交互的安全性。密钥的获取方式请参见 生成密钥 可以选择Web在线生成方式。
公钥证书与公钥的区别请参见 普通公钥与公钥证书区别。
填入 上面在线生成的 公钥字符 点击保存设置
通过应用公钥 换取 支付宝公钥 这个后面调用接口是有用的
4.4 上线应用
商户在添加功能和配置密钥后,即可将应用提交审核,预计会有一个工作日的审核时间,请耐心等待,详细步骤可参考 上线应用。
应用上线后,还需要完成应用签约才能在线上环境(生产环境)使用当面付功能。
4.5 签约 当面付
这个也很重要 必须签约后 才能使用
当面付 需要签约 上传 门头照片 和 营业执照 ,门头照片可以网上随便找一个无水印的, 营业执照可以暂时不传,不传大概可以使用30天
签约完成后 应用部分会多出一个 应用2.0签约xxxxx 自动生成的
当上面的接入准备都做完后 即可获得 以下几个数据
APPID :通过创建应用后 应用头像下发的 202100xxxxx 这个就是APPID
应用私钥: 通过密钥在线生成器 可以直接生成
应用公钥: 通过密钥在线生成器 可以直接生成
支付宝公钥: 这个要注意,是通过 上面的应用公钥 去换取的 ,在应用 开发信息 -》 接口加签方式 -》设置
5.扫码支付 逻辑
来看看 支付宝提供的 接入流程图
开发者需要确认自己的应用在审核通过后显示 已上线,同时完成当面付功能的签约后,才能顺利调用以下接口。否则会有缺少权限的报错。
调用流程
- 后台 调用 支付宝的 预下单请求(可以设置二维码过期时间) 获取二维码
- 后台将二维码 生成图片 返回给 前端
- 用户进行扫码 支付完成后 可以通过配置 支付成功异步调用接口,或者后台自主轮训查询接口 来判断是否支付完成
- 如果二维码过期或者 在指定时间内 用户未支付 调用 cancel 接口去 撤销关闭交易
当面付推荐使用 自主轮训查询,我这里使用的异步通知接口 为了尝试看看
- 商户系统调用 alipay.trade.precreate(统一收单线下交易预创建)接口,获得该订单的二维码串 qr_code,开发者需要利用二维码生成工具获得最终的订单二维码图片;
- 发起轮询获得支付结果:等待 5 秒后调用 alipay.trade.query(统一收单线下交易查询)接口,通过支付时传入的商户订单号(out_trade_no)查询支付结果(返回参数 TRADE_STATUS),如果仍然返回等待用户付款(WAIT_BUYER_PAY),则再次等待 5 秒后继续查询,直到返回确切的支付结果(成功 TRADE_SUCCESS 或 已撤销关闭 TRADE_CLOSED),或是超出轮询时间。在最后一次查询仍然返回等待用户付款的情况下,必须立即调用 alipay.trade.cancel(统一收单交易撤销接口)将这笔交易撤销,避免用户继续支付;
- 除了主动轮询,当订单支付成功时,商户也可以通过设置异步通知(notify_url)