支付寶的H5支付體驗真不錯(支付寶叫他手機網站支付)。
反觀微信支付幹嘛要把H5支付藏起來?而且體驗還那麼差。
Payment 3.0
支付寶的配置設置文檔請 點擊這裏
項目GitHub地址:https://github.com/helei112g/payment
從本篇開始,將用支付寶的沙箱方式進行演示,在項目的 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
版本進行登陸。
沙箱錢包只支持掃一掃、付款碼、門店詳情頁功能,其餘功能不提供
所以大家,不要在使用我提供的沙箱帳號時,用你們真實的支付寶帳號去支付,那樣子是不會成功的。沙箱的所有功能,都只能使用上面的沙箱帳號去完成。