[{"data":1,"prerenderedAt":92},["ShallowReactive",2],{"content:\u002Fposts\u002F2022\u002Fminiprogram-wepay":3,"surround:\u002Fposts\u002F2022\u002Fminiprogram-wepay":81},{"id":4,"title":5,"body":6,"canonical":58,"categories":59,"date":61,"description":58,"draft":62,"extension":63,"image":64,"meta":65,"navigation":66,"path":67,"permalink":58,"readingTime":68,"recommend":58,"references":58,"seo":73,"sitemap":74,"stem":75,"tags":76,"type":58,"updated":61,"__hash__":80},"content\u002Fposts\u002F2022\u002Fminiprogram-wepay.md","小程序接入微信支付",{"type":7,"value":8,"toc":51},"minimark",[9,20,24,32,35,41,45],[10,11,17],"pre",{"className":12,"code":14,"language":15,"meta":16},[13],"language-js","\u002F\u002F 这里的数据是后端返回的订单数据\nconst wechatOrder = {\n    orderInfo: {\n        appid: \"wx1e**********689f\",\n        noncestr: \"2rxK********Gv3A\",\n        package: \"Sign=WXPay\",\n        partnerid: \"16****039\",\n        prepayid: \"wx13************c615acf50000\",\n        timestamp: \"1663061271\",\n        sign: \"3513ECA3B3AC1AD6F7D8BA748970D51D2236589734518F086AB99673AAE844FE\",\n    },\n}\n","js","",[18,19,14],"code",{"__ignoreMap":16},[21,22,23],"h2",{"id":23},"依赖加密包",[10,25,30],{"className":26,"code":28,"language":29,"meta":16},[27],"language-shell","npm i crypto-js\n","shell",[18,31,28],{"__ignoreMap":16},[21,33,34],{"id":34},"小程序支付时的二次签名",[10,36,39],{"className":37,"code":38,"language":15,"meta":16},[13],"import crypto from \"crypto-js\u002Fcrypto-js\"\n\nconst timeStamp = Math.floor(new Date().getTime() \u002F 1000)\nconst key = \"53E12F838************5A43C5DC3\"\n\u002F\u002F 二次签名\nconst sign = `appId=${appid}&nonceStr=${wechatOrder.orderInfo.nonce_str}&package=prepay_id=${wechatOrder.orderInfo.prepay_id}&signType=HMAC-SHA256&timeStamp=${timeStamp}&key=${key}`\n\nwx.requestPayment({\n    timeStamp: timeStamp + \"\", \u002F\u002F 时间戳（单位：秒）\n    nonceStr: wechatOrder.orderInfo.nonce_str, \u002F\u002F 随机字符串\n    package: `prepay_id=${wechatOrder.orderInfo.prepay_id}`, \u002F\u002F 固定值\n    signType: \"HMAC-SHA256\", \u002F\u002F 固定值\n    paySign: crypto.enc.Hex.stringify(crypto.HmacSHA256(sign, key)).toUpperCase(),\n    success(res) {\n        console.log(\"success:\" + JSON.stringify(res))\n        console.log(\"支付成功\")\n        showToast({\n            title: \"支付成功\",\n        })\n    },\n    fail(err) {\n        console.log(\"fail:\" + JSON.stringify(err))\n        console.log(\"支付失败\")\n        showErrorMsgModal({\n            content: err,\n        })\n    },\n})\n",[18,40,38],{"__ignoreMap":16},[21,42,44],{"id":43},"app-支付时的二次签名","app 支付时的二次签名",[10,46,49],{"className":47,"code":48,"language":15,"meta":16},[13],"const partnerid = \"160*****39\"\nconst key = \"53E12F838************5A43C5DC3\"\n\u002F\u002F 报错支付场景不合法\nconst appid = wechatOrder.orderInfo.appid\nconst timeStamp = Math.floor(new Date().getTime() \u002F 1000) + \"\"\nconst sign = `appid=${appid}&noncestr=${wechatOrder.orderInfo.nonce_str}&package=Sign=WXPay&partnerid=${partnerid}&prepayid=${wechatOrder.orderInfo.prepay_id}&timestamp=${timeStamp}&key=${key}`\n\nconst orderInfo = {\n    appid, \u002F\u002F 微信开放平台 - 应用 - AppId，注意和微信小程序、公众号 AppId 可能不一致\n    noncestr: wechatOrder.orderInfo.nonce_str, \u002F\u002F 随机字符串\n    package: \"Sign=WXPay\", \u002F\u002F 固定值\n    partnerid, \u002F\u002F 微信支付商户号\n    prepayid: wechatOrder.orderInfo.prepay_id, \u002F\u002F 统一下单订单号\n    timestamp: timeStamp, \u002F\u002F 时间戳（单位：秒）\n    sign: crypto.enc.Hex.stringify(crypto.HmacSHA256(sign, key)), \u002F\u002F 签名，这里用的 MD5\u002FRSA 签名\n}\nuni.requestPayment({\n    provider: \"wxpay\",\n    orderInfo,\n    success: (res) => {\n        console.log(\"调用微信支付\", res)\n    },\n    fail: (err) => {\n        console.log(\"调用支付失败\", err)\n    },\n    complete(complete) {\n        console.log(\"complete\", complete)\n    },\n})\n",[18,50,48],{"__ignoreMap":16},{"title":16,"searchDepth":52,"depth":52,"links":53},4,[54,56,57],{"id":23,"depth":55,"text":23},2,{"id":34,"depth":55,"text":34},{"id":43,"depth":55,"text":44},null,[60],"代码","2022-12-04 15:32:02",false,"md","https:\u002F\u002Fbitmc.uno\u002Fpicgo\u002F67a21f8a4e438-78.webp",{},true,"\u002Fposts\u002F2022\u002Fminiprogram-wepay",{"text":69,"minutes":70,"time":71,"words":72},"2 min read",1.575,94500,315,{"title":5,"description":58},{"loc":67},"posts\u002F2022\u002Fminiprogram-wepay",[77,78,79],"uniapp","小程序","支付","zQnA5ViD8WHr7DlJJTqT7-z-NAyxrUU6wjRReHV8bbs",[82,87],{"title":83,"path":84,"stem":85,"date":86,"type":58,"children":-1},"小程序常用工具\u002F文档","\u002Fposts\u002F2022\u002Fminiprogram-tools","posts\u002F2022\u002Fminiprogram-tools","2022-12-04 15:30:56",{"title":88,"path":89,"stem":90,"date":91,"type":58,"children":-1},"扫码跳转至指定界面","\u002Fposts\u002F2022\u002Fminiprogram-scancode-jump-page","posts\u002F2022\u002Fminiprogram-scancode-jump-page","2022-12-04 15:32:48",1789642597123]