41 lines
1.7 KiB
PHP
41 lines
1.7 KiB
PHP
<?php
|
||
namespace Admin\Model;
|
||
use Think\Model\RelationModel;
|
||
class ShopOrderModel extends \Shop\Model\ShopOrderModel{
|
||
//支付宝原路退款
|
||
public function alipayRefund($payment){
|
||
$detail= json_decode($payment["detail"]);//这里detail字段,保存了当时的交易详情
|
||
//
|
||
Vendor('AlipaySdk.aop.AopClient');
|
||
Vendor('AlipaySdk.aop.SignData');
|
||
Vendor('AlipaySdk.aop.request.AlipayTradeRefundRequest');
|
||
$aop = new \AopClient();
|
||
$config_load=load_config("./Application/Shop/Conf/config.php");//这里因为需要调用shop模块下的config配置文件,所以要用到load_config函数
|
||
$config = $config_load["alipay"];
|
||
$aop->gatewayUrl = $config['gatewayUrl'];
|
||
$aop->appId = $config['app_id'];
|
||
$aop->rsaPrivateKey = $config['merchant_private_key'];
|
||
$aop->alipayrsaPublicKey=$config['alipay_public_key'];
|
||
$aop->apiVersion = '1.0';
|
||
$aop->signType = 'RSA2';
|
||
$aop->postCharset="UTF-8";
|
||
$aop->format='json';
|
||
$request = new \AlipayTradeRefundRequest ();
|
||
$request->setBizContent(json_encode(array(
|
||
"out_trade_no"=>$detail->out_trade_no,
|
||
"trade_no"=>$detail->trade_no,
|
||
"refund_amount"=>$detail->total_amount,
|
||
"refund_reason"=>"正常退款",
|
||
)));
|
||
$result = $aop->execute ( $request);
|
||
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
|
||
$resultCode = $result->$responseNode->code;
|
||
if(!empty($resultCode)&&$resultCode == 10000){
|
||
return true;
|
||
}else {
|
||
$this->error = $result->$responseNode->sub_msg;
|
||
return false;
|
||
}
|
||
}
|
||
}
|