微信支付h5支付(v3)

最近作一個微信支付,沒時間記錄,先寫個框架在這裏,之後再補充html

微信支付的訂單號只可以提交一次。
安全

微信支付須要的四個基本參數微信

appid是微信公衆帳號或開放平臺APP的惟一標識,在公衆平臺申請公衆帳號或者在開放平臺申請APP帳號後,微信會自動分配對應的appid,用於標識該應用。可在微信公衆平臺-->開發者中心查看,商戶的微信支付審覈經過郵件中也會包含該字段值。網絡

mch_id是商戶申請微信支付後,由微信支付分配的商戶收款帳號。app

 key交易過程生成簽名的密鑰,僅保留在商戶系統和微信支付後臺,不會在網絡中傳播。商戶妥善保管該Key,切勿在網絡中傳輸,不能在其餘客戶端中存儲,保證 key不會被泄漏。商戶可根據郵件提示登陸微信商戶平臺進行設置。也可按一下路徑設置:微信商戶平臺(pay.weixin.qq.com)--> 帳戶設置-->API安全-->密鑰設置 ,這個以前的版本中也有,只是改了名字,給微信的客服問,他們也說不出個三七二十來。
微信公衆平臺

AppSecret是APPID對應的接口密碼,用於獲取接口調用憑證access_token時使用。在微信支付中,先經過OAuth2.0接口獲取用戶openid,此openid用於微信內網頁支付模式下單接口使用。在開發模式中獲取AppSecret(成爲開發者且賬號沒有異常狀態)。 這個是本身定義的二十多個字符。框架

總之,若是這四個參數不加上,微信支付就不能支付。
異步

異步回調通知
測試

統一下單的時候,要接收微信的通知,剛開始覺得是接收到微信的通知的時候用戶支付的界面才能跳轉到成功頁面,其實這樣的理解不對,應該是後臺處理的,當收到通知進行處理時,首先檢查對應業務數據的狀態,判斷該通知是否已經處理過,若是沒有處理過再進行處理,若是處理過直接返回結果成功。微信支付


微信給發送的xml格式爲

<xml>

          <appid><![CDATA[wx2421b1c4370ec43b]]></appid>

          <attach><![CDATA[支付測試]]></attach>

          <bank_type><![CDATA[CFT]]></bank_type>

          <fee_type><![CDATA[CNY]]></fee_type>

          <is_subscribe><![CDATA[Y]]></is_subscribe>

          <mch_id><![CDATA[10000100]]></mch_id>

          <nonce_str><![CDATA[5d2b6c2a8db53831f7eda20af46e531c]]></nonce_str>

          <openid><![CDATA[oUpF8uMEb4qRXf22hE3X68TekukE]]></openid>

          <out_trade_no><![CDATA[1409811653]]></out_trade_no>

          <result_code><![CDATA[SUCCESS]]></result_code>

          <return_code><![CDATA[SUCCESS]]></return_code>

          <sign><![CDATA[B552ED6B279343CB493C5DD0D78AB241]]></sign>

          <sub_mch_id><![CDATA[10000100]]></sub_mch_id>

          <time_end><![CDATA[20140903131540]]></time_end>

          <total_fee>1</total_fee>

          <trade_type><![CDATA[JSAPI]]></trade_type>

          <transaction_id><![CDATA[1004400740201409030005092168]]></transaction_id>

        </xml>

這時咱們只要給微信返回個

<xml>
  <return_code><![CDATA[SUCCESS]]></return_code>
          <return_msg><![CDATA[OK]]></return_msg>
        </xml>

便可

第一個參數必填的,第二個參數是選填的


微信支付退款