1. 腾讯云支付开发平台概述


  腾讯云支付(cpay.qq.com)是建立在腾讯公司安全稳定的支付系统、丰富便捷的收费渠道基础上,为第三方开发者量身定制的支付体系。腾讯云支付不仅为第三方应用提供了专业的虚拟货币充值、支付、结算等传统功能,并且具备安全,对账,统计分析,营销活动管理等一系列增值功能,致力为第三方应用打造一个可靠、专业的支付平台,在此基础上更为第三方提供多元化、智能的支付营销解决方案。
2. 支付开放的难题
1、 众多第三方需要接入,支付接口如何易用。
2、 第三方直接公网接入账户支付,原有支付架构安全级别需要提升。
3、 公网调用第三方进行发货,如何保证安全和效率。
3. 云支付平台特点
  1.高效率一站式的自助接入流程为公司各开放平台提供针对应用的一站式计费接入流程,提供沙箱环境的全自助化测试轻量审批,无需各开放平台额外进行开发;


  2.覆盖数十个专业支付渠道:云支付覆盖包含Q币Q点、Q 卡、财付通、网银等在内的数十个专业支付渠道,使计费结算更加便捷;
  3.应用账户托管:云支付提供统一账户功能,对各类应用支付币统一管理,提供安全集中的账户托管功能;


  4.安全营销:第三方接入支付后,可通过平台自助申请营销活动;
  5.与各应用实现轻松便捷的自动对账:为第三方应用提供对账接口,使各应用与腾讯轻松自动对账,并提供每日账单查询、明细上传下载等服务;
  6.安全稳定的结算功能:云支付提供腾讯公司与第三方应用定期结算的功能,保障付款的按时、安全和流程化;


  7.专业的支付安全审计,确保交易和账户安全。
4. 云支付平台系统结构
  腾讯云支付整体结构如下图


  从上到依次分为:
  a.转发层:负责APP外部的接入。会对APP进行接入权限的校验,频率限制等;
  b.接口层:负责各接口协议的具体逻辑处理。校验请求串的合法性:APP接口权限校验,登录态校验等。由于涉及多个开放平台,还会根据平台来源进行不同用户VIP特权校验。
  c.交易层:负责直接计费的支付和赠送等营销活动的支持。
  d.渠道层:负责具体的各渠道信息处理。如Q点Q币、QQcard、财付通微账户等。
  e.账户层:主要是腾讯账户体系。包括用户的Q点Q币账户、游戏币帐号、赠送账户等。用户在每一款应用都可以拥有一个独立的游戏账户,同时也可以拥有多个应用通用的公共游戏账户。
  f.业务层:负责公司内产品如包月的发货及第三方道具的发货等。根据业务特性支持应用部署在腾讯机房或者非腾讯机房的发货机制。
  g. 安全层:交易的所有安全控制限制。
5. 支付安全
1、接入安全
  根据业务特性,提供了http和https两种接入方式。对内网接入的应用可以采用http接入方式;需要通过公网接入的必须使用https的方式保证公网传输数据的安全性。

2、token安全
  支付的第一步是第三方把道具信息包括:物品ID、单价、购买数量等敏感信息通过https发送到云支付平台,获取token,后续支付交换都使用token+sig作为传输凭证。Token作为安全凭证之一,设定了短生命周期和分布存储,避免支付重放和被收集利用。
3、页面安全
  支付会对跨域、盗链等请求进行拒绝。
4、支付流程安全
  支付过程必须经过安全中心统一的消费安全认证,尽量保证用户账户的安全。如下图:


5、发货安全


  因为业务发货的接口安全性就显得极为重要,一旦被攻破导致可以不扣款就发货,影响会极大。解决办法如下图:



a) 第三方应用机器全部在腾讯机房托管:


涉及公网的信息交换,由腾讯云支付部署https网关的方式转发信息到应用所在的机房,再内网方式调用应用进行发货。


b) 第三方应用机器非腾讯机房托管:


由于公网直接调用应用机器进行发货,协议信息明文曝露在公网不安全,需要第三方提供https的发货server,腾讯支付网关以https的方式调用应用进行发货;https双向认证需要的证书由腾讯云支付提供。


6、发货效率


用户在玩游戏的时候,对购买道具的发货实时性要求非常高,调用第三方采用同步发货是用户更接受的方式:


a) 同步方式:


发货是一个同步的过程,第三方发货成功后按协议返回指定的格式支付才真正扣除用户费用。


b) 同步方式优化:
第三方如果在2秒钟内没有返回,平台会直接返回且暂时锁定用户的当前支付金额,并提示用户发货进行中,请一定时间内检查物品。如果在一定时间内第三方主动调用腾讯云支付的订单确认接口,那么交易成功,否则交易回滚不扣除用户费用。



6. 示例


  下面以一个典型的Q点直购的业务场景来做个纵向说明。


  Q点直购定义:用户直接使用Q点来购买第三方的道具。


  流程示意图如下:


  注:OpenAPI即云计费对外协议接口,第三方应用一般都放在第三方独立机房, 和深圳腾讯的业务机器是隔离的,通讯只能走公网。



  用户点击购买,App后台发起直购请求,即调用BuyGoods接口, 返回计费URL及请求token。


  应用根据1)返回的URL和token,调用 JS(fusion api)接口,跳转到云支付页面。


  用户在支付页面确认后,点击购买按钮,进行购买。


  云计费内部在扣Q点后,调第三方回调发货 接口实际发货, 如果有消费保护等, 还会要求用户输入消保密码。


  第三方校验发货请求中的token等信息,合法则发货。


  页面跳转,提示交易结果。


  回调第三方指定的js api回调函数,刷新用户道具信息。


7. 结束语


  腾讯云支付平台致力于提供专业、可靠、快速接入的支付整体解决方案,为提升各个开放平台价值收益不断创新、努力。腾讯云支付终端开放支付也在不断完善,推广,大家拭目以待。