fix some bugs

This commit is contained in:
yansongda 2018-01-11 19:00:30 +08:00
parent 6106ff15c0
commit 0bc9e721ad
3 changed files with 31 additions and 29 deletions

View File

@ -117,15 +117,7 @@ class Wechat implements GatewayApplicationInterface
*/
public function find($order): Collection
{
if (is_array($order)) {
$this->payload = array_merge($this->payload, $order);
} else {
$this->payload['out_trade_no'] = $order;
}
unset($this->payload['notify_url'], $this->payload['trade_type']);
$this->payload['sign'] = Support::generateSign($this->payload, $this->config->get('key'));
$this->payload = Support::filterPayload($this->payload, $order, $this->config);
return Support::requestApi('pay/orderquery', $this->payload, $this->config->get('key'));
}
@ -141,16 +133,7 @@ class Wechat implements GatewayApplicationInterface
*/
public function refund($order): Collection
{
if (isset($order['miniapp'])) {
$this->payload['appid'] = $this->config->get('miniapp_id');
unset($order['miniapp']);
}
$this->payload = array_merge($this->payload, $order);
unset($this->payload['notify_url'], $this->payload['trade_type']);
$this->payload['sign'] = Support::generateSign($this->payload, $this->config->get('key'));
$this->payload = Support::filterPayload($this->payload, $order, $this->config);
return Support::requestApi(
'secapi/pay/refund',
@ -186,15 +169,7 @@ class Wechat implements GatewayApplicationInterface
*/
public function close($order)
{
if (is_array($order)) {
$this->payload = array_merge($this->payload, $order);
} else {
$this->payload['out_trade_no'] = $order;
}
unset($this->payload['notify_url'], $this->payload['trade_type']);
$this->payload['sign'] = Support::generateSign($this->payload, $this->config->get('key'));
$this->payload = Support::filterPayload($this->payload, $order, $this->config);
return Support::requestApi('pay/closeorder', $this->payload, $this->config->get('key'));
}

View File

@ -19,7 +19,6 @@ class MiniappGateway extends MpGateway
public function pay($endpoint, array $payload): Collection
{
$payload['appid'] = $this->config->get('miniapp_id');
$payload['trade_type'] = $this->getTradeType();
return parent::pay($endpoint, $payload);
}

View File

@ -85,6 +85,34 @@ class Support
throw new InvalidSignException('Wechat Sign Verify FAILED', 3, $result);
}
/**
* Filter payload.
*
* @author yansongda <me@yansongda.cn>
*
* @param array $payload
* @param array|string $order
* @param Yansongda\Supports\Config $config
*
* @return array
*/
public static function filterPayload($payload, $order, $config)
{
$payload['out_trade_no'] = is_array($order) ? '' : $order;
$payload = array_merge($payload, $order);
$type = isset($order['type']) ? ($order['type'] . ($order['type'] != 'app' ?: '_') . 'id') : 'app_id';
$payload['appid'] = $config->get($type, '');
unset($payload['notify_url'], $payload['trade_type'], $payload['type']);
$payload['sign'] = self::generateSign($payload, $config->get('key'));
return $payload;
}
/**
* Generate wechat sign.
*