转载于:http://blog.csdn.net/looksunli/article/details/16872467

在我们的游戏充值模块中,接入了支付宝,苹果,Paypal, googleplay , mycard, mol, 360,机锋,91等各种充值渠道。这篇文章(包括接下来的几篇文章)将对充值系统的需求,数据库设计,构架,充值流程,安全处理,各种渠道的详细接入方式等各个方面做出详细的说明。

充值最基本的需求是,玩家付费购买内置商品后得到相应的商品。首先需要解决三个个问题:
(1)购买渠道
(2)商品的数据库设计
(3)订单的数据库设计
购买渠道
这里所指的渠道不是充值平台,而是充值平台提供实现充值的接口,在实现充值模块之前,我们需要对支付的实现方式有一个大致的了解。常见的支付实现有两种方式:SDK和WEB。如支付宝就提供了两种方式。
我们游戏对支付宝的接入,同时实现了这两种方式:游戏内置充值使用了SDK接入,官网充值使用了WEB接入方式。 SDK接入需要游戏服务器和客户端通信,我们使用了android.js。 实现官网充值需要考虑官网服务器和游戏服务器之间的通信方式。这个需要考虑到RPC的设计。关于购买渠道的具体实现以后会有更详细的说明。

商品的数据库设计

不同的商品会对应不同的支付平台。也就是说,每个平台都会有自己定义的商品。还有一点需要注意的是,在实现苹果接入的时候,需要把将要上架的商品在苹果的商店中登记在册,这样就会在苹果的商品中有一个对应的ID号。本地需要保持这个第三方ID,为了之后支付的时候做数据验证。每次购买商品,需要接受一个平台ID,通过这个ID来判断这个商品属于哪个平台。
详细设计结构:

订单的数据库设计

当生成一笔订单的时候,首先要保证的是订单号不能重合。我们的做法是,提供一个自增的数据来和其他的随机字符串组合生成一个订单号:
[php]  view plain copy
  1. /**
  2. * 生成订单流水号
  3. *
  4. * @return string $orderSn
  5. */
  6. public static function createSn()
  7. {
  8. $setArr = array(
  9. 'create_time' => $GLOBALS['_DATE']
  10. );
  11. $insertId = Dao('Order_CreateSn')->insert($setArr);
  12. return date('YmdHis') . mt_rand(1000, 9999) . str_pad(substr($insertId, -5), 5, 0, STR_PAD_LEFT);
  13. }
在我们游戏中,通过玩家的联盟号(user_code)来下单,订单还需要保存的数据如下:

