1.必要的引數
out_trade_no:這個自己設定,我是用乙個字串+時間戳生成
2.獲取openid
django中,乙個函式通過下面
跳轉到pay(),通過下面**:
code=request.get.get('code')
token=fp.read().decode('utf-8')
tokenjson=json.loads(token)
openid=tokenjson['openid']
獲取到openid
3.獲取最重要的prepay_id
首先獲取簽名paysign,通過下面**:
stringsigntemp=stringa+"&key=就是api_key"
paysign=hashlib.md5(stringsigntemp.encode('utf-8')).hexdigest().upper()
其中nonce_str就是隨機生成乙個字串,不要超過32位,使用者的ip位址,python通過下面**獲得:
ip = request.meta['remote_addr']
獲取paysign後,我們就可以設定要傳的xml了:
"+body+"
"+mch_id+""+noncestr+"notify_url"+openid+"
"+out_trade_no+""+ip+""+fee+"jsapi"+paysign+" "
然後傳給統一支付api,返回乙個xml:
req=urllib.request.request("")
unifiedorderxml=urllib.request.urlopen(req,data=pay_xml.encode('utf-8'))
獲取prepay_id,並設定好前端要用的package引數:
tree = et.parse(unifiedorderxml)
root = tree.getroot()
psign=root.find('sign').text
prepay_id=root.find("prepay_id").text
package="prepay_id="+prepay_id
3.設定前端調起支付的支付簽名
和獲取prepay_id的簽名方法類似,要把除了支付簽名的所有前端調起支付需要用的引數加上api_key,通過hashlib.md5()來獲取支付簽名,前端支付簽名獲取**如下:
stringbsigntemp=stringb+"&key=51012419930123201521220107abcdef"
paysign=hashlib.md5(stringbsigntemp.encode('utf-8')).hexdigest().upper()
4.h5前端調起支付
function onbridgeready()}", // 時間戳
"noncestr":"}", // 隨機串
"package": "}", // 擴充套件包
}, function(res) else
alert(res.err_msg);
});}function pay()else if(document.attachevent)
} else
}
微信支付問題總結
開發步驟 keep class com.tencent.mm.sdk.debugconfigs buildtypes遇到的一些問題 wxentryactivity,也是在wxapi下。此外一定要記得在androidmanifest.xml下配置該activity android name wxapi...
微信支付python總結
1.1 配置 作用 在h5支付完成後有許可權跳轉到這個前端網域名稱下,一般該網域名稱下頁面為支付完成狀態頁面 1.2 使用特點 1.3 支付結束後的處理形式 1.1 配置 無1.2 使用特點 1.3 支付結束後的處理形式 1.1 配置 1.2 使用特定 1.3 支付結束後的處理形式 使用者點選支付,...
微信支付 微信JSAPI支付
pay.php baby extend wx pay.php namespace wx class pay 通過redirecturi獲取授權資訊 return mixed public function getauthinfo 通過code換取網頁授權資訊 res this curlgetreq ...