feat : refund
This commit is contained in:
@@ -66,11 +66,21 @@ abstract class WxJsRechargeBaseService implements ThirdPayInterface
|
||||
*/
|
||||
abstract public function callBackHandle();
|
||||
|
||||
/**
|
||||
* 退款回调
|
||||
*/
|
||||
abstract public function refundCallbackHandle();
|
||||
|
||||
/**
|
||||
* 设置回调地址
|
||||
*/
|
||||
abstract public function setNotify();
|
||||
|
||||
/**
|
||||
* 设置退款回调地址
|
||||
*/
|
||||
abstract public function setRefundNotify();
|
||||
|
||||
// /**
|
||||
// * 设置商户号id
|
||||
// */
|
||||
@@ -90,16 +100,16 @@ abstract class WxJsRechargeBaseService implements ThirdPayInterface
|
||||
try {
|
||||
$this->callbackData = $this->ysdPay->wechat($this->config)->callback($this->request)->toArray()['resource']['ciphertext'];
|
||||
}catch (Exception $e) {
|
||||
$this->log->debug(__CLASS__.'微信支付回调解密失败'.json_encode($e->getMessage()));
|
||||
throw new ErrException('微信支付回调解密失败');
|
||||
$this->log->debug(__CLASS__.'wxPay回调解密失败'.json_encode($e->getMessage()));
|
||||
throw new ErrException('wxPay回调解密失败');
|
||||
}
|
||||
|
||||
if (!empty($this->callbackData)) {
|
||||
$this->log->debug(__CLASS__.'获取回调失败'.json_encode($this->request));
|
||||
throw new ErrException('获取回调失败');
|
||||
$this->log->debug(__CLASS__.'wxPay获取回调失败'.json_encode($this->request));
|
||||
throw new ErrException('wxPay获取回调失败');
|
||||
}
|
||||
|
||||
$this->log->info(__CLASS__.'微信支付完成回调'.json_encode($this->callbackData));
|
||||
$this->log->info(__CLASS__.'wxPay完成回调'.json_encode($this->callbackData));
|
||||
}
|
||||
|
||||
|
||||
@@ -156,4 +166,39 @@ abstract class WxJsRechargeBaseService implements ThirdPayInterface
|
||||
throw new ErrException($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param float $refundAmount
|
||||
* @param float $totalAmount
|
||||
* @param string $outTradeNo
|
||||
* @param string $outRefundNo
|
||||
* @return Collection|Rocket
|
||||
* @throws ContainerExceptionInterface
|
||||
* @throws NotFoundExceptionInterface
|
||||
*/
|
||||
public function refund(float $refundAmount,float $totalAmount, string $outTradeNo, string $outRefundNo): Collection|Rocket
|
||||
{
|
||||
if (empty($this->config)) throw new ErrException('调起支付失败-微信支付配置项不存在');
|
||||
|
||||
try {
|
||||
$order = [
|
||||
'out_trade_no' => $outTradeNo,
|
||||
'out_refund_no' => $outRefundNo,
|
||||
'amount' => [
|
||||
'refund' => (int)bcmul((string)$refundAmount, "100"),
|
||||
'total' => (int)bcmul((string)$totalAmount, "100"),
|
||||
'currency' => 'CNY',
|
||||
],
|
||||
'_action' => 'mini', // jsapi 退款,默认
|
||||
];
|
||||
|
||||
$result = $this->ysdPay->wechat($this->config)->refund($order);
|
||||
|
||||
$this->log->callbackLog(__CLASS__.'微信退款调起数据|回调地址:'. json_encode($this->config['wechat']['default']).'|回调数据:'.json_encode($result).'|请求数据:'.json_encode($order));
|
||||
return $result;
|
||||
} catch (Exception $e) {
|
||||
$this->log->error(__CLASS__.'微信退款调起失败。reason:'.$e->getMessage());
|
||||
throw new ErrException($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user