ios 支付宝支付 回调数据_PHP实现支付宝支付,退款,回调

本文介绍了如何在iOS应用中使用PHP实现支付宝支付、退款功能,并详细讲解了支付回调函数的实现步骤,旨在帮助PHP开发者解决实际问题,提供进阶技术指导。同时,提供了相关学习资源和资料链接。
摘要由CSDN通过智能技术生成

1.首先你要加载你的支付宝配置项

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", "");

2,支付宝支付函数

/**
     * 支付宝支付
     */
    public function appAlipay(){
            // 时间戳
            $timeStamp = strval(time());
            $totalFee = 1;
            // 支付结果显示文字
            $serial_number = date("Ymdhis") . mt_rand(10, 99);
            $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);

    }

3,支付宝回调函数

/**
     * 支付宝支付回调
     *
     */
    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';
    }

4,支付宝退款函数

/**
     * 支付宝退货处理
     * 退货前提是必须支付成功
     * @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;
    }

}

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要戳这里PHP进阶架构师>>>视频、面试文档免费获取

或 者关注我每天分享技术文章

PHP进阶编程​www.zhihu.com
d2af325926a0d0f2205dbac73afeb943.png
来源:https://zhuanlan.zhihu.com/p/94266044
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值