Payment:微信支付發起支付請求文件
文件更新太慢,自己都忍不住要抱怨了。可能越來越慢了
Payment 3.0
微信的配置設定文件請 點選這裡
為了呼叫方便,提供了統一的 Client\Charge
類來發起支付。需要設定的引數
引數 | 型別 | 是否必須 | 說明 |
---|---|---|---|
body | boolean | 是 | 商品描述 |
subject | string | 是 | 商品名稱,該引數最長為128個漢字 |
order_no | string | 是 | 商戶網站唯一訂單號 |
timeout_express | string | 是 | 設定未付款交易的超時時間,一旦超時,該筆交易就會自動被關閉。 |
amount | float | 是 | 該筆訂單的資金總額,單位為RMB-Yuan |
return_param | string | 是 | 附加資料,在查詢API和支付通知中原樣返回 |
client_ip | string | 是 | 使用者端實際ip |
terminal_id | string | 是 | 自定義引數,可以為終端裝置號(門店號或收銀裝置ID),PC網頁或公眾號內支付可以傳”WEB” |
product_id | string | 否 | 商品ID |
openid | string | 否 | 此引數為微信使用者在商戶對應appid下的唯一標識 |
在上面的引數中,無論微信的哪一種支付都必須提供:
- body
- subject
- order_no
- timeout_express
- amount
- return_param
- client_ip
- terminal_id
這幾個引數,是必須進行設定的。
掃碼支付
使用者掃描商戶展示在各種場景的二維碼進行支付。這裡採用的是模式二。
對於掃碼支付,必須提供: product_id 引數,該 product_id
是商戶自己平臺的資訊,可用使用sku。
如果掃碼支付時,傳入了 openid
,則掃碼時,只能使用對應的微信掃碼才能完成支付。這裡可以根據自己的需求來決定。
刷卡支付
刷卡支付,就是用於使用者向商戶展示二維碼,商戶通過掃碼槍獲取二維碼或者條碼資訊,完成收款。與上面的掃碼支付相對應。
auth_code
是必須設定的引數,掃碼支付授權碼,裝置讀取使用者微信中的條碼或者二維碼資訊
app支付
適用於商戶在移動端APP中整合微信支付功能。
商戶APP呼叫微信提供的SDK呼叫微信支付模組,商戶APP會跳轉到微信中完成支付,支付完後跳回到商戶APP內,最後展示支付結果。
目前微信支付支援手機系統有:IOS(蘋果)、Android(安卓)和WP(Windows Phone)。
該支付方式,無需額外的引數資訊,只需要上面表格中標記的必須引數。
公眾號支付
商戶已有H5商城網站,使用者通過訊息或掃描二維碼在微信內開啟網頁時,可以呼叫微信支付完成下單購買的流程。
這裡記住一定時微信內部開啟h5頁面。
openid
是公眾號支付必須提供的資訊,微信使用者在商戶對應appid下的唯一標識。openid如何獲取,可參考獲取openid
這裡用到了 openid,也就說明該支付只能由發起支付請求的公眾號完成支付。
因此,如果有時候遇到:“下單賬號和支付賬號不一致” ,那麼肯定是發起支付請求的時候是一個帳號,而進行支付時變成了另外一個微信帳號導致的。
小程式支付與公眾號支付具有相同的請求引數
h5支付
H5支付是指商戶在微信客戶端外的移動端網頁展示商品或服務,使用者在前述頁面確認使用微信支付時,商戶發起本服務呼起微信客戶端進行支付。
主要用於觸屏版的手機瀏覽器請求微信支付的場景。可以方便的從外部瀏覽器喚起微信支付
微信這個支付能力,並未完全開放,申請的條件也比較苛刻。不過說實話也不好用。
引數跟app支付一樣,不需要新增額外的資訊。
程式碼
下面程式碼例項一下
use Payment\Common\PayException;
use Payment\Client\Charge;
$config = require_once('./wxconfig.php');// 微信的配置資訊
$channel = 'wx_app';// wx_app wx_pub wx_qr wx_bar wx_lite wx_wap
$payData = [
'body' => '一個蘋果',
'subject' => '牛逼公司--付款吧',
'order_no' => 'NB12312355',
'timeout_express' => '1489241888',
'amount' => '100',
'return_param' => 'buy some',
'client_ip' => '127.0.0.1',
'terminal_id' => 'WEB',
//'product_id' => '888',
//'openid' => 'xxxxxxx',
];
// product_id openid 引數,並不是每一個支付都需要,具體行為閱讀上面文件
try {
$str = Charge::run($channel, $config, $payData);
} catch (PayException $e) {
// 異常處理
exit;
}
if (is_array($ret)) {
var_dump($ret);
} else {
header('Location:' . $ret);
echo htmlspecialchars($ret);
}
exit;
關於 channel
的說明:
渠道 | 說明 |
---|---|
wx_app | 代表app支付 |
wx_pub | 代表公眾號支付 |
wx_qr | 代表掃碼支付 |
wx_bar | 代表刷卡支付 |
wx_lite | 代表小程式支付 |
wx_wap | 代表h5支付 |
關於支付返回的各種資料,以及相關支付方式,如果調起微信支付,請自行檢視對應文件。