一级片大奶子_色又黄又爽18禁免费视频_热久久久久久久_久久久精品一区二区_日韩av不卡在线播放_精品国内自产拍在线观看视频

商城系統(tǒng) 注冊

微信小程序進(jìn)行微信支付流程圖解

2018-06-28|HiShop
導(dǎo)讀:這里為大家介紹微信用戶使用小程序進(jìn)行微信支付到微信商家接收微信支付的過程介紹,微信支付是如何實(shí)現(xiàn)支付功能的。...

這里為大家介紹微信用戶使用小程序進(jìn)行微信支付到微信商家接收微信支付的過程介紹,微信支付是如何實(shí)現(xiàn)支付功能的。

微信小程序進(jìn)行微信支付流程圖解

用 thinkjs 封裝了個(gè)小程序支付的 Service 在這里記錄一下,順便梳理一下小程序支付的流程和思路。首先,先把官網(wǎng)的流程圖放上來,然后按照圖一步步的來。

 

微信小程序進(jìn)行微信支付流程圖解

第一步:用戶請求開發(fā)者后臺(tái),發(fā)起下單請求

  • 發(fā)起請求前在小程序端調(diào)用 wx.checkSession() 查看 session_key 是否過期
    • 如果過期了 重新調(diào)用 wx.login() 返回 session_key 和 openid
    • 如果沒過期 繼續(xù)下一步操作,請求開發(fā)者后臺(tái)

第二步:開發(fā)者查找一下數(shù)據(jù)庫或者緩存里是否有 openid 和 session_key

  • 如果有生成訂單編號(hào) out_trade_no
  • 如果沒有返回錯(cuò)誤消息,缺少 openid 、 session_key

第三步:開發(fā)者服務(wù)器請求統(tǒng)一下單 API ,帶上要求的參數(shù):

appid
mch_id
nonce_str
sign
body
out_trade_no
total_fee
spbill_create_ip

nonce_str 獲取隨機(jī)字符串:

test.js
  • js
/*
 *  功能: 返回32位隨機(jī)字符串
 *  create by tiankai on 2018-06-25 15:39
 */
getNonceStr(){
    let char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    let len = 32;
    let result = '';
    for(let i = 0; i < len; i++){
        let randomNum = Math.floor(Math.random()*char.length);
        result += char[randomNum];
    }
    return result;
}
sign 參數(shù)簽名, 第二個(gè)tab(js)是調(diào)用函數(shù)的方法, key 為商戶平臺(tái)設(shè)置的密鑰 key 
test.js
  • js
  • js
/*
 *  功能:sign 參數(shù)簽名
 *  create by tiankai on 2018-06-26 12:00
 */
async makeSign(params, key){
    // 生成簽名 sign
    let strOrderArr = Object.keys(params).sort();
    let stringA = "";
    strOrderArr.map(val =>{
        //如果參數(shù)值為空,或者驗(yàn)證返回的 sign 不參與簽名
        if(
            think.isNullOrUndefined(params[val]) ||
            val === 'sign' ||
            params[val].length === 0
        ) return;
        stringA += val + "=" + params[val] + "&";
    });
    let stringSignTemp = stringA + "key=" + key;
    let sign = think.md5(stringSignTemp).toUpperCase();
    return sign;
}

得到這幾個(gè)參數(shù)就開始發(fā)起請求統(tǒng)一下單 API 了,這里需要注意的是,請求參數(shù)應(yīng)該以 xml 的形式傳送過去,這里借助一個(gè)工具 xml2js 把對象轉(zhuǎn)換為 xml,也可以把 xml 轉(zhuǎn)換為 對象、json。

安裝 xml2js

npm i xml2js

使用 xml2js

test.js
  • js
const xml2js = require('xml2js');

//xml->json
//xml2js默認(rèn)會(huì)把子子節(jié)點(diǎn)的值變?yōu)橐粋€(gè)數(shù)組, explicitArray設(shè)置為false
var xmlParser = new xml2js.Parser({explicitArray : false, ignoreAttrs : true})
//json->xml
var jsonBuilder = new xml2js.Builder();

