1. 程式人生 > >Payment:支付寶手機網站支付教程

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() 函式的目的還是為了轉義,正式使用時,請注意。

關於非同步通知部分,會有專門的文章講解,這裡暫時略過。請關注後面的文章。

如果你有不清楚的或者願意交流的地方,請聯絡我:

郵箱[email protected]

如果你覺得這個專案有幫助到你,請打賞我,讓我有動力持續下去 左邊微信,右邊支付寶

image

ps: 一般性的問題請大家可以先查資料,如果實在無法解決找我吧(不免費服務)。

關於沙箱

對於支付寶的沙箱功能,我得再囉嗦幾句。先把我配置的沙箱帳號貢獻出來。方便大家測試

商家資訊

買家資訊

當前沙箱的買家帳號,只能使用 android 版本進行登陸。

沙箱錢包只支援掃一掃、付款碼、門店詳情頁功能,其餘功能不提供

image

所以大家,不要在使用我提供的沙箱帳號時,用你們真實的支付寶帳號去支付,那樣子是不會成功的。沙箱的所有功能,都只能使用上面的沙箱帳號去完成。