首页 > 分享 > 安全与便捷并行,打造高效易用的用户支付体验

安全与便捷并行,打造高效易用的用户支付体验

华为开发者空间 安全与便捷并行,打造高效易用的用户支付体验

cover

安全与便捷并行,打造高效易用的用户支付体验

在当今数字时代,快捷、安全的支付方式已经成为用户日常生活中不可或缺的一部分。不论是在线购物、订阅服务,还是线下消费,用户都期望享受流畅且安全的支付体验。作为开发者,选择适合的支付服务不仅关乎用户体验,更直接影响业务是否能够达到预期的成功。(Payment Kit) 提供了方便、安全和快捷的支付方式,将强大的支付、营销、运营等能力,通过HarmonyOS系统级接口形式开放给广大开发者,集成便捷且快速

华为移动服务  ·  2024-07-17 13:47:44 发布

在当今数字时代,快捷、安全的支付方式已经成为用户日常生活中不可或缺的一部分。不论是在线购物、订阅服务,还是线下消费,用户都期望享受流畅且安全的支付体验。作为开发者,选择适合的支付服务不仅关乎用户体验,更直接影响业务是否能够达到预期的成功。

HarmonyOS SDK 华为支付服务(Payment Kit) 提供了方便、安全和快捷的支付方式,将强大的支付、营销、运营等能力,通过HarmonyOS系统级接口形式开放给广大开发者,集成便捷且快速,为用户提供最佳的支付解决方案。用户可以在App或者元服务内,通过华为支付服务的单次支付完成实体商品或服务的购买。以下我们以单次支付为例深入了解下华为支付服务的接入流程。

业务流程

开发步骤

注:商户及应用开发前置准备事宜请参考接入指南,本文仅阐述关键开发步骤。

预下单(服务器开发)

1.开发者按照商户模型调用直连商户预下单或平台类商户/服务商预下单接口获取预支付ID(prepayId)。

为保证支付订单的安全性和可靠性需要对请求body和请求头PayMercAuth对象内的入参排序拼接进行签名。请参考排序拼接和签名示例代码。

2.构建orderStr。

商户服务器需要将客户端支付接口入参orderStr签名后返回给客户端。

import com.huawei.petalpay.paymentservice.apiservice.client.model.BaseGwRspWithSign; import com.huawei.petalpay.paymentservice.apiservice.client.model.PreOrderCreateRequestV2; import com.huawei.petalpay.paymentservice.apiservice.client.model.PreOrderCreateResponse; import com.huawei.petalpay.paymentservice.apiservice.client.model.PreSignRequestV2; import com.huawei.petalpay.paymentservice.apiservice.client.model.PreSignResponse; import com.huawei.petalpay.paymentservice.core.client.DefaultPetalPayClient; import com.huawei.petalpay.paymentservice.core.client.PetalPayClient; import com.huawei.petalpay.paymentservice.example.common.CommonResponse; import com.huawei.petalpay.paymentservice.example.common.MercConfigUtil; import lombok.extern.slf4j.Slf4j; public class MercApiController { private static PetalPayClient payClient = new DefaultPetalPayClient(MercConfigUtil.getMercConfig()); public CommonResponse aggrPreOrderForAppV2() { PreOrderCreateRequestV2 preOrderReq = getPreOrderCreateRequestV2(); PreOrderCreateResponse response = null; try { response = payClient.execute("POST", "/api/v2/aggr/preorder/create/app", PreOrderCreateResponse.class, preOrderReq); } catch (Exception e) { log.error("request error ", e); return CommonResponse.buildErrorRsp(e.getMessage()); } if (!validResponse(response)) { log.error("response is invalid ", response); return CommonResponse.buildFailRsp(response); } return CommonResponse.buildSuccessRsp(payClient.buildOrderStr(response.getPrepayId())); } public static boolean validResponse(BaseGwRspWithSign rsp) { return rsp != null && "000000".equals(rsp.getResultCode()); } public static PreOrderCreateRequestV2 getPreOrderCreateRequestV2() { return PreOrderCreateRequestV2.builder() .mercOrderNo("pay-example-" + System.currentTimeMillis()) .appId(MercConfigUtil.APP_ID) .mercNo(MercConfigUtil.MERC_NO) .tradeSummary("请修改为对应的商品简称") .bizType("100002") .totalAmount(2L) .callbackUrl("https://www.xxxxxx.com/hw/pay/callback") .build(); } } 拉起华为支付收银台(端侧开发)

调用requestPayment接口拉起Payment Kit支付收银台。

•当接口通过then()返回时,则表示当前订单支付成功。

•当此次请求有异常时,可通过error.code获取错误码,错误码请参见错误码。

import { BusinessError } from '@kit.BasicServicesKit'; import { paymentService } from '@kit.PaymentKit'; import { common } from '@kit.AbilityKit'; [@Entry](https: [@Component](https: struct Index { context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; requestPaymentPromise() { const orderStr = '{'app_id':'***','merc_no':'***','prepay_id':'xxx','timestamp':'1680259863114','noncestr':'1487b8a60ed9f9ecc0ba759fbec23f4f','sign':'****','auth_id':'***'}'; paymentService.requestPayment(this.context, orderStr) .then(() => { console.info('succeeded in paying'); }) .catch((error: BusinessError) => { console.error(`failed to pay, error.code: ${error.code}, error.message: ${error.message}`); }); } build() { Column() { Button('requestPaymentPromise') .type(ButtonType.Capsule) .width('50%') .margin(20) .onClick(() => { this.requestPaymentPromise(); }) } .width('100%') .height('100%') } } 支付结果回调通知(服务器开发)

支付成功后Payment Kit服务器会调用开发者提供的回调接口,将支付信息返回给开发者的服务器,回调详细信息按商户模式请参见直连商户支付结果回调通知或平台类商户/服务商支付结果回调通知。

为保证信息合法性,商户服务器需要对返回的支付信息进行SM2验签,验签注意事项:

1.需直接使用通知的完整内容进行验签。

2.验签前需要对返回数据进行排序拼接,sign字段是签名值,排序拼接后的待验签内容需要排除sign字段。

3.验签公钥使用华为支付证书。

了解更多详情>>

访问华为支付服务联盟官网

获取华为单次支付功能开发指导文档

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

已为社区贡献341条内容

直播时间 2024-11-27 16:30:00

回放中

直播时间 2024-11-21 16:30:00

回放中

直播时间 2024-10-23 16:30:00

回放中

直播时间 2024-10-14 16:30:00

回放中

直播时间 2024-09-26 16:30:00

回放中

相关知识

星支付:安全便捷的手机支付应用,为您带来全新支付体验
花店app为广大的爱花用户提供了一个高效便捷的购物平台
花瓣支付下载安装:智能支付新体验,安全便捷满足生活各种需求
全国鲜花同城配送服务,打造便捷、高效的花卉消费新体验,全国鲜花同城便捷配送,打造高效消费新体验
打造用户友好的鲜花预定配送系统开发
央行批准华为花瓣支付 花瓣支付唯一一个没有外资的支付系统
详解网联付款,揭开在线支付背后的安全机制与操作流程
打造高效便捷的花店网站,代码的力量!
网上鲜花预约系统:打造高效便捷的在线鲜花订购平台
花瓣支付登陆华为畅连, 颠覆你的支付习惯! 共创智慧支付新纪元!

网址: 安全与便捷并行,打造高效易用的用户支付体验 https://m.huajiangbk.com/newsview948882.html

所属分类:花卉
上一篇: 配送管理实务
下一篇: 娃哈哈的物流系统分析设计