YuanBaoPayProc.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <?php
  2. //
  3. //namespace loyalsoft;
  4. //
  5. ///*
  6. // * 支付日志模块
  7. // * 2016.10.13 gwang 提取
  8. // */
  9. //
  10. ///**
  11. // * 支付日志类
  12. // */
  13. //class YuanBaoPayProc {
  14. //
  15. // /**
  16. // * 【多平台】扣除玩家游戏币(Ps.发货逻辑最后执行此步骤)
  17. // * @param int $amt 扣除数量
  18. // * @param string $source (string)备注,扣除来源(模块)
  19. // * @return int ErrCode
  20. // */
  21. // public static function mn_SaveUserYuanbao($amt, $source = "") {
  22. // $err = ErrCode::ok;
  23. // if ($amt > 0) { // 防御,数量不可能小于0
  24. // $user = ctx()->base();
  25. // $zoneid = req()->zoneid; // 分区Id
  26. // if ($user->yuanbao < $amt) { // 余额不足
  27. // CLog::err("[Cheating] mn_SaveUserYuanbao:" . req()->uid, __CLASS__);
  28. // $err = ErrCode::notenought_yuanbao;
  29. // } else {// 更新玩家游戏币余额
  30. // $user->yuanbao -= $amt;
  31. // self::$m_billno = date("Y-m-d H:i:is");
  32. // }
  33. // self::_mPayLog($zoneid, req()->uid, MLogType::Save, $err, #
  34. // $amt, $user->yuanbao, $user->cash, $user->gift_cash, $user->charge_amt, $source);
  35. // }
  36. // return $err;
  37. // }
  38. //
  39. // /**
  40. // * 新版支付(引入元宝这种货币)
  41. // * @param Req $req
  42. // * @return type
  43. // */
  44. // public static function m_payByYuanbao($req) {
  45. // $resp = Resp::err(ErrCode::err_method_notimplement);
  46. //// $user = ctx()->base(); # user引用
  47. //// $privateState = $req->userInfo->game->privateState;
  48. ////// 客户端参数解析
  49. //// $paytype = req()->paras[0]; // 付费类型 3.元宝, 2. 钻石, 1. 金币,
  50. //// $itemId = req()->paras[1]; // 道具ID
  51. ////
  52. //// $itemModel = CGameConfig::item_getItem($itemId); # 取道具的常量数据
  53. //// if ($itemModel == null) { //1.检测是否存在道具的常量数据
  54. //// $resp = Resp::err(ErrCode::err_const_no);
  55. //// } else {
  56. //// $properties = JsonUtil::decode($itemModel->properties);
  57. //// if (CommUtil::isPropertyExists($properties, "isActive") # 活动物品
  58. //// && StlUtil::arrayIn($privateState->activeList, $properties->isActive)) {
  59. //// $resp = Resp::err(Errcode::active_hasgetted); # 已领过
  60. //// } else {
  61. //// if ($paytype == 3) {# 元宝
  62. //// if ($user->yuanbao < $itemModel->cost) { # 元宝不足
  63. //// CLog::err("[Cheating] m_payByYuanbao:" . req()->uid, __CLASS__);
  64. //// $resp = Resp::err(ErrCode::notenought_yuanbao);
  65. //// } else { # 发货
  66. //// StoreProc::addSeprateItem($itemModel);
  67. //// $amt = $itemModel->cost;
  68. //// $source = "商城购买-" . $itemModel->name;
  69. //// self::mn_SaveUserYuanbao($amt, $source); // 更新玩家游戏币余额
  70. //// UserProc::updateUserInfo(); // 直接将$user的最新值返回给客户端
  71. //// $resp = Resp::ok("success");
  72. //// }
  73. //// } else { # 钻石、金币
  74. //// $prize = JsonUtil::decode($itemModel->prize); # 价格
  75. //// if (property_exists($prize, "c") && $prize->c > 0) { // 钻石购买
  76. //// $amt = self::_getItemCashPrize($itemModel); // 道具价格(钻石)
  77. //// if ($amt <= 0) {
  78. //// $resp = Resp::err(ErrCode::pay_price_err);
  79. //// } else {
  80. //// if ($user->cash < $amt) { // 余额不足
  81. //// $resp = Resp::err(ErrCode::notenough_cash_msg);
  82. //// } else { // 发货
  83. //// StoreProc::addSeprateItem($itemModel); // 更新玩家游戏币余额
  84. ////// $user->cash -= $amt;
  85. //// self::mn_SaveUserCash($req, $amt, "商城购买-花钻", $itemId);
  86. //// UserProc::updateUserInfo(); // 直接将$user的最新值返回给客户端
  87. //// $resp = Resp::ok($user);
  88. //// }
  89. //// }
  90. //// }// 金币购买
  91. //// else if (CommUtil::isPropertyExists($prize, "g") && $prize->g > 0) {
  92. //// if ($req->userInfo->game->baseInfo->gold < $prize->g) {
  93. //// $resp = Resp::err(ErrCode::notenough_gold_msg);
  94. //// } else {// 发货
  95. //// StoreProc::addSeprateItem($itemModel); // 更新玩家金币余额
  96. //// UserModel::Comsume_Gold($user, $prize->g); // 更新玩家数据信息
  97. //// UserProc::updateUserInfo(); // 直接将$user的最新值返回给客户端
  98. //// $resp = Resp::ok($user);
  99. //// }
  100. //// } else { # 未知的支付类型
  101. //// $resp = Resp::err(ErrCode::pay_m_type_err);
  102. //// }
  103. //// }
  104. //// }
  105. //// }
  106. //// return $resp;
  107. // }
  108. //
  109. // /**
  110. // * 缓存一个账单号,如果代码执行过程中出现错误,直接取消扣除游戏币
  111. // * 注意,若是逻辑不是在一次Request内完成的,那么次订单号需要进行存储
  112. // * @var string
  113. // */
  114. // static $m_billno;
  115. //
  116. // /**
  117. // * 【多平台版】刷新充值订单(领取充值结果)
  118. // * @param Req $req
  119. // */
  120. // public static function m_refreshChargeOrders($req) {
  121. // my_Assert($req, ErrCode::err_method_notimplement);
  122. //// $userinfo = $req->userInfo;
  123. //// my_Assert($userinfo, ErrCode::user_no_err);
  124. //// $user = $userinfo->game->baseInfo;
  125. //// my_Assert($user, ErrCode::user_no_err);
  126. ////// 客户端参数解析
  127. //// $uid = $req->uid; // userID
  128. //// $zoneid = $req->zoneid; // 分区Id
  129. //// my_Assert(!empty($uid) && ($zoneid > 0), ErrCode::paras_err);
  130. //// $mem = gMem();
  131. //// my_Assert($mem, ErrCode::err_mem);
  132. //// $orders = $mem->get(MemKey_User::PayOrders($zoneid, $uid)); # 取挂起的订单数据
  133. //// $amt = 0;
  134. //// $num = 0;
  135. //// if ($orders == null) { # 订单为空
  136. //// $orders = ArrayInit();
  137. //// }
  138. //// foreach ($orders as $order) { # 多张订单合并
  139. //// $amt += $order->price;
  140. //// $num += $order->amt;
  141. //// }
  142. ////
  143. //// $user->yuanbao += $num; #
  144. //// $user->charge_amt += $amt; # 历史充值记录(单位分)
  145. ////
  146. //// if ($amt > 0 # 充值金额大于0,且首付标志为false才可以
  147. //// && isset($req->userInfo->game->privateState->firstPayGift) # 无此字段代表已经领取礼包
  148. //// && !$req->userInfo->game->privateState->firstPayGift) {
  149. //// $req->userInfo->game->privateState->firstPayGift = true;
  150. //// }
  151. //// $orders = ArrayInit(); # 清空
  152. //// $mem->set(MemKey_User::PayOrders($zoneid, $uid), $orders); # 清理已经处理过的订单
  153. //// UserProc::updateUserInfo(); # 更新玩家数据信息
  154. //// $resp = Resp::ok($user->yuanbao); // 直接将$user的最新值返回给客户端
  155. ////# todo: 这里可以再加一条订单记录
  156. //// self::_mPayLog($zoneid, $uid, MLogType::Inquire, 0, #
  157. //// $num, $user->yuanbao, $user->cash, $user->gift_cash, $user->charge_amt, "刷新订单");
  158. //// return $resp;
  159. // }
  160. //
  161. // /**
  162. // * 取物品的价格(钻石)
  163. // * @param GoodsItemModel $itemModel
  164. // */
  165. // private static function _getItemCashPrize($itemModel) {
  166. // $c = 0;
  167. // $prize = JsonUtil::decode($itemModel->prize);
  168. // if (CommUtil::isPropertyExists($prize, "c")) {
  169. // $c = $prize->c;
  170. // }
  171. // return $c;
  172. // }
  173. //
  174. // /**
  175. // * 【移动端】增加玩家游戏币
  176. // * @param int $amt 增加数量
  177. // * @param string $source (string)备注,增加来源(模块)
  178. // * @return int ErrCode
  179. // */
  180. // public static function m_AddUserYuanbao($amt, $source = "") {
  181. // $err = ErrCode::ok;
  182. // if ($amt > 0) { // 防御,数量不可能小于0
  183. // $user = ctx()->base();
  184. // $zoneid = req()->zoneid; // 分区Id
  185. // // 更新玩家游戏币余额
  186. // $user->yuanbao += $amt;
  187. // self::$m_billno = date("Y-m-d H:i:is");
  188. //
  189. // self::_mPayLog($zoneid, req()->uid, MLogType::Present, $err, #
  190. // $amt, $user->yuanbao, $user->cash, $user->gift_cash, $user->charge_amt, $source);
  191. // }
  192. // return $err;
  193. // }
  194. //
  195. //// <editor-fold defaultstate="collapsed" desc="==== 移动支付 插入日志 ====">
  196. //
  197. // /**
  198. // * Sql语句移动支付插入一条log日志。
  199. // * @var string
  200. // */
  201. // const SQL_M_LOG = "INSERT INTO `tab_mpaylog_%s` (zoneid,type,result,amt,balance,cash,giftedcash,chargedcash,source,oid,itemid) VALUES (%d,%d,%d,%d,%d,%d,%d,%d,'%s','%s','%s')";
  202. //
  203. // /**
  204. // * 移动支付插入一条记录
  205. // * @param int $zoneid
  206. // * @param string $oid
  207. // * @param int $type
  208. // * @param int $amt
  209. // * @param int $balance
  210. // * @param int $cash 钻石
  211. // * @param int $giftedcash
  212. // * @param int $chargedcash
  213. // * @param int $source
  214. // */
  215. // public static function _mPayLog($zoneid, $oid, $type, $result, $amt, $balance, $cash, $giftedcash, $chargedcash, $source = "srcUnKnown", $itemid = "") {
  216. //// $month = date("Ym");
  217. //// $sql = sprintf(self::SQL_M_LOG, $month, $zoneid, $type, $result, $amt, $balance, $cash, $giftedcash, $chargedcash, $source, $oid, $itemid);
  218. //// $paydb = CPayInit();
  219. //// $paydb->query($sql);
  220. //// $paydb->close();
  221. // }
  222. //
  223. // // </editor-fold>
  224. // // <editor-fold defaultstate="collapsed" desc="WEB支付日志">
  225. // // 在自己的模块里面呆着吧
  226. // // </editor-fold>
  227. // // <editor-fold defaultstate="collapsed" desc="yyb支付日志">
  228. //// </editor-fold>
  229. //}