OrderController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. /**
  3. * OrderController.php UTF-8
  4. * 订单处理
  5. *
  6. * @date : 2018/1/16 16:52
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace api\apple\controller\v8;
  13. use api\common\controller\AppleApiBaseController;
  14. use huo\controller\pay\Notify;
  15. use huo\controller\pay\PaySwitch;
  16. use huo\controller\pay\Sdk;
  17. use huo\model\order\PayAppleModel;
  18. use huolib\constant\GameConst;
  19. use huolib\constant\OrderConst;
  20. use huolib\status\OrderStatus;
  21. use think\Exception;
  22. class OrderController extends AppleApiBaseController {
  23. public function _initialize() {
  24. parent::_initialize();
  25. }
  26. /**
  27. * 游戏预下单
  28. * http://doc.1tsdk.com/138?page_id=2908
  29. * 【域名】/v8/sdk/preorder
  30. * 【域名】/v8/pay/preorder
  31. */
  32. public function preorder() {
  33. $this->checkLogin();
  34. $_game_rq = $this->setGameData();
  35. $_channel_rq = $this->setChannelData();
  36. $_device_rq = $this->setDeviceData();
  37. $_mem_rq = $this->setMemData();
  38. $_role_rq = $this->setRoleData();
  39. $_order_rq = $this->setOrderData();
  40. $_order = new Sdk();
  41. $_pay_check = OrderConst::PAY_SWITCH_NO;
  42. /* 判断支付切换 */
  43. $_from = $_device_rq->getFrom();
  44. if (GameConst::GAME_IOS_SWITCH == $_from) {
  45. $_pay_check = (new PaySwitch())->getPaySwitch(
  46. $_order_rq, $_role_rq, $_mem_rq, $_game_rq, $_channel_rq, $_device_rq
  47. );
  48. }
  49. $_preorder_rs = $_order->preorder($_order_rq, $_role_rq, $_mem_rq, $_game_rq, $_channel_rq, $_device_rq);
  50. if (OrderStatus::NO_ERROR != $_preorder_rs['code']) {
  51. $this->returnData($_preorder_rs);
  52. }
  53. $_order_id = $_preorder_rs['data']['order_id'];
  54. $_pay_token = $_order_rq->genPayToken($_order_id);
  55. $_rdata['order_id'] = $_order_id;
  56. $_rdata['pay_token'] = $_pay_token;
  57. $_rdata['check'] = $_pay_check;
  58. $_rdata['pay_url'] = ''; //TODO: chengbingling 2018/6/5 切换支付url
  59. /* 苹果下单 直接插入苹果订单表 */
  60. $_from = $_device_rq->getFrom();
  61. if (GameConst::GAME_IOS_SWITCH == $_from && OrderConst::PAY_SWITCH_NO == $_pay_check) {
  62. $_data['order_id'] = $_order_id;
  63. $_data['mem_id'] = $_mem_rq->getMemId();
  64. $_data['mg_mem_id'] = $_mem_rq->getMgMemId();
  65. $_data['apple_id'] = $_game_rq->getAppleId();
  66. $_data['product_id'] = $_order_rq->getProductId();
  67. $_data['idfv'] = $_device_rq->getMac();
  68. $_data['idfa'] = $_device_rq->getDeviceId();
  69. (new PayAppleModel())->addData($_data);
  70. }
  71. $this->success(lang('SUCCESS'), $_rdata);
  72. }
  73. /**
  74. * 支付页面数据
  75. * http://doc.1tsdk.com/138?page_id=2954
  76. * 【域名】/pay/info
  77. * 【域名】/v8/pay/info
  78. */
  79. public function getInfo() {
  80. $this->checkLogin();
  81. $_order_rq = $this->setOrderData();
  82. $_pay_token = get_val($this->rq_data, 'pay_token', '');
  83. $_rs = $_order_rq->checkPayToken($_pay_token);
  84. if (false == $_rs) {
  85. $_code = OrderStatus::TOKEN_ARGS_ERROR;
  86. $this->error(OrderStatus::getMsg($_code), [], $_code);
  87. }
  88. $_order_id = $_order_rq->getOrderId();
  89. $_rdata = (new Sdk())->getPayInfo($_order_id);
  90. $this->returnData($_rdata);
  91. }
  92. /**
  93. * 查询支付结果
  94. * http://doc.1tsdk.com/138?page_id=2909
  95. * 【域名】/v8/product/query
  96. */
  97. public function read() {
  98. try {
  99. $_order_rq = $this->setOrderData();
  100. $_order = new Sdk();
  101. $_rdata = $_order->getStatus($_order_rq->getOrderId());
  102. if (false == $_rdata) {
  103. $this->error('ERROR');
  104. }
  105. if (OrderConst::CP_STATUS_SUC != $_rdata['cp_status'] && OrderConst::PAY_STATUS_SUC == $_rdata['status']) {
  106. $_rs = (new Notify())->notify($_order_rq->getOrderId());
  107. if (OrderStatus::NO_ERROR == $_rs['code']) {
  108. $_rdata['status'] = OrderConst::PAY_STATUS_SUC;
  109. $_rdata['cp_status'] = OrderConst::CP_STATUS_SUC;
  110. }
  111. }
  112. $_rdata['order_id'] = $_order_rq->getOrderId();
  113. $this->success(lang('SUCCESS'), $_rdata);
  114. } catch (Exception $_e) {
  115. $this->error($_e->getMessage());
  116. }
  117. }
  118. }