支付寶作為主流第三方支付平台,整合至自有網站是電商開發的必修課。本文以經典版支付寶接口為例,詳細拆解配置檔、核心類別 alipay、支付提交頁 pay.php 三大模組,提供可直接部署的完整程式碼。
alipay_config.php:集中管理商戶資訊、費率、回調網址等參數alipay.php:封裝簽名生成、參數組裝、跳轉網址產生邏輯pay.php:接收訂單表單、呼叫核心類別、產生支付寶跳轉連結alipay_config.php<?php
// alipay_config.php
$interfaceurl = "https://www.alipay.com/payto:"; // 支付寶網關
$sitename = "您的網站名稱";
$weburl = "https://您的網站網址";
$o_fee = "0.00"; // 平郵費用
$e_fee = "0.00"; // 快遞費用
$selleremail = ""; // 支付寶賣家帳號 (Email)
$payalikey = ""; // 安全校驗碼 (Key)
$imgurl = "pay.gif"; // 支付按鈕圖片
$imgtitle = "使用支付寶購買"; // 按鈕提示文字
?>
alipay.phpgeturl() 方法接收 23 個參數,組裝成支付寶要求的查詢字串,並以 MD5(參數串 + key) 產生簽名 ac:
<?php
require_once("alipay_config.php");
class alipay {
public function geturl($s1,$s2,$s3,$s4,$s5,$s6,$s7,$s8,$s9,$s10,
$s11,$s12,$s13,$s14,$s15,$s16,$s17,$s18,
$s19,$s20,$s21,$s22,$s23) {
$parameter = array(
'cmd' => $s1, 'subject' => $s2,
'body' => $s3, 'order_no' => $s4,
'price' => $s5, 'url' => $s6,
'type' => $s7, 'number' => $s8,
'transport' => $s9, 'ordinary_fee' => $s10,
'express_fee' => $s11, 'readonly' => $s12,
'buyer_msg' => $s13, 'seller' => $s14,
'buyer' => $s15, 'buyer_name' => $s16,
'buyer_address' => $s17, 'buyer_zipcode' => $s18,
'buyer_tel' => $s19, 'buyer_mobile' => $s20,
'partner' => $s21
);
$url = $s22 . $s14 . "?"; // gateway + seller_email
$acsouce = '';
foreach ($parameter as $key => $value) {
if ($value) {
$url .= $key . "=" . urlencode($value) . "&";
$acsouce .= $key . $value;
}
}
$url .= 'ac=' . md5($acsouce . $s23); // s23 = $payalikey
return $url;
}
}
?>
pay.php接收 POST 表單資料,組裝參數呼叫 alipay::geturl(),最後輸出確認頁與「前往支付寶」按鈕:
<?php
error_reporting(0);
// 接收表單欄位
$aliname = $_POST["aliname"];
$alizipcode = $_POST["alizipcode"];
$aliphone = $_POST["aliphone"];
$aliaddress = $_POST["aliaddress"];
$aliorder = $_POST["aliorder"];
$alimailtype = $_POST["alimailtype"];
$alimoney = $_POST["alimoney"];
$alimob = $_POST["alimob"];
$alibody = $_POST["alibody"];
require_once("alipay_config.php");
require_once("alipay.php");
$cmd = '0001';
$subject = "訂單號:".$aliorder;
$body = '商品介紹';
$order_no = $aliorder;
$price = $alimoney;
$url = 'https://您的網址'; // 回調網址
$type = '1';
$number = '1';
$transport = $alimailtype;
$ordinary_fee = '0.00';
$express_fee = '0.00';
$readonly = 'true';
$buyer_msg = $alibody;
$seller = $selleremail;
$buyer = '';
$buyer_name = $aliname;
$buyer_address = $aliaddress;
$buyer_zipcode = $alizipcode;
$buyer_tel = $aliphone;
$buyer_mobile = $alimob;
$partner = '2088002008096997'; // 合作夥伴 ID
$geturl = new alipay();
$link = $geturl->geturl(
$cmd,$subject,$body,$order_no,$price,$url,$type,$number,$transport,
$ordinary_fee,$express_fee,$readonly,$buyer_msg,$seller,$buyer,
$buyer_name,$buyer_address,$buyer_zipcode,$buyer_tel,$buyer_mobile,$partner,
$interfaceurl,$payalikey
);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>支付寶付款確認頁</title>
</head>
<body>
<table width="492" align="center" border="0" cellpadding="0" cellspacing="0" class="border">
<tr><td class="topbg" height="30"><strong>支付寶付款確認</strong></td></tr>
<tr>
<td>
<table width="100%" align="center" bgcolor="#ffffff">
<tr class="tdbg"><td width="14%">訂單號碼:</td><td><?= $aliorder ?></td></tr>
<tr class="tdbg"><td>收貨人:</td><td><?= $aliname ?></td></tr>
<tr class="tdbg"><td>付款金額:</td><td><b><?= $alimoney ?></b></td></tr>
<tr class="tdbg"><td>收貨地址:</td><td><?= $aliaddress ?></td></tr>
<tr class="tdbg"><td>物流方式:</td><td><?= $alimailtype ?> (1.平郵 2.快遞 3.虛擬)</td></tr>
<tr class="tdbg"><td>聯系電話:</td><td><?= $aliphone ?></td></tr>
<tr class="tdbg"><td>郵政編碼:</td><td><?= $alizipcode ?></td></tr>
<tr class="tdbg"><td>手機號碼:</td><td><?= $alimob ?></td></tr>
<tr class="tdbg"><td>客戶留言:</td><td><?= $alibody ?></td></tr>
<tr class="tdbg">
<td></td>
<td>
<input type="button" onclick="history.go(-1)" value="返回修改訂單">
<a href="<?= $link ?>" target="_blank">
<img src="<?= $imgurl ?>" alt="<?= $imgtitle ?>" border="0">
</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body></html>
notify_url 驗證簽名、更新訂單狀態、防重複處理。掌握核心參數組裝與簽名邏輯,即可靈活對接支付寶各類支付產品。