Buy.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <?php namespace Service\Src;
  2. use Dever;
  3. # 必须登录才能购买小刊
  4. class Buy extends Base
  5. {
  6. public function __construct()
  7. {
  8. parent::__construct();
  9. if (!$this->user) {
  10. return $this->location('home');
  11. }
  12. }
  13. # 列表页
  14. public function lists()
  15. {
  16. # 记录列表页渠道pv、uv数
  17. if (Dever::project('source')) {
  18. Dever::load('source/lib/core')->save($this->user['id'], 'list', $this->source);
  19. }
  20. $where['cate_id'] = $this->cate;
  21. $where['buy'] = 1;
  22. $data = Dever::db('journal/info')->getAll($where);
  23. if ($data) {
  24. foreach ($data as $k => $v) {
  25. if ($v['cash'] > 0) {
  26. $data[$k]['price'] = '¥' . number_format($v['cash'], 2);
  27. } else {
  28. $data[$k]['price'] = '免费';
  29. }
  30. $data[$k]['ding'] = '销量:' . $v['num_ding'];
  31. $data[$k]['pay_url'] = $this->url('pay', array('id' => $v['id']));
  32. }
  33. }
  34. return $data;
  35. }
  36. # 列表页 我已购买的兑换码
  37. public function lists_code()
  38. {
  39. $where['create_uid'] = $this->user['id'];
  40. $where['type'] = 3;
  41. $data = Dever::db('journal/order')->getAll($where);
  42. if ($data) {
  43. foreach ($data as $k => $v) {
  44. $info = Dever::db('journal/info')->one($v['product_id']);
  45. $data[$k]['code_string'] = '阅读码:' . $v['code'];
  46. $data[$k]['name'] = $info['name'];
  47. }
  48. }
  49. return $data;
  50. }
  51. # 详细信息
  52. public function info()
  53. {
  54. $id = Dever::input('id');
  55. # 记录购买页渠道pv、uv数
  56. if (Dever::project('source')) {
  57. Dever::load('source/lib/core')->save($this->user['id'], 'buy', $this->source, array('journal_id' => $id));
  58. }
  59. $info = Dever::db('journal/info')->one($id);
  60. $info['buy'] = '正在购买《' . $info['name'] . '》';
  61. $buy = Dever::db('journal/buy')->one(array('id' => $id));
  62. if ($buy) {
  63. $info['buy_desc'] = $buy['buy_content'];
  64. } else {
  65. $info['buy_desc'] = '';
  66. }
  67. return $info;
  68. }
  69. # 生成二维码
  70. public function code()
  71. {
  72. $id = Dever::input('id');
  73. $type = 4;
  74. $uid = $this->user['id'];
  75. $scene = $uid . ',' . $type . ',' . $id;
  76. $path = Dever::config('base')->applet_index;
  77. $send['project'] = Dever::input('project', 1);
  78. $send['send'] = $scene;
  79. $send['width'] = 152;
  80. $send['path'] = $path;
  81. $code = Dever::load('wechat_applet/code.get', $send);
  82. return $code;
  83. }
  84. # 小刊购买成功
  85. public function success()
  86. {
  87. $config = Dever::db('main/config')->one(1);
  88. $id = Dever::input('id');
  89. $config['list'] = $this->url('list');
  90. $config['buy'] = $this->url('pay', array('id' => $id));
  91. return $config;
  92. }
  93. # 小刊购买
  94. public function buy()
  95. {
  96. $id = Dever::input('id');
  97. $data = Dever::db('journal/buy_num')->getAll(array('info_id' => $id));
  98. $info = Dever::db('journal/info')->one($id);
  99. if ($data) {
  100. foreach ($data as $k => $v) {
  101. if ($v['price'] > 0) {
  102. $data[$k]['price'] = '¥' . number_format($v['price'], 2);
  103. } elseif ($info['cash'] > 0) {
  104. $data[$k]['price'] = '¥' . number_format($info['cash'] * $v['num'], 2);
  105. } else {
  106. $data[$k]['price'] = '免费';
  107. }
  108. if (!$v['name']) {
  109. $data[$k]['name'] = '购买' . $v['num'] . '本';
  110. }
  111. $data[$k]['cate'] = $info['cate_id'];
  112. $data[$k]['pay_url'] = $this->url('buy.pay', array('buy_id' => $v['id'], 'journal_id' => $v['info_id']));
  113. }
  114. }
  115. return $data;
  116. }
  117. # 小刊购买
  118. public function pay()
  119. {
  120. $uid = $this->user['id'];
  121. $buy_id = Dever::input('buy_id');
  122. $journal_id = Dever::input('journal_id');
  123. if (!$buy_id) {
  124. Dever::alert('请传入正确的支付ID');
  125. }
  126. if (!$journal_id) {
  127. Dever::alert('请传入正确的小刊ID');
  128. }
  129. $info = Dever::db('journal/info')->one($journal_id);
  130. $buy = Dever::db('journal/buy_num')->one($buy_id);
  131. if (!$buy || !$info) {
  132. Dever::alert('请传入正确的小刊ID');
  133. }
  134. if (!$buy['name']) {
  135. $buy['name'] = '购买' . $buy['num'] . '本';
  136. }
  137. $user = Dever::db('passport/user')->one($uid);
  138. $wechat = Dever::db('passport/wechat')->one(array('uid' => $uid, 'type' => 2));
  139. $order_id = $this->createOrder('JP');
  140. $order_data['order_id'] = $order_id;
  141. $order_data['product_id'] = $journal_id;
  142. $order_data['buy_id'] = $buy_id;
  143. $order_data['uid'] = $uid;
  144. $order_data['type'] = 1;
  145. $order_data['status'] = 1;
  146. $order_data['name'] = $info['name'] . '-' . $buy['name'];
  147. //$order_data['num'] = Dever::input('num', 1);
  148. $order_data['num'] = $buy['num'];
  149. if (isset($buy['price']) && $buy['price'] && $buy['price'] > 0) {
  150. $order_data['cash'] = $buy['price'];
  151. } else {
  152. $order_data['cash'] = $info['cash'] * $order_data['num'];
  153. }
  154. $order_data['system'] = 2;
  155. if ($this->source) {
  156. $order_data['source'] = $this->source;
  157. }
  158. if ($this->seller) {
  159. $order_data['seller_id'] = $this->seller;
  160. }
  161. if ($this->type == 2) {
  162. # 购买兑换码
  163. $order_data['type'] = 3;
  164. }
  165. $id = Dever::db('journal/order')->insert($order_data);
  166. if (!$id) {
  167. Dever::alert('支付失败');
  168. }
  169. //$param参数
  170. $refer = $this->url('success', array('id' => $journal_id, 'buy' => $buy_id));
  171. $param = array
  172. (
  173. 'account_id' => 2,
  174. 'project_id' => 1,
  175. 'uid' => $uid,
  176. 'username' => $user['username'],
  177. 'name' => $order_data['name'],
  178. 'cash' => $order_data['cash'],
  179. //'cash' => '0.01',
  180. 'openid' => $wechat['openid'],
  181. 'product_id' => $journal_id . '-' . $buy_id,
  182. 'order_id' => $order_id,
  183. 'refer' => $refer
  184. );
  185. return Dever::load('pay/api.page', $param);
  186. }
  187. }