1、模式一
實現步驟
1)、生成支付鏈接或是二維碼
鏈接格式如下:
weixin://wxpay/bizpayurl?appid=wxa842e8005c427e2d&mch_id=1314710101&nonce_str=3c6d11d09c2f4d49a7c18386cf8f3a14&product_id=123456789&sign=4AC5113048BD4A08E16DD8DC8D69A744&time_stamp=1456365970
這一步可能出現的錯誤:
掃碼后微信提示:原生支付URL參數錯誤
原因:商戶密鑰key如果錯了也會出現這個提示,URL的參數少傳或是格式錯了,或是簽名錯了都會出現這個錯誤
2)、用戶掃描或是點進去1)中生成的鏈接,微信支付系統會在后台調用在“微信公眾號”配置里設好的“掃碼支付支付回調URL”,並向回調URL地要傳遞
openid和product_id進行統一下單
回調URL的作用:
接收微信支付后台發送的掃碼結果,調用統一下單接口並將下單結果返回給微信支付后台
回調URL設置如下圖


在回調URL里的統一下單代碼如下:


在回調URL里,返回給調用它的微信支付系統后台的參數如下:


在WxPayApi官方示例這一步會出的錯誤
錯誤一:


原因:在商戶的回調URL的處理里出錯,或是超時,如在官網提供的示例里就出了這個錯,檢查原因如下(坑太多了呢。。。。):
在WxPayApi的Data.cs里public SortedDictionary<string, object> FromXml(string xml)方法出錯,改成下面自己寫的


3、如果2)成功后會自動跳到微信支付的統一界面


2、模式二
描述:
模式二與模式一相比,流程更為簡單,
不依賴設置的回調支付URL,也沒有“支付授權目錄”的限制。商戶后台系統先調用微信支付的統一下單接口,微信后台系統返回鏈接參數code_url,商戶后台系統將code_url值生成二維碼圖片,用戶使用微信客戶端掃碼后發起支付。注意:code_url有效期為2小時,過期后掃碼不能再發起支付。
業務流程時序圖

業務流程說明:


二維碼規則


實現步驟
步驟一:調用統一下單接口
步驟二:統一下單接口會返回code_url參數,將它生成二維碼就可以了
代碼如下:


即:向
https://api.mch.weixin.qq.com/pay/unifiedorder接口post下面格式的數據就行:
<xml><appid><![CDATA[wxa842e8005c427e2d]]></appid><attach><![CDATA[這是易度附加數據]]></attach><body><![CDATA[這是易度商品描述]]></body><goods_tag><![CDATA[jjj]]></goods_tag><mch_id><![CDATA[1314710101]]></mch_id><nonce_str><![CDATA[b4f9d98a8d194f729220173bc31fd3d5]]></nonce_str><notify_url><![CDATA[
http://paysdk.weixin.qq.com/example/ResultNotifyPage.aspx]]></notify_url><out_trade_no><![CDATA[131471010120160229144430504]]></out_trade_no><product_id><![CDATA[123456789]]></product_id><sign><![CDATA[0430049F917C36BA1A2EC4778AE71AC6]]></sign><spbill_create_ip><![CDATA[8.8.8.8]]></spbill_create_ip><time_expire><![CDATA[20160229145430]]></time_expire><time_start><![CDATA[20160229144430]]></time_start><total_fee>1</total_fee><trade_type><![CDATA[NATIVE]]></trade_type></xml>