支付宝支付


1、前端css form表单提交

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);
        }
    }

4、callback返回

public function callback(){
        require_once("./alipay/config.php");
        require_once './alipay/pagepay/service/AlipayTradeService.php';
        $all = request()->all();
        $alipaySevice = new \AlipayTradeService($config);
        $result = $alipaySevice->check($all);
        if($result){
            $total_amount = $all["total_amount"];
            return view("payok",["total_amount"=>$total_amount]);
        }else{
            return view("payfail");
        }
        // 等着支付宝给我跳回来 get
//        dd(request()->all());
//        $all = request()->all();
    }

4.1、callback添加一下代码:校验、防止get返回值被修改

4.2、notify

查看代码
public function notify(){
        require_once("./alipay/config.php");
        require_once './alipay/pagepay/service/AlipayTradeService.php';
        $all = request()->all();
        $alipaySevice = new \AlipayTradeService($config);
        $result = $alipaySevice->check($all);
        if($result){

        }
    }

4.3、修改方法名

5、公共函数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);
}

6、插入Alipay文件

7、配置文件