Cash.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php namespace Pay\Yspay;
  2. use Dever;
  3. class Cash
  4. {
  5. # 入账:待确认
  6. public function add($order_id, $order, $info)
  7. {
  8. $mid = $info['mid'];
  9. $merchant = Dever::db('pay/yspay_merchant')->one(array('mid' => $mid));
  10. if ($merchant) {
  11. $yspay = Dever::db('pay/yspay')->one(array('account_id' => $merchant['account_id']));
  12. if ($yspay) {
  13. $cash_per = 0;
  14. if ($yspay['type'] == 2) {
  15. $cash_per = $merchant['cash_per'];
  16. if (!$cash_per) {
  17. if ($yspay && $yspay['cash_per']) {
  18. $cash_per = $yspay['cash_per'];
  19. }
  20. }
  21. if (!$cash_per || $cash_per <= 0) {
  22. $cash_per = 0;
  23. } else {
  24. $cash_per = $cash_per/100;
  25. }
  26. }
  27. $per = $yspay['per']/100;
  28. $data['merchant_id'] = $merchant['id'];
  29. $data['order_num'] = $info['merOrderId'];
  30. $data['source_order_num'] = $order_id;
  31. $data['ycash'] = $info['amount'];
  32. $data['cash'] = round($info['amount'] - $info['amount'] * $per, 2);
  33. if ($yspay['cash_type'] == 1) {
  34. $fz_cash = $data['ycash'];
  35. } else {
  36. $fz_cash = $data['cash'];
  37. }
  38. $data['fz_cash'] = round($fz_cash*$cash_per, 2);
  39. $data['hf_cash'] = round($data['cash'] - $data['fz_cash'], 2);
  40. $data['status'] = 1;
  41. $id = Dever::db('pay/yspay_cash')->insert($data);
  42. return $id;
  43. }
  44. }
  45. return false;
  46. }
  47. # 修改状态
  48. public function up($id, $status = 2)
  49. {
  50. if (is_numeric($id)) {
  51. $where['id'] = $id;
  52. } else {
  53. $where['source_order_num'] = $id;
  54. }
  55. $info = Dever::db('pay/yspay_cash')->find($where);
  56. if ($info) {
  57. $update = array('status' => $status, 'where_id' => $info['id']);
  58. if ($status == 3) {
  59. # 开始划付
  60. $state = $this->huafu_act($info);
  61. if ($state != 'ok') {
  62. return false;
  63. }
  64. $update['rdate'] = time();
  65. }
  66. if ($status == 4) {
  67. # 开始提现
  68. $state = $this->tixian_act($info);
  69. if ($state != 'ok') {
  70. return false;
  71. }
  72. $update['tdate'] = time();
  73. }
  74. $state = Dever::db('pay/yspay_cash')->update($update);
  75. if ($state) {
  76. if ($status == 3) {
  77. $total = Dever::db('pay/yspay_cash')->getTotal(array('status' => 3, 'merchant_id' => $info['merchant_id']));
  78. if ($total) {
  79. Dever::db('pay/yspay_merchant')->update(array('where_id' => $info['merchant_id'], 'cash' => $total['cash'], 'hf_cash' => $total['hf_cash'], 'fz_cash' => $total['fz_cash']));
  80. }
  81. }
  82. return $state;
  83. }
  84. }
  85. return false;
  86. }
  87. private function huafu_act($info)
  88. {
  89. $merchant = Dever::db('pay/yspay_merchant')->one($info['merchant_id']);
  90. if ($merchant) {
  91. $config = Dever::db('pay/yspay')->one(array('account_id' => $merchant['account_id']));
  92. if ($config) {
  93. return Dever::load('pay/yspay/multi')->act($config, $merchant, $info);
  94. }
  95. }
  96. return false;
  97. }
  98. private function tixian_act($info)
  99. {
  100. $merchant = Dever::db('pay/yspay_merchant')->one($info['merchant_id']);
  101. if ($merchant) {
  102. $config = Dever::db('pay/yspay')->one(array('account_id' => $merchant['account_id']));
  103. if ($config) {
  104. return Dever::load('pay/yspay/account')->act($config, $merchant, $info);
  105. }
  106. }
  107. return false;
  108. }
  109. # 定时获取总额
  110. # 测试数据
  111. public function test_add_api()
  112. {
  113. $info['mid'] = 'test';
  114. $info['merOrderId'] = 'test123';
  115. $info['amount'] = 10000;
  116. $this->add('test123', array(), $info);
  117. return 'ok';
  118. }
  119. # 将测试数据改成待入账
  120. public function test_edit_api()
  121. {
  122. $data = Dever::db('pay/yspay_cash')->select(array('order_num' => 'test123', 'status' => 1));
  123. if ($data) {
  124. foreach ($data as $k => $v) {
  125. $this->up($v['id'], 2);
  126. }
  127. }
  128. return 'ok';
  129. }
  130. # 资金划付
  131. public function huafu_commit_api()
  132. {
  133. $data = Dever::db('pay/yspay_cash')->select(array('order_num' => 'test123', 'status' => 2));
  134. if ($data) {
  135. foreach ($data as $k => $v) {
  136. $this->up($v['id'], 3);
  137. }
  138. }
  139. return 'ok';
  140. }
  141. }