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

转载于: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 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * 生成订单流水号 
  3.  * 
  4.  * @return string $orderSn 
  5.  */  
  6. public static function createSn()  
  7. {  
  8.     $setArr = array(  
  9.         'create_time' => $GLOBALS['_DATE']  
  10.     );  
  11.   
  12.     $insertId = Dao('Order_CreateSn')->insert($setArr);  
  13.   
  14.     return date('YmdHis') . mt_rand(1000, 9999) . str_pad(substr($insertId, -5), 5, 0, STR_PAD_LEFT);  
  15. }  
在我们游戏中,通过玩家的联盟号(user_code)来下单,订单还需要保存的数据如下:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值