支付宝退款操作

第一步:申请你的支付宝的一些东西;

第二步:需要的一些文件:支付宝的dome,因为我的是php版本,下载的是php 的dome!

第三步:我用的是thinkphp5框架,把支付宝的dome放在 extend 文件夹里面,支付宝dome的名字自己随意取!

第四步:开始进行代码的编写,首先我们引入到支付宝的一些文件进来

  require_once EXTEND_PATH . '../extend/alipay/aop/AopClient.php';
  require_once EXTEND_PATH . '../extend/alipay/aop/request/AlipayTradeRefundRequest.php';
  require_once EXTEND_PATH . '../extend/alipay/aop/SignData.php';

   实例化 $aop = new AopClient ();

    支付宝的这个文件;

  然后各种的参数往里面扔就好了,代码如下:

  $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
  $aop->appId = 'appid';
  $aop->rsaPrivateKey = 私钥;
  $aop->alipayrsaPublicKey=公钥;
  $aop->apiVersion = '1.0';
  $aop->signType = 'RSA2';
  $aop->postCharset='UTF-8';
  $aop->format='json';
  $request = new AlipayTradeRefundRequest ();

  下面拼接退款的一些参数(记住一定要转成json的格式的,这里我没有拼接商品的详细参数):

$array=array(
'out_trade_no'=>$shop_order,//订单支付时传入的商户订单号,不能和 trade_no同时为空。
'trade_no'=>$alipay_order,//支付宝交易号,和商户订单号不能同时为空
'refund_amount'=>$price,//需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数
'refund_reason'=>'拼单失败退款',//退款的原因说明
'out_request_no'=>$order_num,//标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传。
'operator_id'=>'youdi001',//商户的操作员编号


);
$list=json_encode($array);



好了现在给大家看一下全部的代码

public function alipayTrade($shop_order,$alipay_order,$price,$order_num,$id){
//echo 111;die;
require_once EXTEND_PATH . '../extend/alipay/aop/AopClient.php';
require_once EXTEND_PATH . '../extend/alipay/aop/request/AlipayTradeRefundRequest.php';
require_once EXTEND_PATH . '../extend/alipay/aop/SignData.php';
$aop = new AopClient ();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = 'appid';
$aop->rsaPrivateKey = '私';
$aop->alipayrsaPublicKey='公';
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset='UTF-8';
$aop->format='json';
$request = new AlipayTradeRefundRequest ();
$array=array(
'out_trade_no'=>$shop_order,//订单支付时传入的商户订单号,不能和 trade_no同时为空。
'trade_no'=>$alipay_order,//支付宝交易号,和商户订单号不能同时为空
'refund_amount'=>$price,//需要退款的金额,该金额不能大于订单金额,单位为元,支持两位小数
'refund_reason'=>'拼单失败退款',//退款的原因说明
'out_request_no'=>$order_num,//标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传。
'operator_id'=>'youdi001',//商户的操作员编号


);
$list=json_encode($array);
$request->setBizContent($list);

$result = $aop->execute ($request);

$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code; if(!empty($resultCode)&&$resultCode == 10000){
  echo '成功';
   } else {
echo "失败"; }

  }

这里我是封装成了一个方法进行调用的,逻辑层操作都在另外一个控制器里面;

退款就是如此简单!

原文地址:https://www.cnblogs.com/leiqi/p/8569206.html