10月26号,了解如何7天上架一个语聊房应用 了解详情
写点什么

周榕彬:云开发模式下的微信支付能力调用新姿势

腾讯云

2020 年 11 月 30 日

周榕彬:云开发模式下的微信支付能力调用新姿势

2020 年 11 月 29 日,腾讯 2020「小程序·云开发」技术峰会在北京顺利召开。本次峰会以“重新定义开发”为主题,深度聚焦小程序云开发的创新成果与实践案例。以下为微信高级后台开发工程师周榕彬的演讲实录:


周榕彬:大家下午好,我是来自微信小程序团队的周榕彬,今天很高兴可以在这里跟大家分享一下云开发的支付能力。


在日常生活中,小程序的支付场景还是很常见的,比方说扫码点餐、付费阅读等等。


当开发者需要在小程序内销售商品或者内容时,就可以通过接入微信支付来完成。


那在传统开发模式下,小程序接入微信支付是一个怎么样的流程呢?


首先开发者需要注册一个微信支付的商户号,并且将这个商户号与小程序 APPID 进行绑定。然后开发者需要准备一套开发调试环境和一套线上环境。这包括购买服务器,并在其上面部署服务运行环境。由于我们调用微信支付 API 的时候必须遵循一些规则,比如调用退款接口时,我们需要用到双向证书,所以开发者还需要提前下载好微信支付的 API 证书,并且将它部署到服务器上。同时,为了安全的接受支付结果回调请求,开发者还需要去购买一个域名,并且为这个域名申请 HTTPS 证书。


然后再来到开发阶段,开发者首先需要设计登录鉴权方案,再进行支付业务逻辑的开发。


最后阶段,就是在小程序上线前,开发者还需要评估服务的性能,然后做缩扩容的方案,以及考虑对系统进行加固,以此来保护我们的业务数据。同时,还需要配备一套监控告警系统,以便开发者更好的了解业务线上情况。


总结起来,在传统的开发模式下,小程序接入微信支付的过程,开发者不仅要关心业务支付逻辑的开发,还需要做好一系列的运维和保障的工作。


那有没有办法让开发者只需要关注业务逻辑开发呢?下面我们看一下云开发是怎么来做到的。


同样的,使用云开发来接入微信支付,同样需要去注册一个微信支付的商户号,并且将该商户号与小程序 APPID 进行绑定。在开通云开发后,开发者可以一键创建云环境,也就不需要再去购买服务器和部署服务运行环境了。在使用我们云开发提供的支付 API 时,由于请求免鉴权了,开发者也不需要下载和部署微信支付的 API 证书。同时,可以通过云函数来接受支付结果回调,开发者不需要额外购买域名,也不需要申请 HTTPS 证书。


来到开发阶段,因为云开发提供天然的鉴权,并且给每个请求带上了 Open ID 等信息,所以开发者也不需要额外设计登录鉴权系统,只需要关注具体的业务逻辑开发就可以了。


在小程序上线后了,开发者可以使用云开发提供的自定义告警来及时的了解线上业务的运行情况。而像保护数据安全、设计服务伸缩等运维工作,就可以放心的交给云开发来做。


总的来说,使用云开发的微信支付能力,能大大降低微信支付的接入门槛,使得开发者有更多时间来投入到业务的开发迭代之中。


前面主要介绍了传统模式下和云开发模式下,接入微信支付的流程差异。那下面具体介绍下云开发支付有哪些优点。


一是安全性。在小程序中使用云开发 SDK 时,请求底层采用的是微信的私有协议,该协议参考了 tls1.3 草案标准进行设计,它可以保证我们云开发请求数据的安全性,做到了防窃听,防篡改,防重放,防伪造,也就是说请求从小程序到达云函数是安全的,而在云函数中使用云开发 SDK 调用支付 API 的时候,底层是通过内网来请求微信支付的 API。内网相对于外网来说,时延更低,网络质量会更加稳定。


下面介绍一下云开发支付能力的实现方案。云开发是通过微信支付服务商的模式来提供支付能力。


开发者在云函数中调用云开发原生支付 API 时,无需使用微信支付的 API 证书,这里也就不存在证书泄漏的风险。而通过我们云开发 SDK 来调用支付能力的时候,请求采用的是云开发的私有协议。云开发后台收到请求后,就会对这个请求进行鉴权校验,最终通过 HTTPS 协议调用微信支付服务商 API。


可以看到在请求的整个过程中,请求的每一个步骤,我们都会进行鉴权校验,从而保证了支付链路的安全性。一个业务上线之后,必须会产生业务的数据,接下来介绍下云开发如何保护业务数据安全的。


云上的资源,不管是云数据库,还是对象存储,都是由腾讯云的访问管理系统(CAM)来提供保护。也就是说对于每个访问云开发资源的请求,CAM 都会校验其请求的权限,所以说,云开发的资源数据不会被恶意访问到。


