GamePay.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. /**
  3. * GamePay.php UTF-8
  4. * 游戏币支付
  5. *
  6. * @date : 2018/6/5 11:02
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\pay;
  13. use huo\controller\common\Base;
  14. use huolib\constant\OrderConst;
  15. use huolib\constant\PaywayConst;
  16. use huolib\status\OrderStatus;
  17. use huolib\status\SettleStatus;
  18. class GamePay extends Base {
  19. /**
  20. * 平台币SDK支付
  21. *
  22. * @param string $order_id 订单ID
  23. *
  24. * @return array
  25. */
  26. public function GameSdkPay($order_id) {
  27. $_soc_class = SdkOrderCache::ins();
  28. $_order_data = $_soc_class->getInfoByOrderId($order_id);
  29. if (empty($_order_data)) {
  30. $_code = OrderStatus::ORDER_NOT_EXISTS;
  31. return $this->huoError($_code, OrderStatus::getMsg($_code));
  32. }
  33. $_order_data['payway'] = PaywayConst::PAYWAY_GAMEPAY;
  34. /* 游戏币支付剩余金额 */
  35. $_order_data['gm_amount'] = $_order_data['real_amount'];
  36. $_order_data['real_amount'] = 0;
  37. $_soc_class->updateOrder($order_id, $_order_data);
  38. /* Modified by wuyonghong BEGIN 2018/3/26 ISSUES:5314 LTV */
  39. /* 充值时计算LTV */
  40. $_ltv_class = new \ltv\Ltv();
  41. $_mem_data = (new \huo\model\member\MemberModel())->getInfoById(
  42. $_order_data['mem_id']
  43. );
  44. $_ltv_class->charge(
  45. $_mem_data['app_id'],
  46. $_mem_data['agent_id'],
  47. $_order_data['app_id'],
  48. $_order_data['amount'],
  49. $_order_data['update_time'],
  50. $_mem_data['create_time']
  51. );
  52. /* END 2018/3/26 ISSUES:5314 */
  53. $_rs = (new Notify())->doAfterPayNotify($order_id);
  54. $_cp_status = OrderConst::CP_STATUS_SUC;
  55. if (OrderStatus::NOTIFY_FAIL == $_rs['code']) {
  56. $_cp_status = OrderConst::CP_STATUS_NOT;
  57. } else {
  58. if (SettleStatus::NO_ERROR != $_rs['code']) {
  59. return $this->huoReturn($_rs);
  60. }
  61. }
  62. $_rdata = $this->clientAjax($_order_data['payway'], $order_id, 2, 2, $_cp_status);
  63. $_code = OrderStatus::NO_ERROR;
  64. return $this->huoSuccess($_code, OrderStatus::getMsg($_code), $_rdata);
  65. }
  66. /**
  67. * 游戏客户端的标准返回
  68. *
  69. * @param $payway
  70. * @param $order_id
  71. * @param int $status
  72. * @param int $is_native
  73. * @param int $cp_status
  74. *
  75. * @return mixed
  76. */
  77. public function clientAjax($payway, $order_id, $status = 1, $is_native = 2, $cp_status = 2) {
  78. $_rdata['pay_type'] = $payway;
  79. $_rdata['order_id'] = $order_id;
  80. $_rdata['real_amount'] = 0;
  81. $_rdata['token'] = $order_id;
  82. $_rdata['is_native'] = $is_native;
  83. $_rdata['status'] = $status;
  84. $_rdata['cp_status'] = $cp_status;
  85. return $_rdata;
  86. }
  87. }