del_WebPayProc.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514
  1. <?php
  2. //
  3. //namespace loyalsoft;
  4. //
  5. ///**
  6. // * Qzone页游支付处理代码
  7. // */
  8. //class WebPayProc {
  9. //
  10. // const PAY_BILL_SELECT = "SELECT * FROM `tab_billrecord` where `openid`='%s' and `state`='0' order by id;"; // 筛选尚未确认支付的订单
  11. // const PAY_BILL_DELETE = "DELETE FROM `tab_billrecord` where id = '%d';"; // 删除未确认的支付订单
  12. // const PAY_BILL_CONFIRM = "INSERT INTO `tab_billconfirm` (`openid`,`billno`,`amt`,`payitem`,`token`,`state`,`msg`) VALUES ('%s','%s','%d','%s','%s','1','OK');"; // 变更订单确认支付状态字
  13. // const PAY_BILL_LOST = "INSERT INTO `tab_billconfirm` (`openid`,`billno`,`amt`,`payitem`,`token`,`state`,`msg`) VALUES ('%s','%s','%d','%s','%s','-1','%s');"; // 变更订单支付丢失状态字
  14. // const PAY_LOG_INSERT = "INSERT INTO `tab_paylog` (`msg`) VALUES ('%s');"; // 新增支付日志
  15. //
  16. // /**
  17. // * 【PC端】购买付费道具
  18. // * @param Req $req
  19. // * @return type
  20. // */
  21. //
  22. // public static function buyGoods($req) {
  23. // $resp = new Resp();
  24. // $mem = $req->mem;
  25. // $v3 = CV3Init();
  26. // $private = $req->userInfo->game->privateState;
  27. ////客户端参数解析
  28. // $openid = $req->uid;
  29. // $zoneid = $req->zoneid;
  30. // $openkey = $req->paras[0];
  31. // $pf = $req->paras[1];
  32. // $pfkey = $req->paras[2];
  33. // $itemPriceYuan = $req->paras[3];
  34. //
  35. // //ID=Q点价格=元宝价格
  36. // $itemPriceDot = $itemPriceYuan * 10;
  37. // $itemID = $itemPriceDot;
  38. // $itemPrice = $itemPriceDot;
  39. // $itemName = $itemPriceDot . '元宝';
  40. // $itemDes = $itemName;
  41. //
  42. // $ts = now();
  43. // $goodsurl = self::_getGoodsImgUrl($itemModel);
  44. // $v3PayRet = $v3->pay_buy_goods($openid, $openkey, $pf, $pfkey, #
  45. // $ts, $itemID, $itemPrice, $itemName, $itemDes, $goodsurl, $zoneid - 1);
  46. // if ($v3PayRet->ret == 1002) { //假如玩家未登录
  47. // $resp = Resp::err(ErrCode::user_login_err);
  48. // } elseif ($v3PayRet->ret != 0) { //
  49. // $resp = Resp::err($v3PayRet->ret);
  50. // $resp->result = $v3PayRet;
  51. // } else {
  52. // $tokenInfo = self::getTokenInfo($mem, $zoneid, $openid);
  53. // if ($tokenInfo == null) {
  54. // $resp = Resp::err(ErrCode::user_no_err);
  55. // } else {
  56. // self::insToken($tokenInfo, $v3PayRet->token);
  57. // self::updateTokenInfo($mem, $zoneid, $openid, $tokenInfo);
  58. // $resp = Resp::ok($v3PayRet);
  59. // }
  60. // }
  61. // $v3->close();
  62. // return $resp;
  63. // }
  64. //
  65. // /**
  66. // * 客户端确认支付
  67. // * @param type $req
  68. // * @return \ResponseVo
  69. // */
  70. // public static function confirmDelivery($req) {
  71. // $resp = new Resp();
  72. // $v3 = CV3Init();
  73. // self::confirmPay($req, $v3);
  74. // $resp = Resp::ok("succeed!");
  75. // $v3->close();
  76. // return $resp;
  77. // }
  78. //
  79. // /**
  80. // * 领取首付礼包
  81. // * @param Req $req
  82. // * @return Resp
  83. // */
  84. // public static function getFirstPayGift($req) {
  85. // $resp = new Resp();
  86. // $map = $req->userInfo->game->map;
  87. // $privateState = $req->userInfo->game->privateState;
  88. //
  89. //// 如果已经领取首付礼包
  90. // if (!CommUtil::isPropertyExists($privateState, "firstPayGift")) {
  91. // $resp = Resp::err(ErrCode::pay_firstpaygetted);
  92. // } elseif (!$privateState->firstPayGift) { // 如果尚未完成首付
  93. // $resp = Resp::err(ErrCode::pay_firstpayno_err);
  94. // } else {
  95. // $itemModel = ConstProc::getGoodsItemConst(ITEM_FIRSTPAY);
  96. //// 检测首付礼包是否存在
  97. // if ($itemModel == null) {
  98. // $resp = Resp::err(ErrCode::err_const_no);
  99. // } else {
  100. // unset($privateState->firstPayGift); # .剔除首付标志
  101. // StoreProc::addSeprateItem($itemModel, $req); # .发放首付礼包
  102. // $result = array(# 把玩家最新的仓库数据发给客户端
  103. // 'store' => $map->store,
  104. // );
  105. //// 7.回送成功信息
  106. // $resp = Resp::ok($result);
  107. //// 成就触发--获取金币
  108. // AchievementProc::dealAchievementState($req, $resp, AchievementProc::Gold);
  109. // UserProc::updateUserInfo($req); # 更新玩家数据
  110. // }
  111. // }
  112. //
  113. // return $resp;
  114. // }
  115. //
  116. // /**
  117. // * 获取黄钻新手礼包
  118. // * @param Req $req
  119. // * @return type
  120. // */
  121. // public static function getVipNewerGift($req) {
  122. // $user = $req->userInfo->game->user;
  123. // $map = $req->userInfo->game->map;
  124. // $privateState = $req->userInfo->game->privateState;
  125. ////客户端参数解析
  126. // $itemId = ITEM_VIPNEWER; # 新手礼包是个常量
  127. // $item = ConstProc::getGoodsItemConst($itemId);
  128. //
  129. // $isYellowYear = $user->is_yellow_year_vip;
  130. // $itemYear = null;
  131. // if ($isYellowYear) {
  132. // $itemIdYear = ITEM_YEARVIPNEWER;
  133. // $itemYear = ConstProc::getGoodsItemConst($itemIdYear);
  134. // if ($itemYear == null) {
  135. // $resp = Resp::err(ErrCode::err_const_no);
  136. // return;
  137. // }
  138. // }
  139. ////1.检测是否存在道具的常量数据
  140. // if ($item == null) {
  141. // $resp = Resp::err(ErrCode::err_const_no);
  142. // } else {//2.检测是否可以领取黄钻新手礼包
  143. // if (!WebPayProc::tryVipNewerGift($user, $privateState)) {
  144. // $resp = Resp::err(ErrCode::pay_vipnewerno);
  145. // } else {
  146. // StoreProc::addSeprateItem($item, $req);
  147. // if ($itemYear) {
  148. // StoreProc::addSeprateItem($itemYear, $req);
  149. // }
  150. // $result = array(
  151. // 'store' => $map->store,
  152. // );
  153. // $resp = Resp::ok($result); # 返回值
  154. ////成就触发--获取金币
  155. // AchievementProc::dealAchievementState($req, $resp, AchievementProc::Gold);
  156. // UserProc::updateUserInfo($req); # 回写数据
  157. // }
  158. // }
  159. // return $resp;
  160. // }
  161. //
  162. // /**
  163. // * 开通包月送礼包
  164. // * @param Req $req
  165. // */
  166. // public static function getVipOpenGift($req) {
  167. // $mem = $req->mem;
  168. // $v3 = CV3Init();
  169. ////客户端参数解析
  170. // $openid = $req->uid;
  171. // $openkey = $req->paras[0];
  172. // $pf = $req->paras[1];
  173. // $pfkey = $req->paras[2];
  174. //
  175. // $ts = now();
  176. // $v3Ret = $v3->pay_gift_get_token($openid, $openkey, $pf, $pfkey, "1", ACT_VIP_OPEN, $ts);
  177. // if ($v3Ret->ret == 1001) {
  178. // $resp = Resp::err($v3Ret->ret);
  179. // $resp->result = $v3Ret->msg;
  180. // } elseif ($v3Ret->ret == 1099) {
  181. // $resp = Resp::err(ErrCode::pay_systembusy_err);
  182. // $resp->result = $v3Ret->msg;
  183. // } elseif ($v3Ret->ret != 0) {
  184. // $resp = Resp::err(ErrCode::pay_systembusy_err);
  185. // $resp->result = $v3Ret;
  186. // } else { //v3成功返回
  187. // $tokenInfo = WebPayProc::getTokenInfo($mem, $req->zoneid, $openid);
  188. // if ($tokenInfo == null) {
  189. // $resp = Resp::err(ErrCode::user_no_err);
  190. // } else {
  191. // WebPayProc::insToken($tokenInfo, $v3Ret->token);
  192. // WebPayProc::updateTokenInfo($mem, $req->zoneid, $openid, $tokenInfo);
  193. //// 开通包月送礼包活动号,腾讯分配
  194. // $v3Ret->actid = ACT_VIP_OPEN; // 将actid插入返回值中一块儿发送给客户端
  195. // $v3Ret->zoneid = 0; // fusionAPI 需要
  196. // $resp = Resp::ok($v3Ret);
  197. // }
  198. // }
  199. // $v3->close();
  200. // return $resp;
  201. // }
  202. //
  203. // /**
  204. // * 领取黄钻每日礼包
  205. // * @param Req $req
  206. // */
  207. // public static function getVipDayGift($req) {
  208. // $mem = $req->mem;
  209. // $zoneid = $req->zoneid;
  210. // $v3 = CV3Init();
  211. // $user = $req->userInfo->game->user;
  212. ////客户端参数解析
  213. // $openid = $req->uid;
  214. // $openkey = $req->paras[0];
  215. // $pf = $req->paras[1];
  216. // $pfkey = $req->paras[2];
  217. //
  218. // $ts = now();
  219. // CLog::giftlog("getVipDayGift $zoneid|$openid|$openkey|$pf");
  220. // $v3Ret = $v3->pay_gift_get_token($openid, $openkey, $pf, $pfkey, "1", ACT_VIP_DAY, $ts, $zoneid - 1);
  221. // if ($v3Ret->ret == 1001) {
  222. // $resp = Resp::err($v3Ret->ret);
  223. // $resp->result = $v3Ret->msg;
  224. // } elseif ($v3Ret->ret == 1099) {
  225. // $resp = Resp::err(ErrCode::pay_systembusy_err);
  226. // $resp->result = $v3Ret->msg;
  227. // } elseif ($v3Ret->ret != 0) {
  228. // $resp = Resp::err(ErrCode::pay_systembusy_err);
  229. // $resp->result = $v3Ret;
  230. // } else { //v3成功返回
  231. // $tokenInfo = WebPayProc::getTokenInfo($mem, $zoneid, $openid);
  232. // if ($tokenInfo == null) {
  233. // $resp = Resp::err(ErrCode::user_no_err);
  234. // } else {
  235. // WebPayProc::insToken($tokenInfo, $v3Ret->token);
  236. // if ($user->is_yellow_vip) {
  237. // WebPayProc::insToken($tokenInfo, $v3Ret->token . "-year");
  238. // }
  239. // WebPayProc::updateTokenInfo($mem, $zoneid, $openid, $tokenInfo);
  240. // $v3Ret->actid = ACT_VIP_DAY; //将actid 插入返回值中一块儿发送给客户端
  241. // $resp = Resp::ok($v3Ret);
  242. // }
  243. // }
  244. // $v3->close();
  245. // return $resp;
  246. // }
  247. //
  248. //// ---------------- --------------------
  249. // /**
  250. // * 领取黄钻升级礼包
  251. // * @param type $user
  252. // */
  253. // public static function getVipLvGift($mem, & $user, &$map) {
  254. //
  255. // }
  256. //
  257. // /**
  258. // * 获取玩家token校验表
  259. // * @param type $mem
  260. // * @param int $zoneid
  261. // * @param type $uid
  262. // * @return type
  263. // */
  264. // public static function getTokenInfo($mem, $zoneid, $uid) {
  265. // return $mem->get(MemKey_User::TokenInfo($zoneid, $uid));
  266. // }
  267. //
  268. // /**
  269. // * 更新玩家token校验表
  270. // * @param type $mem
  271. // * @param int $zoneid
  272. // * @param type $uid
  273. // * @param type $tokenInfo
  274. // */
  275. // public static function updateTokenInfo($mem, $zoneid, $uid, $tokenInfo) {
  276. // $mem->set(MemKey_User::TokenInfo($zoneid, $uid), $tokenInfo);
  277. // }
  278. //
  279. // /**
  280. // * 新增token
  281. // * @param type $mem
  282. // * @param type $oid
  283. // * @param type $token
  284. // */
  285. // public static function insToken(& $tokenInfo, $token) {
  286. // $tokenInfo->$token = now();
  287. // }
  288. //
  289. // /**
  290. // * 读取token
  291. // * @param type $mem
  292. // * @param type $oid
  293. // * @param type $token
  294. // * @return null
  295. // */
  296. // public static function getToken($tokenInfo, $token) {
  297. // if (!CommUtil::isPropertyExists($tokenInfo, $token)) {
  298. // return null;
  299. // } else {
  300. // return $tokenInfo->$token;
  301. // }
  302. // }
  303. //
  304. // /**
  305. // * 删除token
  306. // * @param type $mem
  307. // * @param type $oid
  308. // * @param type $token
  309. // */
  310. // public static function delToken(& $tokenInfo, $token) {
  311. // if (CommUtil::isPropertyExists($tokenInfo, $token)) {
  312. // unset($tokenInfo->$token);
  313. // }
  314. // }
  315. //
  316. // /**
  317. // * 添加付费道具到挂起列表
  318. // * @param CMemBase $mem
  319. // * @param int $zoneid
  320. // * @param string $uid
  321. // * @param type $itemId
  322. // */
  323. // public static function addPayStoreItem($mem, $zoneid, $uid, $itemId) {
  324. // $payStore = $mem->get(MemKey_User::PayOrders($zoneid, $uid));
  325. // if ($payStore == null) {
  326. // $payStore = ArrayInit();
  327. // }
  328. // $payStore[] = $itemId;
  329. // $mem->set(MemKey_User::PayOrders($zoneid, $uid), $payStore);
  330. // }
  331. //
  332. // /**
  333. // * 添加营销礼包到挂起列表
  334. // * @param CMemBase $mem
  335. // * @param int $zoneid
  336. // * @param string $uid
  337. // * @param type $itemId
  338. // */
  339. // public static function addGiftStoreItem($mem, $zoneid, $uid, $itemId) {
  340. // $giftStore = $mem->get(MemKey_User::GiftStore($zoneid, $uid));
  341. // CLog::pay("WebGift addGiftStoreItem1 giftStore:$giftStore|itemId:$itemId|oid:$uid");
  342. // if ($giftStore == null) {
  343. // $giftStore = ArrayInit();
  344. // }
  345. // $giftStore[] = $itemId;
  346. // CLog::pay("WebGift addGiftStoreItem1 giftStore:$giftStore|itemId:$itemId|oid:$uid");
  347. // $mem->set(MemKey_User::GiftStore($zoneid, $uid), $giftStore);
  348. // }
  349. //
  350. // /**
  351. // * 刷新挂起列表中的付费道具到仓库
  352. // * @param Req $req
  353. // */
  354. // public static function refreshPayStoreItem($req) {
  355. // $mem = $req->mem;
  356. // $oid = $req->uid;
  357. // $privateState = $req->userInfo->game->privateState;
  358. //
  359. // $payGodpetItems = ArrayInit();
  360. // $payStore = $mem->get(MemKey_User::PayOrders($req->zoneid, $oid));
  361. // if ($payStore != null) {
  362. // foreach ($payStore as $payItemId) {
  363. // $itemModel = ConstProc::getGoodsItemConst($payItemId);
  364. // if ($itemModel != null) {
  365. // $payGodpetItems[] = $payItemId;
  366. // if (CommUtil::isPropertyExists($privateState, "firstPayGift") //
  367. // && !$privateState->firstPayGift) {
  368. // $privateState->firstPayGift = true;
  369. // }
  370. // $properties = JsonUtil::decode($itemModel->properties);
  371. // if (CommUtil::isPropertyExists($properties, "isActive")) {
  372. // $activeList = $privateState->activeList;
  373. // $activeId = $properties->isActive;
  374. // $activeList[] = $activeId;
  375. // $privateState->activeList = $activeList;
  376. // }
  377. // StoreProc::addSeprateItem($itemModel, $req);
  378. // }
  379. // }
  380. // $mem->delete(MemKey_User::PayOrders($req->zoneid, $oid));
  381. // }
  382. // return $payGodpetItems;
  383. // }
  384. //
  385. // /**
  386. // * 刷新挂起列表中的营销礼包到仓库
  387. // * @param Req $req
  388. // */
  389. // public static function refreshGiftStoreItem($req) {
  390. // $oid = $req->uid;
  391. // $mem = $req->mem;
  392. // $giftStore = $mem->get(MemKey_User::GiftStore($req->zoneid, $oid));
  393. // CLog::pay("WebGift refreshGiftStoreItem giftStore:$giftStore|oid:$oid");
  394. //
  395. // if ($giftStore != null) {
  396. // foreach ($giftStore as $giftItemId) {
  397. // $itemModel = ConstProc::getGoodsItemConst($giftItemId);
  398. // CLog::pay("WebGift refreshGiftStoreItem2 giftItemId:$giftItemId");
  399. //
  400. // if ($itemModel != null) {
  401. // StoreProc::addSeprateItem($itemModel, $req);
  402. // } else {
  403. // CLog::pay("WebGift refreshGiftStoreItem3 ERR giftItemId:$giftItemId");
  404. // }
  405. // }
  406. // $mem->delete(MemKey_User::GiftStore($req->zoneid, $oid));
  407. // }
  408. // }
  409. //
  410. // /**
  411. // * 尝试领取黄钻新手礼包
  412. // * @param type $user
  413. // * @param type $privateState
  414. // * @return boolean
  415. // */
  416. // public static function tryVipNewerGift($user, &$privateState) {
  417. ////1.检查是否为黄钻
  418. // if ($user->is_yellow_vip) {
  419. //# //2.检查是否含有新手礼包标志
  420. // if (CommUtil::isPropertyExists($privateState, "vipNewerGift")) {
  421. // if ($privateState->vipNewerGift) {# //3.检查是否能够领取
  422. // unset($privateState->vipNewerGift); # //4.剔除新手礼包标志
  423. // return true; //5.返回成功
  424. // }
  425. // }
  426. // }
  427. // return false;
  428. // }
  429. //
  430. // /**
  431. // * 尝试领取黄钻每日礼包
  432. // * @param type $user
  433. // * @param type $privateState
  434. // * @return boolean
  435. // */
  436. // public static function tryVipDayGift($user, &$privateState) {
  437. // if ($user->is_yellow_vip) {//1.检查是否为黄钻
  438. // if (CommUtil::isPropertyExists($privateState, "vipDayGift")) {//2.检查黄钻礼包标志是否为真
  439. // if ($privateState->vipDayGift) {//3.检查是否能够领取
  440. // $privateState->vipDayGift = false; //4.修改黄钻每日礼包标志
  441. // return true; //5.返回成功
  442. // }
  443. // }
  444. // }
  445. // return false;
  446. // }
  447. //
  448. // /**
  449. // * 客户端确认支付
  450. // * @param type $req
  451. // * @return \ResponseVo
  452. // */
  453. // public static function confirmPay($req, $v3) {
  454. // $paydb = CPayInit();
  455. // $openid = $req->uid; //客户端参数解析
  456. // $billArray = $paydb->fetch_array(sprintf(self::PAY_BILL_SELECT, $openid));
  457. // if (count($billArray) > 0) {
  458. // foreach ($billArray as $billRecord) {
  459. // $id = $billRecord['id'];
  460. // $ts = now();
  461. // $payitem = $billRecord['payitem'];
  462. // $token = $billRecord['token'];
  463. // $billno = $billRecord['billno'];
  464. // $amt = $billRecord['amt'];
  465. // if (GAME_ONLINE) {
  466. // $ret = $v3->pay_confirm_delivery($openid, $openkey, $pf, $ts, //
  467. // $payitem, $token, $billno, $amt);
  468. // if ($ret->ret == 0 || $ret->ret == 1069) {// 订单确认的情况
  469. // $dbRet = $paydb->query(sprintf(self::PAY_BILL_DELETE, $id));
  470. // $sqlConfirm = sprintf(self::PAY_BILL_CONFIRM, $openid, $billno, $amt, $payitem, $token);
  471. // $dbRet = $paydb->query($sqlConfirm); // 写订单支付日志
  472. // $log = $billno . "|" . $ret->msg . "[" . $openid . "]已确认支付!";
  473. // $dbRet = WebPayProc::_paylog($paydb, $log);
  474. // }// 订单丢失的情况
  475. // else if ($ret->ret == 1060 || $ret->ret == 1063 || $ret->ret == 1068) {
  476. // $dbRet = $paydb->query(sprintf(self::PAY_BILL_DELETE, $id));
  477. // $sqlLost = sprintf(self::PAY_BILL_LOST, $openid, $billno, $amt, $payitem, $token, $ret->msg);
  478. // $dbRet = $paydb->query($sqlLost); // 写订单支付日志
  479. // $log = $billno . "|" . $ret->msg . "[" . $openid . "]已确认丢失!";
  480. // $dbRet = WebPayProc::_paylog($paydb, $log);
  481. // }
  482. // } else {
  483. // $dbRet = $paydb->query(sprintf(self::PAY_BILL_DELETE, $id));
  484. // $sqlConfirm = sprintf(self::PAY_BILL_CONFIRM, $openid, $billno, $amt, $payitem, $token);
  485. // $dbRet = $paydb->query($sqlConfirm); // 写订单支付日志
  486. // $log = $billno . "|" . $ret->msg . "[" . $openid . "]已确认支付!";
  487. // $dbRet = WebPayProc::_paylog($paydb, $log);
  488. // }
  489. // }
  490. // }
  491. // $paydb->close();
  492. // }
  493. //
  494. // /**
  495. // * 插入日志
  496. // * @param CDBUtil $paydb
  497. // * @param string $log
  498. // * @return mixed
  499. // */
  500. // static function _paylog($paydb, $log) {
  501. // return $paydb->query(sprintf(self::PAY_LOG_INSERT, $log));
  502. // }
  503. //
  504. // /**
  505. // * 获取指定道具的图片Url
  506. // * @param GoodsItemModel $item
  507. // * @return String 返回字符串
  508. // */
  509. // private static function _getGoodsImgUrl($item) {
  510. // return CDN_HOST . "res/yuanbao3.png";
  511. // }
  512. //
  513. //}