請求參數(shù)轉(zhuǎn)換為 xml

test.js
  • js
/*
 *  功能:獲取統(tǒng)一下單 API 請求XML參數(shù)
 *  create by tiankai on 2018-06-25 15:23
 */
async getUnifiedOrderParams(){
    let signString = {
        appid: config.appid,
        mch_id: config.mchid,
        nonce_str: await this.getNonceStr(),
        body: '短信平臺(tái)-短信套餐購買',
        out_trade_no: '20180926125346',//訂單號(hào)
        total_fee: 88,//訂單金額
        //APP和網(wǎng)頁支付提交用戶端ip,Native支付填調(diào)用微信支付API的機(jī)器IP
        //需要自行獲取,這里只是為了測試直接寫上了
        spbill_create_ip: '123.12.12.123',
        notify_url: config.notify_url,
        trade_type: 'JSAPI',
        openid: await think.cache('openId')
    }
    let sign = await this.makeSign(signString,config.key);
    signString.sign = sign;
    /* console.log("--------------------------");
     * console.log(sign);
     * console.log("--------------------------"); */
    let xml = await jsonBuilder.buildObject(signString);
    /* console.log(xml); */
    return xml;
}

然后就可以發(fā)起統(tǒng)一下單API請求了

test.js
  • js
/*
 *  功能:調(diào)用統(tǒng)一下單API接口
 *  create by tiankai on 2018-06-26 11:01
 */
async unifiedOrder(){
    let xmlParams = await this.getUnifiedOrderParams();
    let unifiedOrderUrl = config.unifiedOrderUrl;
    let opt = {
        method: "POST",
        mode: 'cors',
        headers: {
            'content-type': 'text/xml'
        },
        body: xmlParams
    }
    let res = await this.fetch(unifiedOrderUrl, opt);
    //這里微信返回的也是 xml
    let result = await res.text();
    let data = null;
    // 微信返回的 XML 轉(zhuǎn)換為 JSON
    xmlParser.parseString(result,function(err, jsonData){
        if(!err){
            /* console.log(jsonData); */
            data = jsonData;
        }
    });
    return data;
}

第四步:當(dāng)請求成功時(shí) 判斷一下 return_code 和 result_code

  • 如果它們都等于 SUCCESS 的時(shí)候,微信會(huì)把我們需要的預(yù)支付訂單信息 prepay_id 返回來,
  • 否則返回 return_msg 給前端 展示具體錯(cuò)誤

第五步:拿上 prepay_id ,進(jìn)行再次簽名,然后返回給前端

test.js
  • js
/*
 *  功能:統(tǒng)一下單接口返回 prepay_id 再次簽名 返回給前端
 *  create by tiankai on 2018-06-26 15:45
 */
async payParams(){
    let signString = {
        appid: config.appid,
        timeStamp: +new Date(),
        nonce_str: await this.getNonceStr(),
        package: null,
        signType: 'MD5'
    }
    //調(diào)用 統(tǒng)一下單 API
    let jsonData = await this.unifiedOrder();
    if(think.isNullOrUndefined(jsonData) &&
       jsonData.xml.return_code === 'SUCCESS' &&
       jsonData.xml.result_code === 'SUCCESS'
    ){
        signString.package = 'perpay_id='+jsonData.xml.perpay_id
    }else{
        return jsonData.xml.return_msg;
    }
    //進(jìn)行再次簽名
    let paySign = await this.makeSign(signString,config.key);
    signString.paySign = paySign;
    let { appid, signType, ...result } = signString;
    // result 中不包括 appid 和 signType 返回給前端
    return result;
}

第六步:用戶確認(rèn)支付后,小程序端調(diào)用支付接口,根據(jù)返回結(jié)果提示用戶

test.js
  • js
wx.requestPayment({
   'timeStamp': '',
   'nonceStr': '',//后端返回的隨機(jī)字符串
   'package': '',//后端返回的
   'signType': 'MD5',
   'paySign': '',//后端返回的
   'success':function(res){
   },
   'fail':function(res){
   }
});

