MobileRecharge.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. /**
  3. * MobileRecharge.php UTF-8
  4. * 手机充值提现实现类
  5. *
  6. * @date : 2018/5/3 23:07
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huolib\withdraw\driver;
  13. use huolib\constant\SettleConst;
  14. use huolib\tool\Http;
  15. use huolib\withdraw\Driver;
  16. class MobileRecharge extends Driver {
  17. private $openId;
  18. private $appKey;
  19. private $telcheck = 'http://op.juhe.cn/ofpay/mobile/telcheck';/* 检测手机号码是否能充值 */
  20. private $onlineorder = 'http://op.juhe.cn/ofpay/mobile/onlineorder';/* 手机直充接口 */
  21. private $ordersta = 'http://op.juhe.cn/ofpay/mobile/ordersta';/* 订单状态查询 */
  22. private $mobile;
  23. private $money;
  24. /**
  25. * 构造函数
  26. *
  27. */
  28. public function __construct() {
  29. $_conf_file = GLOBAL_CONF_PATH.'extra/unionapi/ofpay/config.php';
  30. if (file_exists($_conf_file)) {
  31. $_config = include $_conf_file;
  32. } else {
  33. $_config = array();
  34. }
  35. $this->openId = $_config['openId'];
  36. $this->appKey = $_config['appKey'];
  37. }
  38. /**
  39. * 企业付款
  40. * https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2
  41. *
  42. * @throws \WxPayException
  43. */
  44. public function withDraw() {
  45. $_params['phoneno'] = $this->mobile;
  46. $_params['cardnum'] = 1;
  47. $_params['orderid'] = $this->order_id;
  48. $_params['key'] = $this->appKey;
  49. /*校验值,md5(OpenID+key+phoneno+cardnum+orderid),OpenID在个人中心查询 */
  50. $_sign = $this->openId.$this->appKey.$_params['phoneno'].$_params['cardnum'].$_params['orderid'];
  51. $_params['sign'] = md5($_sign);
  52. $_result = Http::post($this->onlineorder, $_params);
  53. $_re_data['result'] = $_result;
  54. if (!empty($_result)) {
  55. $_result = json_decode($_result, true);
  56. $_re_data['code'] = $_result['error_code'];
  57. $_re_data['msg'] = $_result['reason'];
  58. if ($_result['error_code'] == 0) {
  59. $_re_data['code'] = SettleConst::SETTLE_SUCCESS;
  60. } else if ($_result['error_code'] == 10014) { //订单异常,需求查询结果
  61. $_query_result = $this->orderQuery($this->order_id);
  62. $_re_data['code'] = $_query_result['code'];
  63. $_re_data['query_result'] = $_query_result['query_result'];
  64. }
  65. } else { //网络异常,需求查询结果
  66. $_query_result = $this->orderQuery($this->order_id);
  67. $_re_data['code'] = $_query_result['code'];
  68. $_re_data['query_result'] = $_query_result['query_result'];
  69. }
  70. return $_re_data;
  71. }
  72. /**
  73. * 查询手机号码是否可以充值
  74. *
  75. * @param $mobile 手机号
  76. * @param $money 充值金额,目前可选:1、2、5、10、20、30、50、100、200、300、500
  77. */
  78. private function telcheck($mobile, $money) {
  79. $_params['phoneno'] = $mobile;
  80. $_params['cardnum'] = $money;
  81. $_params['key'] = $this->appKey;
  82. $_result = Http::post($this->telcheck, $_params);
  83. print_r($_result);
  84. exit;
  85. }
  86. /**
  87. * 根据订单号查询状态
  88. *
  89. * @param $orderid 订单id
  90. *
  91. * @return mixed
  92. */
  93. public function orderQuery($orderid, $ext = null) {
  94. $_params['orderid'] = $orderid;
  95. $_params['key'] = $this->appKey;
  96. $_result = Http::post($this->ordersta, $_params);
  97. $_re_data['code'] = '';
  98. $_re_data['query_result'] = $_result;
  99. if (empty($_result)) {
  100. return $_re_data;
  101. }
  102. $_result = json_decode($_result, true);
  103. $_re_data['code'] = $_result['error_code'];
  104. if ($_result['error_code'] != 0) {
  105. return $_re_data;
  106. } else if ($_result['result']['game_state'] != 9) {
  107. /*状态 1:成功 9:失败 0:充值中*/
  108. $_re_data['code'] = SettleConst::SETTLE_SUCCESS;
  109. return $_re_data;
  110. } else {
  111. return $_re_data;
  112. }
  113. }
  114. /**
  115. * @return mixed
  116. */
  117. public function getMoney() {
  118. return $this->money;
  119. }
  120. /**
  121. * @param mixed $money
  122. */
  123. public function setMoney($money) {
  124. $this->money = $money;
  125. }
  126. /**
  127. * @return mixed
  128. */
  129. public function getMobile() {
  130. return $this->mobile;
  131. }
  132. /**
  133. * @param mixed $mobile
  134. */
  135. public function setMobile($mobile) {
  136. $this->mobile = $mobile;
  137. }
  138. }