微信app支付服务端开发记录
微信APP支付服務(wù)端
調(diào)用接口需要注意事項(xiàng):
1、簽名:需要全部參數(shù)參加簽名,空值去掉。(實(shí)際傳遞了什么參數(shù)需要,就根據(jù)實(shí)際參數(shù)進(jìn)行簽名)
2、簽名參數(shù):appid是申請(qǐng)支付功能的app對(duì)于的ID,key是app請(qǐng)求支付功能后,微信會(huì)發(fā)郵件到郵箱中,進(jìn)行API安全密鑰設(shè)置的,商戶密鑰。如
key設(shè)置路徑:微信商戶平臺(tái)(pay.weixin.qq.com)-->賬戶設(shè)置-->API安全-->密鑰設(shè)置
簽名規(guī)范(https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3)
3、total_fee:金額參數(shù)需要根據(jù)實(shí)際的金額乘以100。如(金額為?1.01?實(shí)際傳遞金額為?101)
4、參數(shù)需要轉(zhuǎn)換成xml格式進(jìn)行post請(qǐng)求。
5、下單成功后微信返回的sign是不可以用的,需要根據(jù)app端請(qǐng)求微信支付的具體參數(shù)進(jìn)行二次簽名,二次簽名后的sign才可以調(diào)用app微信端的支付。如下:
app端實(shí)際請(qǐng)求微信支付需要傳參:
?二次簽名字段:
appid=wx775ce3aaa89cf253&noncestr=maQwDx4Zj3lvVsJj&package=Sign=WXPay&partnerid=1419817202&prepayid=wx201612141017166aad40f8980843856892&tamp=1481681836&key=QSLNAIXuhPOFUemvoxGpGoBMSaSujyGC?
需要根據(jù)這些參數(shù)進(jìn)行簽名。
6、需要注意的是微信分為 公眾開(kāi)發(fā)平臺(tái)(公眾號(hào)之類(lèi)的開(kāi)發(fā),web頁(yè)面開(kāi)發(fā),jsapi,微信js,掃碼支付),微信開(kāi)發(fā)平臺(tái)(app之類(lèi)的開(kāi)發(fā),第三方登錄,分享,app支付),微信商戶號(hào)(用于微信支付功能)
7、微信下配置的域名必須都是備案過(guò)的。(萬(wàn)網(wǎng)備案時(shí)用阿里的云服務(wù)器,域名解析時(shí)必須用阿里的云服務(wù)器)
一、調(diào)用統(tǒng)一下單接口(https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1)
實(shí)際請(qǐng)求參數(shù)如下:
<?xml version="1.0" encoding="utf-8"?>
<xml>
? <appid>wx775ce3aaa89cf253</appid>
? <mch_id>1419817202</mch_id>
? <device_info>731A1F2A-15C4-4DF7-835A-23C8C3887F88</device_info>
? <nonce_str>0A6645366761499891E3A8756E298964</nonce_str>
? <sign>F2B37E65FAFC4529A50BE750743055A0</sign>
? <sign_type>MD5</sign_type>
? <body>test</body>
? <detail>{"goods_id":"161212015111","wxpay_goods_id":"100111","goods_name":"test name","quantity":1,"price":102,"goods_category":"333","body":"iphone"}</detail>
? <attach>test</attach>
? <out_trade_no>1481683892</out_trade_no>
? <fee_type>CNY</fee_type>
? <total_fee>102</total_fee>
? <spbill_create_ip>127.0.0.1</spbill_create_ip>
? <goods_tag>WXG</goods_tag>
? <notify_url>http://xiaox.iok.la/temp/pay/notify</notify_url>
? <trade_type>APP</trade_type>
</xml>
下單成功后返回參數(shù)
<xml>
? <return_code><![CDATA[SUCCESS]]></return_code>
? <return_msg><![CDATA[OK]]></return_msg>
? <appid><![CDATA[wx775ce3aaa89cf253]]></appid>
? <mch_id><![CDATA[1419817202]]></mch_id>
? <device_info><![CDATA[731A1F2A-15C4-4DF7-835A-23C8C3887F88]]></device_info>
? <nonce_str><![CDATA[GqJnGt03ksuIi1AJ]]></nonce_str>
? <sign><![CDATA[2BC977FCC1824D73B3C9AECE307336C6]]></sign>
? <result_code><![CDATA[SUCCESS]]></result_code>
? <prepay_id><![CDATA[wx2016121411035815217a5cd50739410022]]></prepay_id>
? <trade_type><![CDATA[APP]]></trade_type>
</xml>
支付成功后提交返回的參數(shù)
<xml><appid><![CDATA[wx775ce3aaa89cf253]]></appid>
<attach><![CDATA[test]]></attach>
<bank_type><![CDATA[CFT]]></bank_type>
<cash_fee><![CDATA[102]]></cash_fee>
<device_info><![CDATA[731A1F2A-15C4-4DF7-835A-23C8C3887F88]]></device_info>
<fee_type><![CDATA[CNY]]></fee_type>
<is_subscribe><![CDATA[N]]></is_subscribe>
<mch_id><![CDATA[1419817202]]></mch_id>
<nonce_str><![CDATA[7A78C9E96695422497BD81F8A0BA5235]]></nonce_str>
<openid><![CDATA[oii8LwoUWnbeNa8RBrpMXGZSdVI4]]></openid>
<out_trade_no><![CDATA[1481681123]]></out_trade_no>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[6A6B5A26DC9FD8EEE86E24F1CC184975]]></sign>
<time_end><![CDATA[20161214101030]]></time_end>
<total_fee>102</total_fee>
<trade_type><![CDATA[APP]]></trade_type>
<transaction_id><![CDATA[4010062001201612142738599626]]></transaction_id>
</xml>
應(yīng)用場(chǎng)景
商戶系統(tǒng)先調(diào)用該接口在微信支付服務(wù)后臺(tái)生成預(yù)支付交易單,返回正確的預(yù)支付交易回話標(biāo)識(shí)后再在APP里面調(diào)起支付。
接口鏈接
URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder
是否需要證書(shū)
不需要
請(qǐng)求參數(shù)
| 應(yīng)用ID | appid | 是 | String(32) | wxd678efh567hg6787 | 微信開(kāi)放平臺(tái)審核通過(guò)的應(yīng)用APPID |
| 商戶號(hào) | mch_id | 是 | String(32) | 1230000109 | 微信支付分配的商戶號(hào) |
| 設(shè)備號(hào) | device_info | 否 | String(32) | 013467007045764 | 終端設(shè)備號(hào)(門(mén)店號(hào)或收銀設(shè)備ID),默認(rèn)請(qǐng)傳"WEB" |
| 隨機(jī)字符串 | nonce_str | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 隨機(jī)字符串,不長(zhǎng)于32位。推薦隨機(jī)數(shù)生成算法 |
| 簽名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 簽名,詳見(jiàn)簽名生成算法 |
| 簽名類(lèi)型 | sign_type | 否 | String(32) | HMAC-SHA256 | 簽名類(lèi)型,目前支持HMAC-SHA256和MD5,默認(rèn)為MD5 |
| 商品描述 | body | 是 | String(128) | 騰訊充值中心-QQ會(huì)員充值 | 商品描述交易字段格式根據(jù)不同的應(yīng)用場(chǎng)景按照以下格式: APP——需傳入應(yīng)用市場(chǎng)上的APP名字-實(shí)際商品名稱(chēng),天天愛(ài)消除-游戲充值。 |
| 商品詳情 | detail | 否 | String(8192) | { "goods_detail":[ { "goods_id":"iphone6s_16G", "wxpay_goods_id":"1001", "goods_name":"iPhone6s 16G", "quantity":1, "price":528800, "goods_category":"123456", "body":"蘋(píng)果手機(jī)" }, { "goods_id":"iphone6s_32G", "wxpay_goods_id":"1002", "goods_name":"iPhone6s 32G", "quantity":1, "price":608800, "goods_category":"123789", "body":"蘋(píng)果手機(jī)" } ] } | 商品詳細(xì)列表,使用Json格式,傳輸簽名前請(qǐng)務(wù)必使用CDATA標(biāo)簽將JSON文本串保護(hù)起來(lái)。 goods_detail 服務(wù)商必填 []: |
| 附加數(shù)據(jù) | attach | 否 | String(127) | 深圳分店 | 附加數(shù)據(jù),在查詢(xún)API和支付通知中原樣返回,該字段主要用于商戶攜帶訂單的自定義數(shù)據(jù) |
| 商戶訂單號(hào) | out_trade_no | 是 | String(32) | 20150806125346 | 商戶系統(tǒng)內(nèi)部的訂單號(hào),32個(gè)字符內(nèi)、可包含字母,?其他說(shuō)明見(jiàn)商戶訂單號(hào) |
| 貨幣類(lèi)型 | fee_type | 否 | String(16) | CNY | 符合ISO 4217標(biāo)準(zhǔn)的三位字母代碼,默認(rèn)人民幣:CNY,其他值列表詳見(jiàn)貨幣類(lèi)型 |
| 總金額 | total_fee | 是 | Int | 888 | 訂單總金額,單位為分,詳見(jiàn)支付金額 |
| 終端IP | spbill_create_ip | 是 | String(16) | 123.12.12.123 | 用戶端實(shí)際ip |
| 交易起始時(shí)間 | time_start | 否 | String(14) | 20091225091010 | 訂單生成時(shí)間,格式為yyyyMMddHHmmss,如2009年12月25日9點(diǎn)10分10秒表示為20091225091010。其他詳見(jiàn)時(shí)間規(guī)則 |
| 交易結(jié)束時(shí)間 | time_expire | 否 | String(14) | 20091227091010 | 訂單失效時(shí)間,格式為yyyyMMddHHmmss,如2009年12月27日9點(diǎn)10分10秒表示為20091227091010。其他詳見(jiàn)時(shí)間規(guī)則 注意:最短失效時(shí)間間隔必須大于5分鐘 |
| 商品標(biāo)記 | goods_tag | 否 | String(32) | WXG | 商品標(biāo)記,代金券或立減優(yōu)惠功能的參數(shù),說(shuō)明詳見(jiàn)代金券或立減優(yōu)惠 |
| 通知地址 | notify_url | 是 | String(256) | http://www.weixin.qq.com/wxpay/pay.php | 接收微信支付異步通知回調(diào)地址,通知url必須為直接可訪問(wèn)的url,不能攜帶參數(shù)。 |
| 交易類(lèi)型 | trade_type | 是 | String(16) | APP | 支付類(lèi)型 |
| 指定支付方式 | limit_pay | 否 | String(32) | no_credit | no_credit--指定不能使用信用卡支付 |
轉(zhuǎn)載于:https://my.oschina.net/u/2321760/blog/845178
總結(jié)
以上是生活随笔為你收集整理的微信app支付服务端开发记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 〖Python 数据库开发实战 - Py
- 下一篇: 【技巧】如何搜索公众号内文章