Cash.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. $per = $merchant['per'];
  12. if (!$per) {
  13. $yspay = Dever::db('pay/yspay')->one(array('account_id' => $merchant['account_id']));
  14. if ($yspay && $yspay['per']) {
  15. $per = $yspay['per'];
  16. }
  17. }
  18. if (!$per || $per <= 0) {
  19. $per = 0;
  20. } else {
  21. $per = $per/100;
  22. }
  23. $data['merchant_id'] = $merchant['id'];
  24. $data['order_num'] = $info['merOrderId'];
  25. $data['source_order_num'] = $order_id;
  26. $data['cash'] = $info['amount'];
  27. $data['fz_cash'] = round($data['cash']*$per, 2);
  28. $data['hf_cash'] = round($data['cash'] - $data['fz_cash'], 2);
  29. $data['status'] = 1;
  30. $id = Dever::db('pay/yspay_cash')->insert($data);
  31. return $id;
  32. }
  33. return false;
  34. }
  35. # 修改状态
  36. public function up($order_id, $status = 2)
  37. {
  38. $where['source_order_num'] = $order_id;
  39. $info = Dever::db('pay/yspay_cash')->find($where);
  40. if ($info) {
  41. $update = array('status' => $status, 'where_id' => $info['id']);
  42. if ($status == 3) {
  43. # 开始分账和划付
  44. $state = $this->tixian($info);
  45. if ($state != 'ok') {
  46. return false;
  47. }
  48. $update['rdate'] = time();
  49. }
  50. $state = Dever::db('pay/yspay_cash')->update($update);
  51. if ($state) {
  52. if ($status == 3) {
  53. $total = Dever::db('pay/yspay_cash')->getTotal(array('status' => 3, 'merchant_id' => $info['merchant_id']));
  54. if ($total) {
  55. 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']));
  56. }
  57. }
  58. return $state;
  59. }
  60. }
  61. return false;
  62. }
  63. private function tixian($info)
  64. {
  65. $merchant = Dever::db('pay/yspay_merchant')->one($info['merchant_id']);
  66. if ($merchant) {
  67. $config = Dever::db('pay/yspay')->one(array('account_id' => $merchant['account_id']));
  68. if ($config) {
  69. return Dever::load('pay/yspay/multi')->huafu($config, $merchant, $info);
  70. }
  71. }
  72. return false;
  73. }
  74. # 定时获取总额
  75. }