項(xiàng)目GitHub地址:https://github.com/helei112g/payment
微信支付個(gè)人覺得在帳號(hào)設(shè)置上有些麻煩钮孵,帳號(hào)太多啦绷柒,支付寶目前就是一個(gè)應(yīng)用基本涵蓋了所有的接口開發(fā)。
可能是由于微信支付的后端是財(cái)付通乐埠,反正咱們寫代碼的,也別管那么多。理清楚各配置的關(guān)系茅特,然后寫出高質(zhì)量的代碼就好。
關(guān)于如何申請(qǐng)微信支付棋枕,只講兩個(gè)問題白修,服務(wù)號(hào)支付能力的申請(qǐng)?jiān)诠娞?hào)后后臺(tái)申請(qǐng),app應(yīng)用的支付能力申請(qǐng)?jiān)陂_發(fā)者中心申請(qǐng)重斑。其他細(xì)節(jié)請(qǐng)自行查詢兵睛。
登陸微信商戶平臺(tái):https://pay.weixin.qq.com
拿到微信給的商戶號(hào)后,登陸商戶平臺(tái),點(diǎn)擊【賬戶中心】進(jìn)入【API安全】
會(huì)看到下面的截圖:
微信支付發(fā)起請(qǐng)求的數(shù)據(jù)需要進(jìn)行簽名祖很,簽名的密鑰就是在這里設(shè)置笛丙,設(shè)置時(shí)候請(qǐng)記錄一下。等會(huì)配置中會(huì)需要假颇。
下載微信的安全證書胚鸯,相關(guān)說明看這里
配置文件
return [
'app_id' => '應(yīng)用ID',
'mch_id' => '商戶id',
'md5_key' => '剛剛設(shè)置的密鑰',
'app_cert_pem' => 'apiclient_cert.pem',
'app_key_pem' => 'apiclient_key.pem',
'sign_type' => 'MD5',// MD5 HMAC-SHA256
'limit_pay' => [
//'no_credit',
],
'fee_type' => 'CNY',// 貨幣類型 當(dāng)前僅支持該字段
'notify_url' => 'https://helei112g.github.io/',
'redirect_url' => 'https://helei112g.github.io/',
'return_raw' => false,
];
下面表格中 是否必須 列如果標(biāo)記為 是
,則該項(xiàng)必須設(shè)置笨鸡,否則sdk將無法得到結(jié)果蠢琳。
參數(shù) | 類型 | 是否必須 | 說明 |
---|---|---|---|
app_id | string | 是 | 應(yīng)用id,下面會(huì)詳細(xì)解釋 |
mch_id | string | 是 | 微信支付分配的商戶號(hào) |
md5_key | string | 是 | 用戶在商戶中心設(shè)置的api密鑰 |
sign_type | string | 是 | 簽名類型镜豹,默認(rèn)為MD5傲须,支持HMAC-SHA256和MD5。 |
app_cert_pem | string | 是 | 證書pem格式 |
app_key_pem | string | 是 | 證書密鑰pem格式 |
limit_pay | array | 否 | 上傳此參數(shù)no_credit--可限制用戶不能使用信用卡支付 |
fee_type | string | 否 | 默認(rèn)人民幣:CNY |
notify_url | string | 是 | 異步通知的地址 |
redirect_url | string | 否 | 回調(diào)頁面地址 |
return_raw | boolean | 否 | 是否返回微信原始數(shù)據(jù) |
app_id
: 對(duì)于公眾號(hào)支付趟脂,是微信支付分配的公眾賬號(hào)ID泰讽,如果是app支付則是微信開放平臺(tái)審核通過的應(yīng)用APPID
微信支付接口中,一定要注意區(qū)分不同的帳號(hào)類別
- 公眾號(hào)支付昔期,需要對(duì)應(yīng)服務(wù)號(hào)在公眾號(hào)后臺(tái)申請(qǐng)已卸,該帳號(hào)無法用來進(jìn)行app支付
- app支付,微信開放平臺(tái)審核通過的應(yīng)用APPID硼一,無法用來進(jìn)行公眾號(hào)支付
- 小程序支付也是一個(gè)獨(dú)立的帳號(hào)累澡,微信分配的小程序ID
- 掃碼支付,可以使用app支付的帳號(hào)般贼,也可使用公眾支付的帳號(hào)
- 刷卡支付愧哟,兩個(gè)帳號(hào)也可以使用
由于我沒有小程序的帳號(hào),沒辦法測它是否可以用于掃碼支付與刷卡支付哼蛆,有測過的朋友請(qǐng)告訴我一下(微信號(hào):helei543345
)
mch_id
: 商戶號(hào)蕊梧,申請(qǐng)商戶號(hào)成功后,騰訊給你發(fā)的郵件里邊有
md5_key
: 在商戶中心自己設(shè)置的api密鑰腮介,主要用來簽名支付數(shù)據(jù)
sign_type
: 簽名方式肥矢,當(dāng)前微信支持HMAC-SHA256和MD5,默認(rèn)使用 MD5
app_cert_pem
: 從apiclient_cert.p12中導(dǎo)出證書部分的文件叠洗,為pem格式甘改,請(qǐng)妥善保管不要泄漏和被他人復(fù)制
app_key_pem
: 從apiclient_key.pem中導(dǎo)出密鑰部分的文件,為pem格式
關(guān)于 app_cert_pem
與 app_key_pem
的詳情請(qǐng)看這里 : https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_3
limit_pay
: no_credit--指定不能使用信用卡支付 灭抑,當(dāng)前微信僅這一個(gè)參數(shù)十艾,設(shè)置了,支付時(shí)名挥,用戶無法使用信用卡
fee_type
: 貨幣類型疟羹,默認(rèn)是人民幣主守,其他可選值看這里:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=4_2
notify_url
: 異步接收微信支付結(jié)果通知的回調(diào)地址,通知url必須為外網(wǎng)可訪問的url榄融,不能攜帶參數(shù)参淫。
redirect_url
: 只有在使用h5支付時(shí),才需要設(shè)置愧杯,也可以選擇不設(shè)置涎才。用來控制在h5中支付成功后,跳轉(zhuǎn)的頁面力九。
return_raw
: 是否返回微信的原始數(shù)據(jù)耍铜,默認(rèn)為false,建議設(shè)置為true
- 該參數(shù)如果設(shè)置為
false
跌前,sdk內(nèi)部會(huì)映射一些key棕兼,并且把微信的金額處理為元 - 如果參數(shù)值為
true
,則只對(duì)異步數(shù)據(jù)進(jìn)行簽名檢查抵乓,檢查通過伴挚,返回一個(gè)數(shù)據(jù)類型的數(shù)據(jù)(微信原始為xml),其中包含的key是微信本身的灾炭,并且金額相關(guān)的單位都是分
微信的配置文件相對(duì)來說比較簡單茎芋,只是它的帳號(hào)體系有點(diǎn)多,大家在使用時(shí)蜈出,根據(jù)自己使用不同支付田弥,讀取不同配置,來完成相互間的切換铡原。
另外偷厦,如果還需要轉(zhuǎn)賬或者發(fā)紅包,請(qǐng)?jiān)O(shè)置以下圖中的信息眷蜈。
今天晚上公司部署新項(xiàng)目沪哺,在等待過程中把微信的配置文檔搞定沈自。