第七步:支付成功后,微信服務(wù)器會(huì)把支付結(jié)果返回給配置的 notify_url ,開發(fā)者根據(jù)支付結(jié)果,更新服務(wù)器的訂單狀態(tài)。

大體流程就是這,現(xiàn)在進(jìn)行到了 第四步 公司小程序 appid 還沒申請下來 商戶號(hào) mch_id 也沒有,等過段時(shí)間繼續(xù)更新。(18/6/27)

電話咨詢 預(yù)約演示 0元開店
主站蜘蛛池模板: 欧美丰满熟妇xxxx性大屁股|亚洲=aV无码国产精品草莓在线|91影视免费版|久久久久国精品产熟女久色|国产99久久久久久免费看|成年人黄色片视频 | 亚洲v=a欧美v=a国产v=a黑人|蜜臀=av午夜一区二区三区gif|69人人|国产精品免费大片|亚洲日产=av中文字幕|国产精品香蕉成人网在线观看 | 欧美特一级片|午夜肉伦伦影院无码|色18亚洲美女|亚洲成人黄网|山村少妇肉系列1一7|天堂8在线新版官网 | 亚洲人片在线观看天堂无码|国产肥白大熟妇bbbb|天堂а在线地址8最新版|精品精品99|波多野结衣激情XXⅩXXX|国产伦精品免编号公布 | 国产精品成人v=a在线观看|久久网中文字幕|国产精品2区|色费色情人成视频|国产精品一区二区丝瓜|国产亚洲精品自在久久77 | 国产最新在线观看|久久黄页|在线不卡日本v二区707|成人免费一区二区三区在线观看|欧美又粗又大色情hd堕落街传奇|免费观看全黄做爰的视频 | 狂野=aV人人澡人人添|天天干夜夜擦|两个人的www免费高清视频|永久免费看mv网站入口亚洲|久久一区二区三区四区|亚洲男人网 | 色妹子影院|国产福利在线永久视频|国产精品日韩精品|天堂在线99香蕉在线视频|日本欧美一区二区免费不卡|少妇人妻在线无码天堂视频网 | 国产精品久久久久久久久久久久久久久久久|免费无遮挡无码永久在线观看视频|一个人在线观看免费视频www|欧美性猛交xxxx乱大交丰满|久久无码人妻一区二区三区午夜|色欲香天天天综合网站无码 | 男同免费|久久久久久草莓香蕉步兵|亚洲女女女同性VIDEO|免费的=av不用播放器的|黄频网站在线观看|久久久88 | 激情小说亚洲色图|我要干成人网|久久国产免费看|最新国产成人|久久免费影视|黄瓜视频网址 | 免费的很黄很污的视频|99国产午夜精品一区二区天美|天堂久久天堂综合色|国产精品永久免费视频|日日夜夜天天人人|亚洲精品国产=aⅤ综合第一 | 亚洲第一精品区|久久久WWW影院人成|mmmwww在线看片免费|日本在线资源|亚洲精品综合久久|毛片中文字幕 | 蓝宇在线|国产成人精品午夜视频|成人在线免费播放视频|JZZIJZZIJ在线观看亚洲熟妇|久久99热国产|亚洲=aV男人的天堂在线观看 | 欧美激情视频一区|欧美9999|各种少妇正面bbw撒尿|黄视频网站在线|97综合在线|一本大道在线无码一区 | 国产精品第一区|亚洲偷偷自拍高清|老熟妇乱子伦=aV|国产激情久久久久久|www.亚洲人|在线观看免费视频 | 国产草莓精品国产=av片国产|91影视在线|76少妇国内精品视频|中文字幕人妻丝袜美腿乱|国产日韩欧美视频免费看|国产精品久久无码一区 | 久久99香蕉|中国XXX农村性视频|亚洲=aV日韩=aV男人的天堂在线|国产v亚洲v天堂=a|亚洲|这里只有精品在线播放|三年片在线视频中国 | 欧美人与动人物牲交|国产精品一区hongkongdoll|97国产爽爽爽久久久|久久69国产一区二区蜜臀|成人免费在线视频网址|久久久久国产精品一区二区 | 精品久久久蜜桃|天堂亚洲|久久精品女|蜜臀久久精品久久久更新时间|日韩精品一区二区在线播放|九九视频免费在线观看 | 综合亚洲网|亚洲综合成人亚洲|日本精品一区二区三区在线观看|粗大猛烈进出呻吟声的视频|绝世武魂短剧免费观看|黄色一级免费大片 | 亚洲=av不卡一区二区三区|日本精品久久无码影院|亚洲福利视频二区|#NAME?|毛片一级做=a爰片性色仙踪林|人妻少妇精品视频一区二区三区 | 久久久91视频|99三级|水蜜桃视频在线免费观看|黄色国产网站在线观看|含羞草家庭影院|久久久欧美国产精品人妻噜噜 | 国产一区二区三区久久悠悠色=av|成人免费视频看看|久久国产精品-国产精品|男人J进女人J啪啪无遮挡|成人片黄网站=a毛片免费|久久精品91视频 | 欧美成人性生活片|在线不卡一区二区三区|久久伦理影院|欧洲LV尺码大精品久久久|中文字幕无码=a片久久|最新中文字幕一区 | 亚洲妇女多毛撒尿XXXⅩ|黄色毛片黄色毛片|公和我做好爽添厨房|日本韩国最新免费观看|日本=a∨精品中文字幕在线|国产免费拔擦拔擦8X高清在线 | 国产精品第一页在线播放|久久精品人人人人人人|亚洲精品一区久久久久一品=aV|欧美7777|美女全身赤裸裸免费网站|在线视频三区 | chinese一区二区|亚洲国产综合在线播放=av66|午夜视频=a|99热这里|夜夜操影院|#NAME? | 无码国产精品一区二区VR|欧美精品亚洲精品日韩专区v=a|欧美xxx久久|黄在线观看免费|国产草草草|7777kkk亚洲综合欧美网站 | 美国=a级黄色大片|国内露脸少妇精品视频|日本免费在线一区|欧美一区影院|高清黄色毛片|在线中文一区 | 国产成人毛片在线视频软件|日韩欧美一区二区三区不卡在线|中文亚洲字幕|91=av在线影院|涩涩视频在线看|欧美日韩在线观看二区视频 | 18禁超污无遮挡无码网址极速|国产精品久久久久久久久久三级|91大神暴力调教|成人久久久久久久久|久久久人成影片免费观看|欧美精品成人一区二区三区四区 | 亚洲小说图区综合在线|国产美女高潮流白浆视频|四虎影院地址|欧美极品少妇×XXXBBB|99高清国产清纯学生在线观看|99精品在线免费 | 日韩小视频网站hq|免费观看视频的网站视频|色情无码WWW视频无码区|国产精=av|国产人妻无码一区二区三区不卡|色我综合 | 把女人弄爽=a片免费视频|999精品免费视频|五月婷在线|高清色惰WWW日本COM|一二三区=av|永久在线观看免费视频 | 免费三级网|看毛片网站|午夜影剧院|国产农村一级一级毛片|十八禁g=ay网站|精品国产乱码久久久久久蜜臀网站 | 国产V精品无码好舒服欧美精品|一本之道亚洲|亚在线观看免费视频入口|成人学院中文字幕|国产精品成人观看视频网站|欧洲成在人线视频免费 | 日韩高清黄色片|夜夜爽一区二区三区|老司机福利在线观看|狠狠色噜噜狼狼狼色综合久|精品免费观看视频|小早川怜子一区二区的演员表 | 亚洲久久综合|久久伊甸园|青草国产超碰人人添人人碱|91资源在线播放|九九九免费观看视频|又黄又爽的免费视频 | 国内揄拍国内精品人妻浪潮=aV|亚洲人成在线观看一区二区|日韩一区欧美|毛片在线播放=a|亚洲=av最新天堂网址|vr视频高清3d羞羞的铁拳 | 日本一区三区|欧美成人日韩|中国内地毛片免费高清|影音先锋国产精品|成人一级福利|精品一区二区三区国产 |