前面也提到了云开发提供的一些运维能力,比如服务的自动伸缩、自定义告警等等一些


能力。这里再提一下高级日志查询能力,该能力可以帮助开发者快速找到失败 Case 的日志,从而更快地定位到问题,有更多的时间进行修复上线。


前面讲了这么多云开发支付的一些优点,其实接入简单也是很重要一个优点。


这里举一个下单支付的例子。


比如我们现在想买一杯饮料,首先需要获取预付单 ID,开发者只需要在云函数中调用云开发统一下单的接口即可拿到预付单的信息。拿到预付单 ID 等信息后,只需在小程序端调用一下微信 JSAPI,就可拉起支付二维码。当用户扫描完成支付之后,开发者指定的云函数就会收到支付结果回调,在云函数中处理完业务逻辑后,返回特定的消息结构体就可以完成整个支付过程了。


我们可以看到,使用云开发来完成支付下单的过程,开发者只需要十来行代码,就可以完成。再介绍下云开发即将开放的支付工具,包括分账和小程序红包。目前分账能力已在内测完毕,我们会发尽快发布上线。


今天关于云开发支付的分享就到这里。大家在使用云开发的过程中如果有遇到任何问题,欢迎在开发者社区提问。


谢谢。

2020 年 11 月 30 日 17:31814

评论

发布
暂无评论
发现更多内容

Serverless:这真的是未来吗?(二)

Serverless Devs

Serverless 运维 云原生 后端 无服务器

阿里分布式大神亲码“redis核心技术笔记”,没有废话,全是干货!

Java架构追梦

Java redis 阿里巴巴 架构 架构分布式

基础设施设施即代码(IaC)平台 Pulumi | 混合云管理利器

郭旭东

基础设施即代码 IaC

支付中心设计

try catch

支付 支付中心

千万级学生管理系统考试试卷存储方案设计

Hesher

架构 Architecture 架构实战营 存储系统

2、kafka 2.8.0 源码环境搭建

杨四正

大数据 kafka 消息队列 kafka2.8

飞桨前沿升级、顶级开源项目、产教融合育人,WAVE SUMMIT论坛内容先睹为快!

百度大脑

深度学习 飞桨

智能视频云3.0全景图来了!深度融合视频应用共创行业新生态

百度大脑

云智一体 智能视频 云智技术

从酷睿双核到Tiger Lake-H,英特尔如何帮游戏笔记本完成蜕变

新闻科技资讯

前端实操案例丨如何实现JS向Vue传值

华为云开发者社区

Vue 前端 js Promise Vuex state

HTTP/3 初体验

运维研习社

nginx 运维 HTTP3.0 5月日更

多线程 VS 多进程(一)

若尘

多线程 多进程 Python编程 5月日更

深入浅出分布式存储性能优化方案

焱融科技

云计算 分布式 高性能 云存储 超融合

详解JQuery框架的五大选择器

华为云开发者社区

jquery 选择器 层级选择器 属性选择器 过滤选择器

架构实战营模块3课后作业-基于“自研集群+MySQL存储”的消息队列架构设计方案

吴建中

架构实战营

私有云解决方案

anyRTC开发者

音视频 WebRTC RTC sdk

看MindSpore加持下,如何「炼出」首个千亿参数中文预训练语言模型?

华为云开发者社区

框架 mindspore 盘古 NLP 大模型 中文预训练模型

DEMO WORLD分论坛聊些啥?高端制造、未来出行、皮肤科技、未来产业……

创业邦

创新

java性能分析与问题定位 实战

try catch

Java 性能分析

iOS开发底层原理技术~RAC深度解析

ios cocoa 程序员 移动开发

普通代码块 静态代码块 构造代码块......傻傻分不清

麦洛

Java

膜拜!Github访问量破百万,阿里内部首次公布的Java10W字面经有多强?

云流

Java 程序员 架构 面试

聊聊那些小而美的开源搜索引擎

代码先生

搜索引擎 elasticsearch meilisearch

kafka基本概念

杨四正

大数据 kafka 架构设计 消息队列 消息队列架构

Flume的负载均衡load balancer

大数据技术指南

flume 5月日更

测试开发专题-开篇

禅道项目管理

软件测试 自动化测试 测试开发

JavaScript+TensorFlow.js让你在视频中瞬间消失

不脱发的程序猿

JavaScript 人工智能 开源 TensorFlow.js

测试开发网络篇-网络协议简介

禅道项目管理

软件测试 自动化测试 测试开发

SparkStreaming知识点总结

五分钟学大数据

大数据 5月日更

520 单身福利|获奖名单公布~

InfoQ写作平台官方

活动专区 520单身福利

让人工智能成为保险行业科技基因的一部分!

百度大脑

人工智能 保险

周榕彬:云开发模式下的微信支付能力调用新姿势-InfoQ