支付宝支付

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 () {
     $("#form1").submit(); // 提交表单</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、公共函数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、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();
     }
复制代码

 

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

5.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){
      
     }
     }
复制代码

 

5.3、修改方法名


6.插入Alipay文件

7、配置文件

posted @   海燕心海  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示