[TOC]
## 支付寶原函數
在`AlipaySubmit.class.php` 這個文件中有一個`buildRequestForm` 方法

## 變換函數查看源文件
>1、我們只要將 `type="hidden"` 改為 `type="text"`
2、再將`echo $sHtml;die;` 取消注釋
3、或將 最后一行的 `$sHtml` 的 `dodument.forms` 注釋(可選)
變換后的表單如下:
我們再次訪問就得到一個表單

## 得到的結果

## 格式化源代碼
源代碼如下:
```
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form id='alipaysubmit' name='alipaysubmit' action='https://mapi.alipay.com/gateway.do?_input_charset='utf-8' method='get'>
<input type='text' name='out_trade_no' value='1510110173'/>
<input type='text' name='partner' value='2088821002087646'/>
<input type='text' name='price' value='2'/>
<input type='text' name='seller_email' value='sxqiboxx@163.com'/>
<input type='text' name='service' value='create_direct_pay_by_user'/>
<input type='text' name='subject' value='測試'/>
<input type='text' name='sign' value='5792d2030d44b9f785457e7b70f3c9ec'/>
<input type='text' name='sign_type' value='MD5'/>
</form>
<script>
document.forms['alipaysubmit'].submit();
</script>
</body>
</html>
```
## 新建文本并訪問
注意:這個`sign`值每一次都是變化的,因此不能上述的`html`表單僅用于測試一次,不能多次。如果要調試話,還得需要在`PHP`中調試!
直接訪問

很奇怪吧,支付就這么搞定了!靜態頁面支付!哈哈……
## 參數分析
### 每一次的值都是變化的
這個`sign`值每一次都是變化的,因此不能上述的`html`表單僅用于測試一次,不能多次。如果要調試話,還得需要在`PHP`中調試!
```
<input type='text' name='sign' value='e125938b1ab8eb1844a4f247eca6d45a' />
```
### 分析必須元素
#### 總結
>1、提交類配置4個
2、參數數組6個
3、其中兩個參數都有(parenter,seller_email)
4、提交時一共有8個參數
#### 1、支付寶各接口請求提交類 (簡稱:提交類配置)
> 這4個是必須元素
```
$config = [
'partner' => '2088821002087646', // partner 從支付寶商戶版個人中心獲取
'seller_email' => 'sxqiboxx@163.com', // email 從支付寶商戶版個人中心獲取
'key' => 'n39lhfdyynkyjdifkkudzuhv8d8ljv34', // key 從支付寶商戶版個人中心獲取
'sign_type' => strtoupper(trim('MD5')), // 可選md5 和 RSA
];
$alipay=new \AlipaySubmit($config);
```
#### 2、生成要請求給支付寶的參數數組(簡稱:參數數組)
> 這6個元素是必備的
```
$data=[
//配置中的
"partner" => $config['partner'], // partner 從支付寶商戶版個人中心獲取
"seller_email" => $config['seller_email'],
//接口名稱
"service" => "create_direct_pay_by_user", // 接口名稱 固定設置為create_direct_pay_by_user
//自己傳參的
"out_trade_no" => $order['out_trade_no'], // 訂單號
"price" => $order['price'], // 訂單價格單位為元
"subject" => $order['subject'] // 商品名稱商品的標題/交易標題/訂單標 題/訂單關鍵字等
];
$new=$alipay->buildRequestPara($data);
```
注:這里的 `price` 也可以用 `total_fee` 來代替!
## 生成必須的表單
> 一共 8 個參數!必須 !
```
<form id='alipaysubmit' name='alipaysubmit' action='https://mapi.alipay.com/gateway.do?_input_charset='utf-8' method='get'>
<input type='text' name='out_trade_no' value='1510110173'/>
<input type='text' name='partner' value='2088821002087646'/>
<input type='text' name='price' value='2'/>
<input type='text' name='seller_email' value='sxqiboxx@163.com'/>
<input type='text' name='service' value='create_direct_pay_by_user'/>
<input type='text' name='subject' value='測試'/>
<input type='text' name='sign' value='5792d2030d44b9f785457e7b70f3c9ec'/>
<input type='text' name='sign_type' value='MD5'/>
</form>
<script>
//document.forms['alipaysubmit'].submit();
</script>
```
## 沒有哪些參數會報什么錯