H5調微信支付

微信支付接口,php

最近公衆號須要添加支付功能,一個作前端開發的,好簡單,只是調用支付接口就能夠了,其餘無論,想起來多簡單,但是真的最後開發的時候,各類蛋疼的問題迎面而來;前端

從調試來看,這周遇到的狀況跟你們分享下,若是大家遇到另外的問題以及如何解決,但願能夠留言,幫助其餘開發人員,算法

後臺服務器要和微信端下單 ,接口和返回參數見微信apiapi

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1服務器

此時下單客戶端調用後臺接口,返回給你的參數你須要的只有微信

6-7個而已 下面是copy微信的app

公衆號   id測試

appId String(16) wx8888888888888888 商戶註冊具備支付權限的公衆號成功後便可得到
時間戳 timeStamp String(32) 1414561699 當前的時間,其餘詳見時間戳規則
隨機字符串 nonceStr String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 隨機字符串,不長於32位。推薦隨機數生成算法
訂單詳情擴展字符串 package String(128) prepay_id=123456789 統一下單接口返回的prepay_id參數值,提交格式如:prepay_id=***
簽名方式 signType String(32) MD5 簽名算法,暫支持MD5
簽名 paySign String(64) C380BEC2BFD727A4B6845133519F3AD6 簽名,詳見簽名生成算法

 

注意參數必定要對應大小寫區分嚴重,不然坑深,微信支付

v2寫法:spa

#coffeescript    調用@weChatPay()

weChatPay: ->
    if typeof WeixinJSBridge == 'undefined'
        if document.addEventListener
            document.addEventListener 'WeixinJSBridgeReady', @onBridgeReady(), false
        else if document.attachEvent
            document.attachEvent 'WeixinJSBridgeReady', @onBridgeReady()
            document.attachEvent 'onWeixinJSBridgeReady', @onBridgeReady()
    else
        @onBridgeReady()
onBridgeReady: ->
    WeixinJSBridge.invoke('getBrandWCPayRequest',{
                "appId" : @wcOpts.appId,     #公衆號名稱,由商戶傳入
                "timeStamp": @wcOpts.timeStamp,         #時間戳,自1970年以來的秒數
                "nonceStr" : @wcOpts.nonceStr, #隨機串
                "package" : @wcOpts.package,
                "signType" : @wcOpts.signType,         #微信簽名方式:
                "paySign": @wcOpts.paySign #微信簽名
            },(res) =>
                if res.err_msg == "get_brand_wcpay_request:ok"       #三個狀態get_brand_wcpay_request:ok支付成功 get_brand_wcpay_request:fail 支付失敗get_brand_wcpay_request:cancel用戶取消
                    @queryOrder()#查詢訂單
                else
                    window.location.reload()
    )

v3支付須要在config配置裏添加chooseWXPay

ready以後調用 #JavaScript 寫法 

 

wx.chooseWXPay({
    timestamp: 0, // 支付簽名時間戳,注意微信jssdk中的全部使用timestamp字段均爲小寫。但最新版的支付後臺生成簽名使用的timeStamp字段名需大寫其中的S字符
    nonceStr: '', // 支付簽名隨機串,不長於 32 位
    package: '', // 統一支付接口返回的prepay_id參數值,提交格式如:prepay_id=***)
    signType: '', // 簽名方式,默認爲'SHA1',使用新版支付需傳入'MD5'
    paySign: '', // 支付簽名
    success: function (res) {
        // success
    },
  cancel:function(res){
        //cancel
  }
});

成功的前提是

一、後臺給的參數是否正確,尤爲是paySign和package ,不正確會出現支付loading閃下消失,沒任何提示。

二、公衆號是否配置了支付受權目錄,若調用測試受權目錄必定要微信號加入白名單,不然直接閃下loading 而後  get_brand_wcpay_request:fail

三、前端調用參數不要傳多餘的,大小寫要注意

相關文章
相關標籤/搜索