文檔更新太慢,自己都忍不住要抱怨了。可能越來越慢了
Payment 3.0
微信的配置設(shè)置文檔請(qǐng) 點(diǎn)擊這里
項(xiàng)目GitHub地址:https://github.com/helei112g/payment
為了調(diào)用方便,提供了統(tǒng)一的 Client\Charge
類來發(fā)起支付。需要設(shè)置的參數(shù)
參數(shù) | 類型 | 是否必須 | 說明 |
---|---|---|---|
body | boolean | 是 | 商品描述 |
subject | string | 是 | 商品名稱,該參數(shù)最長(zhǎng)為128個(gè)漢字 |
order_no | string | 是 | 商戶網(wǎng)站唯一訂單號(hào) |
timeout_express | string | 是 | 設(shè)置未付款交易的超時(shí)時(shí)間,一旦超時(shí),該筆交易就會(huì)自動(dòng)被關(guān)閉。 |
amount | float | 是 | 該筆訂單的資金總額,單位為RMB-Yuan |
return_param | string | 是 | 附加數(shù)據(jù),在查詢API和支付通知中原樣返回 |
client_ip | string | 是 | 用戶端實(shí)際ip |
terminal_id | string | 是 | 自定義參數(shù),可以為終端設(shè)備號(hào)(門店號(hào)或收銀設(shè)備ID),PC網(wǎng)頁或公眾號(hào)內(nèi)支付可以傳"WEB" |
product_id | string | 否 | 商品ID |
openid | string | 否 | 此參數(shù)為微信用戶在商戶對(duì)應(yīng)appid下的唯一標(biāo)識(shí) |
在上面的參數(shù)中,無論微信的哪一種支付都必須提供:
- body
- subject
- order_no
- timeout_express
- amount
- return_param
- client_ip
- terminal_id
這幾個(gè)參數(shù),是必須進(jìn)行設(shè)置的。
掃碼支付
用戶掃描商戶展示在各種場(chǎng)景的二維碼進(jìn)行支付。這里采用的是模式二。
對(duì)于掃碼支付,必須提供: product_id 參數(shù),該 product_id
是商戶自己平臺(tái)的信息,可用使用sku。
如果掃碼支付時(shí),傳入了 openid
,則掃碼時(shí),只能使用對(duì)應(yīng)的微信掃碼才能完成支付。這里可以根據(jù)自己的需求來決定。
掃碼支付,模式二介紹
刷卡支付
刷卡支付,就是用于用戶向商戶展示二維碼,商戶通過掃碼槍獲取二維碼或者條碼信息,完成收款。與上面的掃碼支付相對(duì)應(yīng)。
auth_code
是必須設(shè)置的參數(shù),掃碼支付授權(quán)碼,設(shè)備讀取用戶微信中的條碼或者二維碼信息
app支付
適用于商戶在移動(dòng)端APP中集成微信支付功能。
商戶APP調(diào)用微信提供的SDK調(diào)用微信支付模塊,商戶APP會(huì)跳轉(zhuǎn)到微信中完成支付,支付完后跳回到商戶APP內(nèi),最后展示支付結(jié)果。
目前微信支付支持手機(jī)系統(tǒng)有:IOS(蘋果)、Android(安卓)和WP(Windows Phone)。
該支付方式,無需額外的參數(shù)信息,只需要上面表格中標(biāo)記的必須參數(shù)。
公眾號(hào)支付
商戶已有H5商城網(wǎng)站,用戶通過消息或掃描二維碼在微信內(nèi)打開網(wǎng)頁時(shí),可以調(diào)用微信支付完成下單購買的流程。
這里記住一定時(shí)微信內(nèi)部打開h5頁面。
openid
是公眾號(hào)支付必須提供的信息,微信用戶在商戶對(duì)應(yīng)appid下的唯一標(biāo)識(shí)。openid如何獲取,可參考獲取openid
這里用到了 openid,也就說明該支付只能由發(fā)起支付請(qǐng)求的公眾號(hào)完成支付。
因此,如果有時(shí)候遇到:“下單賬號(hào)和支付賬號(hào)不一致” ,那么肯定是發(fā)起支付請(qǐng)求的時(shí)候是一個(gè)帳號(hào),而進(jìn)行支付時(shí)變成了另外一個(gè)微信帳號(hào)導(dǎo)致的。
小程序支付與公眾號(hào)支付具有相同的請(qǐng)求參數(shù)
公眾號(hào)調(diào)起支付
小程序調(diào)起支付
h5支付
H5支付是指商戶在微信客戶端外的移動(dòng)端網(wǎng)頁展示商品或服務(wù),用戶在前述頁面確認(rèn)使用微信支付時(shí),商戶發(fā)起本服務(wù)呼起微信客戶端進(jìn)行支付。
主要用于觸屏版的手機(jī)瀏覽器請(qǐng)求微信支付的場(chǎng)景。可以方便的從外部瀏覽器喚起微信支付
微信這個(gè)支付能力,并未完全開放,申請(qǐng)的條件也比較苛刻。不過說實(shí)話也不好用。
參數(shù)跟app支付一樣,不需要添加額外的信息。
代碼
下面代碼實(shí)例一下
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' => '一個(gè)蘋果',
'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 參數(shù),并不是每一個(gè)支付都需要,具體行為閱讀上面文檔
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;
關(guān)于 channel
的說明:
渠道 | 說明 |
---|---|
wx_app | 代表app支付 |
wx_pub | 代表公眾號(hào)支付 |
wx_qr | 代表掃碼支付 |
wx_bar | 代表刷卡支付 |
wx_lite | 代表小程序支付 |
wx_wap | 代表h5支付 |
關(guān)于支付返回的各種數(shù)據(jù),以及相關(guān)支付方式,如果調(diào)起微信支付,請(qǐng)自行查看對(duì)應(yīng)文檔。