转:充值系列—充值系统数据库设计(一)相关推荐

  1. 充值系列——充值系统安全问题(四)

    这是充值系列的最后一篇,将讨论充值安全的问题.正如这个系列的其他文章提到的,充值系统的流程如下: 注意: 4,5执行顺序不确定,步骤4是支付平台自动向服务器请求,步骤5是玩家点击"返回商家网 ...

  2. Blog博客系统数据库设计

    2019独角兽企业重金招聘Python工程师标准>>> 项目--Blog博客系统数据库设计:http://blog.163.com/sean_zwx/blog/static/1690 ...

  3. cs结构航空订票系统java_VC++航空订票系统数据库设计-课程设计

    VC++航空订票系统数据库设计 目录 一  绪论 1 二 需求分析 1 三 概要设计 2 四 详细设计 4 五 调试分析 19 六 测试结果 20 七 用户使用说明 29 小结 29 参考文献 30 ...

  4. 简易投票系统数据库设计

    介绍 简易版的投票系统数据库设计. 发现设计有误请在评论区指出,谢谢! 一.截图 项目表 选项表 投票表 二.代码 票表 CREATE TABLE `as_ticket` (`id` varchar( ...

  5. 点餐系统mysql设计,外卖点餐系统数据库设计.doc

    外卖点餐系统数据库设计.doc 外卖点餐系统数据库设计 需求分析: 现要开发外卖点餐系统.经过可行性分析和初步的需求调查,确定了系统的功能边界,该系统应能完成下面的功能: 订餐管理. (2)菜单管理. ...

  6. KTV点歌系统数据库设计文档

    KTV点歌系统数据库设计文档 前台e-r图 后台 E-R 3.数据库字典 SwanInfo(歌星表) 中文名 英文名 数据类型 大小 约束 备注 歌星编号 SwanID varchar 20 主键, ...

  7. 电子商务系统数据库设计(一)

    数据库基本操作 最近学数据库数据库学得飞起,学数据库当然少不了学sql,老师讲得很多很系统,但是我相信很多初学者不可能在短短40分钟之内把所有老师将的课程都吸收,个人认为,数据库的精髓在于多实践,多练 ...

  8. 服装系统mysql设计_服装销售系统数据库设计.ppt

    * * * 数据库应用技术 山东外贸职业学院 服装销售系统数据库设计 项目描述 开发一套服装销售管理软件,对服装销售进行信息化管理. 包括:采购订货.退货.前台零售.批发业务.销售管理.会员管理.库存 ...

  9. 点菜系统数据库设计说明书

    1引言. 2 1.1编写目的. 2 1.2 定义. 2 1.3参考资料. 2 2需求分析. 3 2 .1数据字典. 3 2 .2数据流图. 3 3结构设计. 3 3.1概念结构设计. 3 3.2逻辑结 ...

  10. 考试系统mysql数据库设计_在线考试系统数据库设计(表)

    <在线考试系统数据库设计(表)>由会员分享,可在线阅读,更多相关<在线考试系统数据库设计(表)(7页珍藏版)>请在人人文库网上搜索. 1.在线考试系统数据库设计数据库名OnLi ...

最新文章

  1. python画图中文显示_解决Linux系统中python matplotlib画图的中文显示问题
  2. UML建模系列文章总结 (转载)
  3. webp app推荐图片格式,更小更快减少oom
  4. java log4j logback jcl_知识总结-Java日志框架Log4j、Log4j2、logback、slf4j、简介
  5. DockerCon 2016 深度解读: Citrix 服务发现解决方案 —— Nitrox
  6. 黑火药跟黄火药的区别在哪里?
  7. ASP.NET Web API 特性
  8. React学习:生命周期、过滤器、event、axios-学习笔记
  9. 爆点客源4.1.0活动营销应用56版 修复朋友圈不显示问题
  10. Java Web开发中,自定义过滤器被执行两次的原因分析及解决办法
  11. C#读写者线程(用AutoResetEvent实现同步)(转载)
  12. 不考虑知识点,考代码段更好
  13. Real-Time Rendering——16.1 Sources of Three-Dimensional Data三维数据的来源
  14. C++车辆管理系统课程设计
  15. 机器学习之监督学习-分类模型K近邻(KNN)算法实现
  16. 在线逻辑分析仪的使用
  17. 微信小程序之商品发布+编辑功能(多图片上传功能)
  18. 分布式 - 公司使用什么RPC框架,聊聊你理解的RPC原理
  19. 针对复杂问题的知识图谱问答最新进展
  20. Mongodb Mysql 小测试 (To Be Continued)

热门文章

  1. 象棋为什么不多不少刚好有五个兵?
  2. python中bytearray函数_Python内置bytearray函数详细介绍
  3. 阿里云计算的发展现状,主要的产品有哪些?
  4. 唯美云朵壁纸苹果动态
  5. 安装R语言扩展包diveRsity-1
  6. 移动大掌柜技术服务支持
  7. linux程序设置开机自动启动/etc/rc.d/rc.local, /etc/profile.d/
  8. hadoop常用命令
  9. 小米8se android q,小米8 SE开始测试安卓Q系统,国产第一款
  10. Looking in indexes: xxx WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None