支付宝支付

Posted on 2022-03-15 19:38  君子不卿  阅读(65)  评论(0编辑  收藏  举报

1、前端css form表单提交

<form action="{{url('payaction')}}" method="post" id="form1" style="display: none">
    <input type="hidden" value="202021256412325" name="order_sn">
    <input type="hidden" value="1890" name="total_money">
    <input type="hidden" value="这是订单名称" name="WIDsubject">
    <input type="hidden" value="" name="paytype" id="paytype">
    @csrf
</form>

2、js

<script>
    $(".submit").click(function () {
        var paytype = "";
        $(".payType li").each(function () {
            console.log( $(this).css("border"))
            // 如果当期对象的css 中的属性和"2px solid rgb(228, 57, 60)" 相等的话,就获取这个对象中paytype的值
            if($(this).css("border") == "2px solid rgb(228, 57, 60)"){
                paytype = $(this).attr("paytype");
            }
        });
        $("#paytype").val(paytype);
        $("#order_sn").val(Math.floor(Math.random()*1000));
        $("#total_money").val(Math.floor(Math.random()*100));
        $("#form1").submit(); // 提交表单
        // console.log(paytype);
        // if(paytype ==""){
        //     alert("请选择支付方式");
        //     return false;
        // }
        // 1.支付方式(有)  2. 订单编号(有) 3.订单金额(有) 4.订单描述(商品名称) 不要在用了
        {{--$.post("{{url('payaction')}}",{paytype:paytype,order_sn:'2045545114212212211254',total_money:0.01,WIDsubject:"好东西",_token:'{{csrf_token()}}'});--}}
    });
</script>

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、配置文件

Copyright © 2024 君子不卿
Powered by .NET 9.0 on Kubernetes

//评论