1. 首页
  2. 新闻资讯
  3.  
  4. 建站经验
  5.  

PHP实现的支付宝支付,退款,回调函数

发布时间:2018-09-11 14:14:31 来源:
1.支付宝主函数
<?php
 include('alipay/aop/AopClient.php');
 include('alipay/aop/request/AlipayTradeAppPayRequest.php');
 include('alipay/aop/request/AlipayTradeRefundRequest.php');
 //支付宝appid  (应用标识)
 define("ALIPAY_APPID""");
 //支付宝(支付宝私钥)
 define("PRIVATE_KEY""");
 //支付宝(支付宝公钥)
 define("PUBLIC_KEY""");
 class alipay{
    /**
     * 支付宝支付
     */
    public function appAlipay(){
            // 时间戳
            $timeStamp = strval(time());
            $totalFee = 1;
            // 支付结果显示文字
            $serial_number = date("Ymdhis") . mt_rand(1099);
            $aop = new \AopClient();
            $bizcontent = json_encode([
                'body'=>"测试",                             //商品名称
                'subject'=>'测试',                          //主题
                'out_trade_no'=> $serial_number,           //此订单号为商户唯一订单号
                'total_amount'=> $totalFee,                //保留两位小数
                'product_code'=>'QUICK_MSECURITY_PAY'
            ]);

            //支付宝开始
            $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
            //实际上线app id需真实的
            $aop->appId = ALIPAY_APPID;
            $aop->rsaPrivateKey = PRIVATE_KEY;
            $aop->format = "json";
            $aop->charset  = "UTF-8";
            $aop->signType = "RSA2";
            $aop->alipayrsaPublicKey = PUBLIC_KEY;

            //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
            $request = new \AlipayTradeAppPayRequest();
            //支付宝回调
            $notifyUrl="https://openapi.alipay.com";
            $request->setNotifyUrl($notifyUrl);
            $request->setBizContent($bizcontent);
            //这里和普通的接口调用不同,使用的是sdkExecute
            $response = $aop->sdkExecute($request);
            $this->echoSuccess($response);

    }

    /**
     * 支付宝支付回调
     *
     */
    public function  alipayNotify() {
        if(!empty($_POST)){
            $serial=$_POST['out_trade_no'];
            $wepay_serial = $_POST['trade_no'];
            if (!empty($wepay_serial)) {
                //这里可以写自己需求
                echo "返回的参数out_trade_no:".$serial;
                echo "返回的参数trade_no:".$wepay_serial;
            }
        }
        echo 'success';
    }
    /**
     * 支付宝退货处理
     * 退货前提是必须支付成功
     * @param type $orderId
     * @return bool
     */
    public function alipayRefund($out_trade_no,$wepay_serial,$totalFee) {
         $aop = new AopClient ();
         $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
         $aop->appId = ALIPAY_APPID;
         $aop->rsaPrivateKey = PRIVATE_KEY;
         $aop->alipayrsaPublicKey=PUBLIC_KEY;
         $aop->apiVersion = '1.0';
         $aop->signType = 'RSA2';
         $aop->postCharset='GBK';
         $aop->format='json';
         $request = new AlipayTradeRefundRequest ();
         $bizcontent = json_encode([
            'out_trade_no'=>$out_trade_no,
            'trade_no'=> $wepay_serial,
            'refund_amount'=> $totalFee,
            'refund_reason'=>'正常退款'
             ]);
         $request->setBizContent($bizcontent);
         $result = $aop->execute($request);
         $responseNode = str_replace(".""_", $request->getApiMethodName()) . "_response";
         $resultCode = $result->$responseNode->code;
         echo $resultCode;
         if(!empty($resultCode)&&$resultCode == 10000){
               echo "退款成功";
           } else {
                echo "退款失败";
           }
        }

    /**
     * 输出成功JSON消息
     */
    final public function echoSuccess($msg = 'success') {
        $this->echoMsg(0, $msg);
        exit();
    }

    /**
     * 输出JSON消息
     * @param mixed $code
     * @param mixed $msg
     */
    final public function echoMsg($code, $msg = '', $options = JSON_UNESCAPED_UNICODE) {
        return $this->echoJson(array(
                'ret_code' => $code,
                'ret_msg'  => $msg
        ), $options);
    }

    /**
     * 输出JSON
     * @param mixed $arr
     */
    final public function echoJson($arr, $options = JSON_UNESCAPED_UNICODE) {
        header('Content-Type: application/json; charset=utf-8');
        if (strpos(PHP_VERSION, '5.3') > -1) {
            // php 5.3-
            echo json_encode($arr);
        } else {
            // php 5.4+
            echo json_encode($arr, $options);
        }
        return true;
    }

}

 

2.调用 生成支付,退款 接口

<?php
include('./alipay.php');

$alipay =new alipay(); 

$alipay->appAlipay(); //支付函数

$out_trade_no="";     //订单号
$wepay_serial="";     //唯一订单号
$totalFee="0.01";     //退款金额
$alipay->alipayRefund($out_trade_no, $wepay_serial, $totalFee);//退款 

 

源码下载

/uploadfile/2018/0911/20180911021601336.rar


新闻资讯

 

服务项目

 

联系我们

  • 咨询电话:13316437003
  • 地址:广东省深圳市福田区八卦四路中浩大厦2楼216
  • 业务咨询:点击这里给我发消息
  • 技术服务:点击这里给我发消息
  • 售后邮箱:service@dcnop.com
  • 技术邮箱:zcl@dcnop.com

 

微信公众号

  • 客服:点击这里给客服发消息

    技术:点击这里给技术发消息

    大诚网络官方微信客服

    客户服务热线

    0755-82400810

    在线客服