美文网首页
tp5 接入支付宝 APP支付

tp5 接入支付宝 APP支付

作者: 归隐小赵 | 来源:发表于2020-07-13 20:22 被阅读0次

    首先去官网下载SDK,申请app_id等,就不说了,必备的东西
    直接说源码操作
    首先预下单:(生成参数)
    ···
    public function ali_trade_pay($order)
    {
    import('.Alipay.aop.AopClient', '', '.php');
    import('.Alipay.aop.request.AlipayTradeAppPayRequest', '', '.php');

        $aop = new \AopClient();
        $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
        $aop->appId = "商户号";
        $aop->rsaPrivateKey = '*****************************';//商户私钥,去头去尾去回车,一行字符串
        $aop->format = "json";
        $aop->charset = "UTF-8";
        $aop->signType = "RSA2";
        $aop->alipayrsaPublicKey = '*******************************';//支付宝公钥,去头去尾去回车,一行字符串
        $request = new \AlipayTradeAppPayRequest();
        $bizcontent = "{\"body\":\"".$order['order_sn']."\"," 
                . "\"subject\": \"".$order['order_sn']."\","
                . "\"out_trade_no\": \"". $order['out_trade_no']."\","//商户订单号
                . "\"timeout_express\": \"30m\"," 
                . "\"total_amount\": \"".$order['order_amount']."\","//支付金额
                . "\"product_code\":\"QUICK_MSECURITY_PAY\""
                . "}";
        
        $request->setNotifyUrl(APP_URL.'cen/Callback/aliNotify/');//回调地址
        $request->setBizContent($bizcontent);
        
        $response = $aop->sdkExecute($request);
        //htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
    
        //$response = htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。 接口类请注释,如果是直接输出页面到Js,可以不注释
        return $response;
    

    }
    ···
    APP端通过接口唤起支付即可
    注意:APP支付 只支持RSA2加密!!!!
    app_id和权限要给
    他的转码JSON,有时候会异常,所以可以改用、

    $arr=[]; //参数条件
    $bizcontent=json_encode($arr);
     $request->setBizContent($bizcontent);
    

    然后注意回调:

    //支付宝回调
    public function aliNotify()
    {
            import('.Alipay.aop.AopClient', '', '.php');
            import('.Alipay.aop.request.AlipayTradeAppPayRequest', '', '.php');
            $aop = new \AopClient();
            $aop->alipayrsaPublicKey = 'x'x'x'x'x'x'x';//支付宝公钥
            $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
            //验证通过
            if($flag == true && ‘验证条件’)
            {
                //根据返回的信息进行订单处理
                $flow = new model\Flow();
                $flow->order_paid($_POST['out_trade_no'],$_POST['trade_no']);
                echo "success"; //支付宝
            }
            else
            {
                echo "fail";    
            }
    }
    

    获取订单号和状态,验签,然后判断状态
    $_POST['trade_status'] == 'TRADE_SUCCESS'
    该结果为成功,通过订单号去查询状态并进行数据库业务逻辑
    注意,支付宝在返回非success下,会多次调用该接口,请做好返回值判断
    同时,请根据订单号去数据库查状态,是否充值过,防止重复入库

    接入完成。。。。。。。。。。。。。

    相关文章

      网友评论

          本文标题:tp5 接入支付宝 APP支付

          本文链接:https://www.haomeiwen.com/subject/bxmzcktx.html