Payment:支付寶手機網站支付教程
支付寶的H5支付體驗真不錯(支付寶叫他手機網站支付)。
反觀微信支付幹嘛要把H5支付藏起來?而且體驗還那麼差。
Payment 3.0
支付寶的配置設定文件請 點選這裡
從本篇開始,將用支付寶的沙箱方式進行演示,在專案的 payment/examples
中我已經提供了我的沙箱帳號。
新版介面已經同時支援 RSA 與 RSA2 。更換籤名方式時,注意公鑰的變化,在demo中我進行了註釋。
另外支付寶為了提升支付體驗,可以將 手機網站支付轉Native支付
,對於混合應用是非常好的體驗。這部分伺服器端的業務邏輯無須變動,只需要客戶端更新到最新的 詳情地址
還是先講手機網站支付需要設定哪些引數,後面用程式碼演示。程式碼部分大家會發現跟 即時到賬
支付的使用完全一致。他們的不同之處僅僅是下單引數的區別。
引數 | 型別 | 是否必須 | 說明 |
---|---|---|---|
body | boolean | 是 | 商品描述 |
subject | string | 是 | 商品名稱,該引數最長為128個漢字 |
order_no | string | 是 | 商戶網站唯一訂單號 |
timeout_express | string | 是 | 設定未付款交易的超時時間,一旦超時,該筆交易就會自動被關閉。 |
amount | float | 是 | 該筆訂單的資金總額,單位為RMB-Yuan |
return_param | string | 是 | 公用回傳引數 |
goods_type | string | 否 | 商品主型別:0—虛擬類商品,1—實物類商品 預設為1 |
store_id | string | 否 | 商戶門店編號 |
body
主要是對商品的描述,根據自己的業務寫就好,不過不要用一些非常特殊的字元,支付寶可能會進行一些處理,導致你的結果與預期不一樣
subject
可以寫一下商品名稱資訊,主要是方便支付寶後臺對賬時檢視
order_no
自己生成的訂單號,每次下單的單號必須唯一。也就是說:同一個 order_no 他的其他下單資料不能發生變化,價格、名稱等等。如果有變化,需要重新生成一個訂單號。
timeout_express
訂單過期時間,很簡單,你希望在那一刻過期,就寫那個點的時間戳。只會精確到分鐘
amount
訂單的金額,就是使用者實際需要支付的金額。
return_param
希望支付寶非同步通知時,原樣返回給你的資料,同樣注意避免一些特殊字元
goods_type
用來區分購買的是實際商品還是虛擬商品,虛擬商品不需要物流發貨,並且 虛擬類商品不支援使用花唄渠道
store_id
門店編號,這部分資料主要是支付寶為了將業務深化到線下而提供的,如果用不到,不設定就好。
程式碼呼叫。
use Payment\Common\PayException;
use Payment\Client\Charge;
$config = require_once('./aliconfig.php');// 支付寶的配置資訊
$channel = 'ali_wap';
$payData = [
'body' => '一個蘋果',
'subject' => '牛逼公司--付款吧',
'order_no' => 'NB12312355',
'timeout_express' => '1489241888',
'amount' => '100',
'return_param' => 'buy some',
'goods_type' => 1,
'store_id' => '',// 沒有就不設定
];
try {
$payUrl = Charge::run($channel, $config, $payData);
} catch (PayException $e) {
// 異常處理
exit;
}
echo htmlspecialchars($payUrl);
大家在這裡可以回到即時到賬的部分對比一下,呼叫程式碼完全一致。唯一的差別就是 payData
中的些微差別。
多了一個 store_id
引數。少了另外兩個引數: qr_mod paymethod
後面的幾種支付在呼叫上也是如此沒有差別,變化主要時圍繞 payData
進行的。
當然這裡最重要的變化是:$channel
。Payment 知道使用那種支付方式,完全是根據這個引數來設定的。因此一定要設定正確。再把對應的資訊貼出來。方便大家檢視。
名稱 | 含義 |
---|---|
ali_web | 即時到賬 |
ali_app | app支付(移動支付) |
ali_wap | H5支付(手機網站支付、wap支付) |
ali_qr | 當面付中的掃碼支付 |
ali_bar | 當面付中的條碼支付 |
另外這裡返回的依然是一個url。大家根據自己的業務進行合理的處理。htmlspecialchars()
函式的目的還是為了轉義,正式使用時,請注意。
關於非同步通知部分,會有專門的文章講解,這裡暫時略過。請關注後面的文章。
如果你有不清楚的或者願意交流的地方,請聯絡我:
如果你覺得這個專案有幫助到你,請打賞我,讓我有動力持續下去 左邊微信,右邊支付寶:
ps: 一般性的問題請大家可以先查資料,如果實在無法解決找我吧(不免費服務)。
關於沙箱
對於支付寶的沙箱功能,我得再囉嗦幾句。先把我配置的沙箱帳號貢獻出來。方便大家測試
商家資訊
- 商家賬號 [email protected]
- 商戶UID 2088102169252684
- appId 2016073100130857
買家資訊
- 買家賬號 [email protected]
- 登入密碼 111111
- 支付密碼 111111
當前沙箱的買家帳號,只能使用 android
版本進行登陸。
沙箱錢包只支援掃一掃、付款碼、門店詳情頁功能,其餘功能不提供
所以大家,不要在使用我提供的沙箱帳號時,用你們真實的支付寶帳號去支付,那樣子是不會成功的。沙箱的所有功能,都只能使用上面的沙箱帳號去完成。