php使用支付宝支付


1、前端css form表单提交

"{{url('payaction')}}" method="post" id="form1" style="display: none"> "hidden" value="12345556" name="order_sn"> "hidden" value="123" name="total_money"> "hidden" value="这是订单名称" name="WIDsubject"> "hidden" value="" name="paytype" id="paytype"> @csrf

2、js

3、后端PHP代码

 // 支付处理
    public function payAction(Request $request){
        // 1.接收数据
        $data["WIDout_trade_no"]  = $request->input("order_sn");// 订单号
        $data['WIDtotal_amount'] = $request->input("total_money");// 总金额
        $data['WIDsubject'] = $request->input("WIDsubject");//订单名称
        $paytype = $request->input("paytype");//类型
        switch ($paytype){
            case "weixin":
                break;
            case "union":
                break;
            case "alipay":
            default:
            // 2.向支付宝接口发送请求
            $url = "http://www.lv.com/alipay/pagepay/pagepay.php";
            $headers = array('Content-Type: application/x-www-form-urlencoded');
            echo  curl($url,$data,$headers);
        }
    }

    public function callback(){
        // 等着支付宝给我跳回来 get
//        dd(request()->all());
        $all = request()->all();
        $total_amount = $all["total_amount"];
        return view("payok",["total_amount"=>$total_amount]);
    }



4、公共函数curl

 function curl($url,$data,$headers){
    $curl = curl_init(); // 启动一个CURL会话
    curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
    curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); // Post提交的数据包
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
    curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    $result = curl_exec($curl); // 执行操作
    if (curl_errno($curl)) {
        echo 'Errno'.curl_error($curl);//捕抓异常
    }
    curl_close($curl); // 关闭CURL会话
    echo($result);

5、插入Alipay文件

6、配置文件