Payment:微信支付發起支付請求文檔

文檔更新太慢,自己都忍不住要抱怨了。可能越來越慢了

Payment 3.0 微信的配置設置文檔請 點擊這裏

項目GitHub地址https://github.com/helei112g/payment

爲了調用方便,提供了統一的 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支付

關於支付返回的各種數據,以及相關支付方式,如果調起微信支付,請自行查看對應文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章