PHP支付宝APP支付接口

1-1:首先下载支付宝官方SDK,我的是PHP版的,起名“alipay”

下载地址:https://docs.open.alipay.com/54/103419/

1-2:配置文件 config.php

 // 支付宝
    'ALIPAY_CONFIG' =>[
        'app_id' =>'12345678',    //app_id
        // 支付宝私钥
        'rsaPrivateKey' =>'ZS1FY8LDXd',
        // 支付宝公钥       
	    'alipayrsaPublicKey'=>'p/JhMWNiQIDAQAB',  
        'notify_url' =>'http://www.abc.com/public/api/portal/Order/notify_url.html',//回调地址(支付宝支付成功后回调修改订单状态的地址)
        'payment_type' =>1,//(固定值)
        'charset'    => 'utf-8',//编码
        'sign_type' => 'RSA2',//签名方式
        'version'   =>"1.0",//固定值
        'url'       => 'https://openapi.alipay.com/gateway.do',//固定值
        'method'    => 'alipay.trade.app.pay',                //固定值
     ],


注:其中,支付宝公钥为这个

1-3:控制器

// 1-2 支付宝生成签名
    public function ZfbSing()
    {
 
        if ($this->request->isGet()) {
           
           
            // 引入支付宝第三方sdk类库
            import('alipay.aop.AopClient', EXTEND_PATH);
            // 调用支付宝配置文件
            $API = config('ALIPAY_CONFIG');
 
            //构造业务请求参数的集合(订单信息)
            $content = array();
            $content['subject'] = '商品标题';                 // 商品标题
            $content['body'] = '商品描述';  // 商品描述 非必须
            $content['out_trade_no'] = '订单号';         // 订单号
            $content['timeout_express'] = "15m";                         // 允许最晚的支付时间  非必须
            $content['total_amount'] = '15.00';       // 要求必须为浮点型,订单金额
            $content['product_code'] = "QUICK_MSECURITY_PAY";            //销售产品码,固定值
            $con = json_encode($content);                                //$content是biz_content的值,将之转化成json字符串
 
            //公共参数
            $Client = new \AopClient();                 //实例化支付宝sdk里面的AopClient类,下单时需要的操作,都在这个类里面
            $param = array();
            $param['app_id'] = $API['app_id'];         //支付宝分配给开发者的应用ID
            $param['method'] = $API['method'];         //接口名称
            $param['charset'] = $API['charset'];       //请求使用的编码格式
            $param['sign_type'] = $API['sign_type'];   //商户生成签名字符串所使用的签名算法类型
            $param['timestamp'] = date("Y-m-d H:i:s");   //发送请求的时间
            $param['version'] = $API['version'];       //调用的接口版本,固定为:1.0
            $param['notify_url'] = $API['notify_url']; //支付宝服务器主动通知地址
            $param['biz_content'] = $con;              //业务请求参数的集合,长度不限,json格式
 
            $paramStr = $Client->getSignContent($param);//组装请求签名参数  到此步目前没有问题
            $sign = $Client->alonersaSign($paramStr, $API['rsaPrivateKey'], 'RSA2'); //生成签名
            $param['sign'] = $sign;
            $str = $Client->getSignContentUrlencode($param);       //最终请求参数
 
            echo json_encode(['code' => 100, 'msg' => '成功', 'data' => ['sing' => $str]], JSON_UNESCAPED_UNICODE);
            exit;
        } else {
            echo json_encode(['code' => 101, 'msg' => '请求类型错误'], JSON_UNESCAPED_UNICODE);
            exit;
        }
 
    }


1-4:支付宝支付成功回调

// 支付宝支付异步回调       
    public function notify_url()
    {
        import('alipay.aop.AopClient', EXTEND_PATH);    // 引入支付宝第三方类库
        $API = config('ALIPAY_CONFIG');                 // 调用支付宝配置文件
        $Client = new \AopClient();                     // 实例化类
        $Client->alipayrsaPublicKey = $API['alipayrsaPublicKey'];
        $parm = $_POST;
        //  验证签名
        $flag = $Client->rsaCheckV1($parm,NULL,"RSA2");
        if($flag){
            if ($parm['trade_status'] == 'TRADE_SUCCESS' || $parm['trade_status'] == 'TRADE_FINISHED') {
 
                // 此处为自己业务逻缉处理
                $OrderModel = new ServerOrderModel();
                $condition['order_num'] = $parm['out_trade_no'];      // 交易订单号
                $data['pay_time'] = $parm['gmt_payment'];             // 付款时间
                $data['pay_type'] = 1;                                // 支付类型   1:支付宝 2:微信
                $data['is_pay'] = 1;                                  // 是否支付
                $OrderModel->updateOrder($condition, $data);
                echo 'success';
            }
        }
    }


1-5:备注,回调方法中,$_POST数组如下:

{
 "gmt_create":"2018-10-29 14:06:27",
 "charset":"utf-8",
 "seller_email":"[email protected]",
 "subject":"索尼相机系列",
 "sign":"NS+bPlvoAHfNIcf97mUmtkBcTaTB\/vMTyVp9R4QM+DM7wlr",
 "body":"所选服务:索尼相机系列 x 1",
 "buyer_id":"2088402609538780",
 "invoice_amount":"0.01",
 "notify_id":"2018102900222140628038781018476292",
 "fund_bill_list":'[{"amount":"0.01","fundChannel":"ALIPAYACCOUNT"}]',
 "notify_type":"trade_status_sync",
 "trade_status":"TRADE_SUCCESS",
 "receipt_amount":"0.01",
 "app_id":"12345678",
 "buyer_pay_amount":"0.01",
 "sign_type":"RSA2",
 "seller_id":"2088031469395781",
 "gmt_payment":"2018-10-29 14:06:27",
 "notify_time":"2018-10-29 14:06:28",
 "version":"1.0",
 "out_trade_no":"20181029140609758396",
 "total_amount":"0.01",
 "trade_no":"2018102922001438781005066681",
 "auth_app_id":"2018030702332021",
 "buyer_logon_id":"894***@qq.com",
 "point_amount":"0.00"
 }


 
 

猜你喜欢

转载自blog.csdn.net/Y_weiguang/article/details/84942701