|
@@ -1,5 +1,4 @@
|
|
<?php
|
|
<?php
|
|
-declare(strict_types=0);
|
|
|
|
|
|
|
|
namespace refill\feimingyu;
|
|
namespace refill\feimingyu;
|
|
|
|
|
|
@@ -17,14 +16,13 @@ class RefillPhone extends refill\IRefillPhone
|
|
|
|
|
|
private function req_params(int $phone, int $amount, int $card_type, string $order_sn)
|
|
private function req_params(int $phone, int $amount, int $card_type, string $order_sn)
|
|
{
|
|
{
|
|
- $params['userid'] = config::USER_ID;
|
|
|
|
- $params['create_time'] = date("YmdHis");
|
|
|
|
- $params['buy_type'] = 1;
|
|
|
|
- $params['account'] = $phone;
|
|
|
|
- $params['product_id'] = config::Products[$card_type][$amount];
|
|
|
|
- $params['amount'] = $amount;
|
|
|
|
- $params['user_order'] = $order_sn;
|
|
|
|
-
|
|
|
|
|
|
+ $params['appId'] = config::APP_ID;
|
|
|
|
+ $params['timestamp'] = date("YmdHis").$this->get_millisecond();
|
|
|
|
+ $params['applyNo'] = $order_sn;
|
|
|
|
+ $params['rechargeNo'] = $phone;
|
|
|
|
+ $params['agentProductId'] = config::PRODUCT[$card_type][$amount];
|
|
|
|
+ $params['denomination'] = $amount;
|
|
|
|
+ $params['callbackUrl'] = config::NOTIFY_URL;
|
|
return $params;
|
|
return $params;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -32,11 +30,13 @@ class RefillPhone extends refill\IRefillPhone
|
|
{
|
|
{
|
|
$order_sn = $params['order_sn'];
|
|
$order_sn = $params['order_sn'];
|
|
$params = $this->req_params($card_no, $amount, $card_type, $order_sn);
|
|
$params = $this->req_params($card_no, $amount, $card_type, $order_sn);
|
|
- $sign = $this->sign($params);
|
|
|
|
|
|
+ if(empty($params['agentProductId'])) {
|
|
|
|
+ return [false, '商品编号错误', false];
|
|
|
|
+ }
|
|
|
|
+ $sign = config::sign($params);
|
|
$params['sign'] = $sign;
|
|
$params['sign'] = $sign;
|
|
- $params['cat_id'] = config::operator[$card_type];
|
|
|
|
|
|
|
|
- $resp = http_request(config::ORDER_URL, $params, 'GET', false, [], $net_errno);
|
|
|
|
|
|
+ $resp = http_request(config::ORDER_URL, $params, 'POST', false, config::ExtHeaders, $net_errno);
|
|
|
|
|
|
if (empty($resp)) {
|
|
if (empty($resp)) {
|
|
return [false, '网络错误', true];
|
|
return [false, '网络错误', true];
|
|
@@ -47,32 +47,25 @@ class RefillPhone extends refill\IRefillPhone
|
|
$resp = json_decode($resp, true);
|
|
$resp = json_decode($resp, true);
|
|
if (empty($resp)) {
|
|
if (empty($resp)) {
|
|
return [false, '网络错误', true];
|
|
return [false, '网络错误', true];
|
|
- }
|
|
|
|
- $status = $resp['status'];
|
|
|
|
-
|
|
|
|
- if ($status === '0') {
|
|
|
|
- return [true, $resp['order_id'], false];
|
|
|
|
- } elseif (in_array($status, config::ERR_NOS, true)) {
|
|
|
|
- return [false, $resp['msg'], false];
|
|
|
|
- } elseif (in_array($status, ['110', '113', '-999'], true)) {
|
|
|
|
- $net_errno = "HTTP-{$status}";
|
|
|
|
|
|
+ } elseif ($resp['code'] === '00000') {
|
|
|
|
+ return [true, $resp['data']['orderNo'], false];
|
|
|
|
+ } elseif ($resp['code'] === 'A0503') {
|
|
|
|
+ $net_errno = "HTTP-{$resp['code']}";
|
|
return [false, $resp['msg'], true];
|
|
return [false, $resp['msg'], true];
|
|
} else {
|
|
} else {
|
|
- //未知状态码
|
|
|
|
- $net_errno = "HTTP-998";
|
|
|
|
- return [false, $resp['msg'], true];
|
|
|
|
|
|
+ return [false, $resp['msg'], false];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public function query($refill_info)
|
|
public function query($refill_info)
|
|
{
|
|
{
|
|
- $params['userid'] = config::USER_ID;
|
|
|
|
- $params['create_time'] = date("YmdHis");
|
|
|
|
- $params['user_order'] = $refill_info['order_sn'];
|
|
|
|
- $params['sign'] = $this->sign($params);
|
|
|
|
|
|
+ $params['appId'] = config::APP_ID;
|
|
|
|
+ $params['timestamp'] = date("YmdHis").$this->get_millisecond();
|
|
|
|
+ $params['applyNo'] = $refill_info['order_sn'];
|
|
|
|
+ $params['sign'] = config::sign($params);
|
|
|
|
|
|
- $resp = http_request(config::QUERY_URL, $params);
|
|
|
|
|
|
+ $resp = http_request(config::QUERY_URL, $params, 'POST', false, config::ExtHeaders);
|
|
|
|
|
|
if (empty($resp)) {
|
|
if (empty($resp)) {
|
|
return [false, '网络错误'];
|
|
return [false, '网络错误'];
|
|
@@ -81,38 +74,41 @@ class RefillPhone extends refill\IRefillPhone
|
|
{
|
|
{
|
|
Log::record($resp, Log::DEBUG);
|
|
Log::record($resp, Log::DEBUG);
|
|
$resp = json_decode($resp, true);
|
|
$resp = json_decode($resp, true);
|
|
- if (empty($resp))
|
|
|
|
- {
|
|
|
|
- return [false, '网络错误'];
|
|
|
|
|
|
+ if (empty($resp)) {
|
|
|
|
+ return [false, '网络错误', ''];
|
|
}
|
|
}
|
|
- elseif ($resp['status'] === '0')
|
|
|
|
|
|
+ elseif ($resp['code'] === '00000')
|
|
{
|
|
{
|
|
- $status = $resp['state'];
|
|
|
|
- if ($status === 'success') {
|
|
|
|
- Model('refill_order')->edit($refill_info['order_id'], ['official_sn' => $resp['voucher']]);
|
|
|
|
|
|
+ $offical_sn = '';
|
|
|
|
+ $status = $resp['data']['orderStatus'];
|
|
|
|
+ if ($status === 'SUCCESS') {
|
|
|
|
+ $offical_sn = $resp['data']['ext1'];
|
|
|
|
+ $updata['official_sn'] = $offical_sn;
|
|
|
|
+ Model('refill_order')->edit($refill_info['order_id'], $updata);
|
|
$order_state = ORDER_STATE_SUCCESS;
|
|
$order_state = ORDER_STATE_SUCCESS;
|
|
- } elseif ($status === 'failed') {
|
|
|
|
|
|
+ } elseif ($status === 'FAILED') {
|
|
$order_state = ORDER_STATE_CANCEL;
|
|
$order_state = ORDER_STATE_CANCEL;
|
|
- } elseif ($status === 'untreated') {
|
|
|
|
|
|
+ } elseif ($status === 'PROCESSING' || $status === 'INIT') {
|
|
$order_state = ORDER_STATE_SEND;
|
|
$order_state = ORDER_STATE_SEND;
|
|
} else {
|
|
} else {
|
|
- return [false, $status];
|
|
|
|
|
|
+ return [false, $resp['msg'], $offical_sn];
|
|
}
|
|
}
|
|
- return [true, $order_state];
|
|
|
|
|
|
+ return [true, $order_state, $offical_sn];
|
|
}
|
|
}
|
|
- else {
|
|
|
|
- return [false, $resp['msg']];
|
|
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ return [false, $resp['msg'], ''];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public function balance()
|
|
public function balance()
|
|
{
|
|
{
|
|
- $params['userid'] = config::USER_ID;
|
|
|
|
- $params['create_time'] = date("YmdHis");
|
|
|
|
- $params['sign'] = $this->sign($params);
|
|
|
|
|
|
+ $params['appId'] = config::APP_ID;
|
|
|
|
+ $params['timestamp'] = date("YmdHis").$this->get_millisecond();
|
|
|
|
+ $params['sign'] = config::sign($params);
|
|
|
|
|
|
- $resp = http_request(config::BALANCE_URL, $params);
|
|
|
|
|
|
+ $resp = http_request(config::BALANCE_URL, $params, 'POST', false, config::ExtHeaders);
|
|
|
|
|
|
if (empty($resp)) {
|
|
if (empty($resp)) {
|
|
return [false, '网络错误'];
|
|
return [false, '网络错误'];
|
|
@@ -123,19 +119,20 @@ class RefillPhone extends refill\IRefillPhone
|
|
$resp = json_decode($resp, true);
|
|
$resp = json_decode($resp, true);
|
|
if (empty($resp)) {
|
|
if (empty($resp)) {
|
|
return [false, '网络错误'];
|
|
return [false, '网络错误'];
|
|
- } elseif ($resp['status'] === '0') {
|
|
|
|
- return [true, $resp['balance']];
|
|
|
|
|
|
+ } elseif ($resp['code'] === '00000') {
|
|
|
|
+ return [true, $resp['data']['balance']];
|
|
} else {
|
|
} else {
|
|
return [false, $resp['msg']];
|
|
return [false, $resp['msg']];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private function sign($params)
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 获取毫秒级别的时间戳
|
|
|
|
+ */
|
|
|
|
+ private function get_millisecond()
|
|
{
|
|
{
|
|
- ksort($params);
|
|
|
|
- $str = implode('', $params);
|
|
|
|
- $str .= config::KEY;
|
|
|
|
- return strtoupper(md5($str));
|
|
|
|
|
|
+ list($usec, $sec) = explode(" ", microtime());
|
|
|
|
+ return round($usec*1000);
|
|
}
|
|
}
|
|
-}
|
|
|
|
|
|
+}
|