华为支付-免密支付接入支付并签约场景

鸿蒙时代
发布于 2025-2-10 09:45
浏览
1收藏

一、场景介绍
用户在商户APP应用/元服务选购完不同的商品确认订单后,跳转至用户支付并签约确认页面,用户完成支付并签约后,后续再次购买商品时,商户可以直接发起代扣,减少用户拉起收银台、输入支付密码等相关操作。
支持商户模型:直连商户、服务商
华为支付支付并签约页面展示:
华为支付-免密支付接入支付并签约场景-鸿蒙开发者社区
二、业务流程
开发者通过接入Payment Kit 提供的支付并签约能力,可以让用户在支付完成后快速与商户建立签约代扣的关系。具体接入流程如下:
华为支付-免密支付接入支付并签约场景-鸿蒙开发者社区
1.商户客户端请求商户服务端创建商品订单。
2.商户服务端调用Payment Kit服务端直连商户预下单或服务商预下单接口。
3.Payment Kit服务端返回预支付ID(prepayId)给商户服务端。
4.商户服务端组建订单信息参数orderStr返回给商户客户端。
5.商户客户端使用orderStr调用requestPayment接口调起Payment Kit支付收银台。
6.Payment Kit客户端展示支付收银台。
7.用户通过收银台完成支付并签约。
8.Payment Kit服务端处理支付并同步返回支付受理成功结果给Payment Kit客户端。
9.Payment Kit异步处理支付完成并回调支付结果给商户服务端(支付失败场景不会有支付结果回调通知)。商户服务端需要使用SM2验签方式对支付结果进行验签。
10.Payment Kit服务端处理签约并同步返回签约受理成功结果给Payment Kit客户端。
11.Payment Kit服务端异步处理签约完成后回调签约结果给商户服务端(取消签约和签约失败场景不会有回调结果通知)。商户服务端需要使用SM2验签方式对签约结果进行验签。
12.Payment Kit客户端展示结果页。
13.用户关闭结果页后Payment Kit客户端会返回支付状态给商户客户端。
14.商户客户端进行后续处理操作。
三、接口说明
接口返回值有两种返回形式:Promise和AsyncCallback。Promise和AsyncCallback只是返回方式不一样,功能相同。
华为支付-免密支付接入支付并签约场景-鸿蒙开发者社区
四、开发步骤
(一)预下单(服务器开发)
1.按照商户模型调用直连商户预下单或服务商预下单接口获取预支付ID(prepayId)。
为保证支付订单的安全性和可靠性需要对请求body和请求头PayMercAuth对象内的入参排序拼接进行签名,请参考排序拼接和签名示例代码。
2.
3.构建订单信息参数orderStr返回给客户端,业务接口请求示例代码可参考业务接口请求。
(二)拉起华为支付收银台(端侧开发)
使用orderStr调用requestPayment接口拉起Payment Kit支付收银台。
支付并签约拉起支付收银台与商户基础支付场景处理逻辑一致,可参见这里。
(三)支付并签约结果处理(服务器开发)
商户在构建直连商户预下单或服务商预下单请求参数时,传入一个callbackUrl。在完成支付并签约后,华为支付服务器将以POST方式调用callbackUrl,将支付并签约的结果返回给商户服务器。
说明
如果用户没有提前登录,系统会自动拉起华为账号登录页面让用户登录。
支付并签约接口请求成功不代表支付或签约成功,建议不要以客户端签约收银台返回作为用户支付并签约的最终结果,需以服务器接收到的结果通知或者查询API返回为准。
为保证信息合法性,商户服务器需要对返回的支付信息进行SM2验签,验签注意事项:
1.需直接使用通知的完整内容进行验签。
2.验签前需要对返回数据进行排序拼接,sign字段是签名值,排序拼接后的待验签内容需要排除sign字段。
3.验签公钥使用华为支付证书。
本文主要引用参考HarmonyOS官方文档

分类
收藏 1
回复
举报
1
回复
    相关推荐