1. 程式人生 > >Payment:微信支付發起支付請求文件

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支付

關於支付返回的各種資料,以及相關支付方式,如果調起微信支付,請自行檢視對應文件。