支付宝支付
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){ } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?