|
@@ -2,7 +2,6 @@
|
|
|
declare(strict_types=0);
|
|
|
|
|
|
namespace refill\dingxin;
|
|
|
-
|
|
|
require_once(BASE_HELPER_RAPI_PATH . '/dingxin/config.php');
|
|
|
|
|
|
use refill;
|
|
@@ -17,13 +16,13 @@ class RefillPhone extends refill\IRefillPhone
|
|
|
|
|
|
private function req_params(int $phone, int $amount, int $card_type, string $order_sn)
|
|
|
{
|
|
|
- $params['userId'] = config::USER_ID;
|
|
|
- $params['itemId'] = config::Products[$card_type][$amount];
|
|
|
- $params['checkItemFacePrice'] = $amount * 1000;
|
|
|
- $params['amt'] = 1;
|
|
|
- $params['uid'] = $phone;
|
|
|
- $params['serialno'] = $order_sn;
|
|
|
- $params['dtCreate'] = date("YmdHis");
|
|
|
+ $params['userid'] = config::USER_ID;
|
|
|
+ $params['pwd'] = config::PWD;
|
|
|
+ $params['orderid'] = $order_sn;
|
|
|
+ $params['face'] = $amount;
|
|
|
+ $params['account'] = $phone;
|
|
|
+ $params['amount'] = 1;
|
|
|
+ $params['operator'] = config::operator[$card_type];
|
|
|
|
|
|
return $params;
|
|
|
}
|
|
@@ -33,7 +32,7 @@ class RefillPhone extends refill\IRefillPhone
|
|
|
$order_sn = $params['order_sn'];
|
|
|
$params = $this->req_params($card_no, $amount, $card_type, $order_sn);
|
|
|
$sign = $this->sign($params);
|
|
|
- $params['sign'] = $sign;
|
|
|
+ $params['userkey'] = $sign;
|
|
|
|
|
|
$resp = http_request(config::ORDER_URL, $params, 'GET', false, [], $net_errno);
|
|
|
|
|
@@ -47,29 +46,26 @@ class RefillPhone extends refill\IRefillPhone
|
|
|
if (empty($resp)) {
|
|
|
return [false, '网络错误', true];
|
|
|
}
|
|
|
- $status = $resp['status'];
|
|
|
- $code = $resp['code'];
|
|
|
|
|
|
- if (!in_array($status, ['success', 'failed'])) {
|
|
|
- return [false, '网络错误', true];
|
|
|
- } elseif ($code === '00') {
|
|
|
- return [true, $resp['bizOrderId'], false];
|
|
|
- } elseif (in_array($code, [23, 31])) {
|
|
|
- $net_errno = "HTTP-{$code}";
|
|
|
- return [false, $code, false];
|
|
|
+ if ($resp['error'] === '0' && in_array($resp['state'], [0, 8])) {
|
|
|
+ return [true, $resp['Porderid'], false];
|
|
|
+ } elseif ($resp['error'] === '9999') {
|
|
|
+ $net_errno = "HTTP-{$resp['error']}";
|
|
|
+ return [false, $resp['error'], false];
|
|
|
} else {
|
|
|
- return [false, $code, false];
|
|
|
+ return [false, $resp['error'], false];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public function query($refill_info)
|
|
|
{
|
|
|
- $params['userId'] = config::USER_ID;
|
|
|
- $params['serialno'] = $refill_info['order_sn'];
|
|
|
+ $params['userid'] = config::USER_ID;
|
|
|
+ $params['pwd'] = config::PWD;
|
|
|
+ $params['orderid'] = $refill_info['order_sn'];
|
|
|
$key = config::KEY;
|
|
|
- $content = "{$params['userId']}{$params['serialno']}{$key}";
|
|
|
- $params['sign'] = md5($content);
|
|
|
+ $content = "userid{$params['userid']}pwd{$params['pwd']}orderid{$params['orderid']}{$key}";
|
|
|
+ $params['userkey'] = strtoupper(md5($content));
|
|
|
|
|
|
$resp = http_request(config::QUERY_URL, $params);
|
|
|
|
|
@@ -86,32 +82,25 @@ class RefillPhone extends refill\IRefillPhone
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- $status = $resp['status'];
|
|
|
- $code = $resp['code'];
|
|
|
-
|
|
|
- if (!in_array($status, ['success', 'failed'])) {
|
|
|
- return [false, $status];
|
|
|
- }
|
|
|
- elseif($code === '00')
|
|
|
+ if($resp['error'] === '0')
|
|
|
{
|
|
|
- $status = intval($resp['data']['status']);
|
|
|
- if ($status === 2) {
|
|
|
- Model('refill_order')->edit($refill_info['order_id'], ['official_sn' => $resp['data']['outOrderNo']]);
|
|
|
+ $status = intval($resp['state']);
|
|
|
+ if ($status === 1) {
|
|
|
$order_state = ORDER_STATE_SUCCESS;
|
|
|
- } elseif ($status === 3) {
|
|
|
+ } elseif ($status === 2) {
|
|
|
$order_state = ORDER_STATE_CANCEL;
|
|
|
- } elseif (in_array($status, [0, 1, 4, 9])) {
|
|
|
+ } elseif ($status === 0) {
|
|
|
$order_state = ORDER_STATE_SEND;
|
|
|
} else {
|
|
|
return [false, $status];
|
|
|
}
|
|
|
return [true, $order_state];
|
|
|
}
|
|
|
- elseif ($code === '22' && (time() - $refill_info['commit_time'] >= 600)) {
|
|
|
+ elseif ($resp['error'] === '1007' && (time() - $refill_info['commit_time'] >= 120)) {
|
|
|
return [true, ORDER_STATE_NOEXIST];
|
|
|
}
|
|
|
else {
|
|
|
- return [false, $code];
|
|
|
+ return [false, $resp['error']];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -119,10 +108,11 @@ class RefillPhone extends refill\IRefillPhone
|
|
|
|
|
|
public function balance()
|
|
|
{
|
|
|
- $params['userId'] = config::USER_ID;
|
|
|
+ $params['userid'] = config::USER_ID;
|
|
|
+ $params['pwd'] = config::PWD;
|
|
|
$key = config::KEY;
|
|
|
- $body = "{$params['userId']}{$key}";
|
|
|
- $params['sign'] = md5($body);
|
|
|
+ $body = "userid{$params['userid']}pwd{$params['pwd']}{$key}";
|
|
|
+ $params['userkey'] = strtoupper(md5($body));
|
|
|
|
|
|
$resp = http_request(config::BALANCE_URL, $params);
|
|
|
|
|
@@ -135,21 +125,19 @@ class RefillPhone extends refill\IRefillPhone
|
|
|
$resp = $this->xmlToArray($resp);
|
|
|
if (empty($resp)) {
|
|
|
return [false, '网络错误'];
|
|
|
- } elseif ($resp['status'] === 'success' && $resp['code'] === '00') {
|
|
|
- return [true, $resp['balance']/1000];
|
|
|
+ } elseif ($resp['error'] === '0') {
|
|
|
+ return [true, $resp['lastMoney']];
|
|
|
} else {
|
|
|
- return [false, $resp['code']];
|
|
|
+ return [false, $resp['error']];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private function sign($params)
|
|
|
{
|
|
|
- $userid = config::USER_ID;
|
|
|
$key = config::KEY;
|
|
|
- $content = "{$params['amt']}{$params['checkItemFacePrice']}{$params['dtCreate']}{$params['itemId']}{$params['itemPrice']}{$params['serialno']}";
|
|
|
- $content .= "{$params['uid']}{$userid}{$key}";
|
|
|
- return md5($content);
|
|
|
+ $content = "userid{$params['userid']}pwd{$params['pwd']}orderid{$params['orderid']}face{$params['orderid']}account{$params['account']}amount{$params['amount']}{$key}";
|
|
|
+ return strtoupper(md5($content));
|
|
|
}
|
|
|
|
|
|
public function xmlToArray($xml)
|