当前位置:   article > 正文

微信公众号支付接口(vue项目中,两种方法)_vue3 微信支付 choosewxpay timestamp undefind

vue3 微信支付 choosewxpay timestamp undefind

第一种:引入微信js-sdk

  1. //在一个地方调用this.weixin()方法,比如说按钮
  2. //写微信支付方法
  3. weixin() {
  4. var that = this;
  5. var url='';
  6. var params = {
  7. .....//价格,数量等等一类的
  8. };
  9. axios.post(url,params).then((res) => {
  10. var resulted = res.data.data;
  11. that.wxConfig = resulted;
  12. that.$wx.config({
  13. debug: false,
  14. appId: that.wxConfig.appid,
  15. timestamp: that.wxConfig.timestamp,
  16. nonceStr: that.wxConfig.noncestr,
  17. signature: that.wxConfig.signature,
  18. // 所有要调用的 API 都要加到这个列表中
  19. //要调用的微信接口
  20. jsApiList: [
  21. 'chooseWXPay',
  22. 'onMenuShareAppMessage',
  23. 'onMenuShareTimeline',
  24. 'onMenuShareQQ',
  25. 'onMenuShareWeibo',
  26. 'onMenuShareQZone'
  27. ]
  28. });
  29. that.$wx.ready(function() {
  30. that.$wx.chooseWXPay({
  31. timestamp: that.wxConfig.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用 timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
  32. nonceStr: that.wxConfig.nonceStr, // 支付签名随机串,不长于 32
  33. package: that.wxConfig.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***
  34. signType: that.wxConfig.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
  35. paySign: that.wxConfig.paySign, // 支付签名
  36. success: function (res) {
  37. paySuccessCallback();
  38. },
  39. cancel: function (res) {
  40. alert('已取消支付');
  41. },
  42. fail: function (res) {
  43. alert('购买失败,请重新创建订单')
  44. }
  45. });
  46. });
  47. })
  48. },

第二种  不用引入微信sdk;直接应用;

  1. toPayPage() {//1.点击“立即支付”按钮,请求接口获取orderCode
  2. var url = API_ORDERS_GENERATE;
  3. var params = {
  4. buyNum: this.quantity * 1,
  5. commodityId: this.commodityId,
  6. guestBook: this.guestBook,
  7. commodityPrice:this.commodityPrice,
  8. totalPrice : (this.commodityPrice * 1) * (this.quantity * 1)
  9. }
  10. this.$post(url,params).then(res=>{
  11. if(res.data.retCode == 200){
  12. this.orderId = res.data.data;
  13. this.authorityCheckToPay(this.orderId.orderCode)
  14. }else{
  15. //业务错误输出
  16. this.Toast({
  17. message: res.data.message,
  18. position: 'center',
  19. duration: 2000
  20. })
  21. }
  22. }).catch(res=>{
  23.          console.log(res);
  24. })
  25. },
  1. authorityCheckToPay(orderCode) {//2.使用orderCode唤起支付
  2. var url = API_PAY_ORDER + orderCode;
  3. this.$post(url).then(res=>{
  4. if(res.data.retCode == 200){
  5. var params = JSON.parse(res.data.data);
  6. if (typeof WeixinJSBridge == "undefined"){
  7. if( document.addEventListener ){
  8. document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
  9. }else if (document.attachEvent){
  10. document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
  11. document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
  12. }
  13. }else{
  14. this.onBridgeReady(params);
  15. }
  16. }else{
  17. this.Toast({
  18. message: res.data.message,
  19. position: 'center',
  20. duration: 5000
  21. })
  22. }
  23. }).catch(res=>{
  24.          console.log(res);
  25. })
  26. },
  1. onBridgeReady(params){//3.使用微信内部方法完成支付操作
  2. var _this = this;
  3. WeixinJSBridge.invoke(
  4. 'getBrandWCPayRequest', params,
  5. function(res){
  6. if(res.err_msg == "get_brand_wcpay_request:ok" ){
  7. // 使用以上方式判断前端返回,微信团队郑重提示:
  8. //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
  9. _this.$router.push('homeList');
  10. } else if(res.err_msg == "get_brand_wcpay_request:cancel"){
  11. // alert("用户取消支付!");
  12. _this.$router.push('purchaseRecord');
  13. }else{
  14. // alert(JSON.stringify(res));
  15. alert("支付失败!");
  16. }
  17. });
  18. }

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/283986
推荐阅读
相关标签
  

闽ICP备14008679号