Pay.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. # 支付类
  3. namespace Res\Lib;
  4. use Dever;
  5. class Pay extends Data
  6. {
  7. # 发需求需要支付
  8. public function post_info()
  9. {
  10. $this->action(1);
  11. }
  12. # 查看需求也需要支付
  13. public function view_info()
  14. {
  15. $this->action(2);
  16. }
  17. private function action($type = 1)
  18. {
  19. $this->checkDemand();
  20. if (!$this->data['uid']) {
  21. Dever::alert('错误的用户信息');
  22. }
  23. $product = $this->demand->getInfo($id, false);
  24. $user = Dever::db('passport/user')->one($this->data['uid']);
  25. $wechat = Dever::db('passport/wechat')->one(array('uid' => $this->data['uid'], 'type' => 1, 'system_id' => 1));
  26. if ($this->source_type == 'ios') {
  27. $method = 'apple';
  28. $account_id = 3;
  29. # 使用苹果内购支付
  30. $receipt = Dever::input('receipt');
  31. if (!$receipt) {
  32. Dever::alert('苹果内购支付失败,没有receipt参数');
  33. }
  34. } elseif ($this->source_type == 'android') {
  35. $method = 'app';
  36. $account_id = 3;
  37. } elseif ($this->source_type == 'applet') {
  38. $method = 'applet';
  39. $account_id = 1;
  40. } else {
  41. # 默认是网页支付
  42. $method = 'page';
  43. $account_id = 2;
  44. }
  45. //$order_id = $this->createOrder('JP');
  46. $order_data['category'] = $product['category'];
  47. //$order_data['order_id'] = $order_id;
  48. $order_data['product_id'] = $product['id'];
  49. $order_data['uid'] = $this->data['uid'];
  50. $order_data['type'] = $type;
  51. # 验证是否已经支付过
  52. $one = Dever::db('demand/order')->one($order_data);
  53. if (!$one) {
  54. Dever::alert('您已经支付过了');
  55. }
  56. $order_data['status'] = 1;
  57. $order_data['name'] = $product['name'];
  58. if ($type == 1) {
  59. $cash = $this->demand->getPayState($this->data['uid'], $product['id'], $product['category']);
  60. $order_data['cash'] = $cash;
  61. } else {
  62. $cash = $product['view_price'];
  63. }
  64. $id = Dever::db('demand/order')->insert($order_data);
  65. if (!$id) {
  66. Dever::alert('支付失败');
  67. }
  68. $order_id = $this->createOrderId($order_data, $id);
  69. //$param参数
  70. $param = array
  71. (
  72. 'account_id' => $account_id,
  73. 'project_id' => 1,
  74. 'uid' => $this->data['uid'],
  75. 'username' => $user['username'],
  76. 'name' => $order_data['name'],
  77. 'cash' => $order_data['cash'],
  78. 'cash' => '0.01',
  79. 'openid' => $wechat['openid'],
  80. 'product_id' => $product['id'],
  81. 'order_id' => $order_id,
  82. );
  83. if ($method == 'apple') {
  84. $param['other'] = $receipt;
  85. }
  86. $this->data['pay'] = Dever::load('pay/api.' . $method, $param);
  87. $this->data['order_id'] = $order_id;
  88. return $this->data;
  89. }
  90. private function createOrderId($data, $id)
  91. {
  92. }
  93. }