微信支付的坑(jsapi)

具体流程网上都有,主要说一下前端开发者应该主要的,简单的说就两步。

1,获取所需要的参数信息(和后台开发沟通)

getWxPayInf() {
      PayApi.GetWxPay({ money: Math.abs(+this.payNumber), Title: this.title })
        .then(res => {
          if (res.ErrorCode == 1) {
            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 {
              this.onBridgeReady(res.Data);
            }
          }
        })
        .catch(err => {
          console.log(err);
        });
    },

2,调用微onBridgeReady(wxdata) {      let { appId, timeStamp, nonceStr, paySign } = wxdata;

      let _that = this;
      let paySuccess = JSON.stringify({
        MerchantID: +window.localStorage.getItem("userID"),
        Payment: Math.abs(+this.payNumber),
        Title: this.title,
        BillDetails: this.payIdArray,
        PayMethodName: "WXZF",
        OrderNo: wxdata.orderno
      });
      WeixinJSBridge.invoke(//在微信环境下就有这个对象,不用担心
        "getBrandWCPayRequest",
        {
          appId: appId, //公众号名称,由商户传入
          timeStamp: timeStamp, //时间戳,自1970年以来的秒数
          nonceStr: nonceStr, //随机串
          package: wxdata.package,
          signType: "MD5", //微信签名方式:
          paySign: paySign //微信签名
        },
        function(res) {
          if (res.err_msg == "get_brand_wcpay_request:ok") {
            // 使用以上方式判断前端返回,微信团队郑重提示:
            //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
            let wxcode = window.localStorage.getItem("wxcode");
            window.location.href = ‘根据业务逻辑进行跳转‘;       这个里面很坑,不能写逻辑,目前我发现只能跳转页面,       使用vue的this.$router.push是不可以的       alert()都不填出来     
       window.location.href才可以跳转,如果跳转发现url传参有坑可以看我上一篇文章
} else if (res.err_msg == "get_brand_wcpay_request:cancel") { _that.$vux.alert.show({ content: "用户取消支付" }); } else { _that.$vux.alert.show({ content: "支付失败" }); } } ); },

原文地址:https://www.cnblogs.com/cqy1125/p/12571244.html

时间: 2024-11-09 03:08:17

微信支付的坑(jsapi)的相关文章

一次痛苦又甜蜜的微信支付踩坑之旅

凡是和钱打交道的事,没有一样是容易的.这是我第一次接触微信支付,发现网上还是有很多同学在求助,XXX了怎么办?XXX是什么情况?为了帮助更多的小伙伴脱离"苦海",我决定写下这次的踩坑之旅,给更多的人帮助. 介绍 微信支付方式分为刷卡支付.公众号支付.扫码支付.APP支付.H5支付.小程序支付. 先从应用场景来各自说一说,这样,能够最快的判断出应该选择哪一种支付. 刷卡支付:使用扫描设备(扫描枪)多见于超市.便利店使用 公众号支付:嵌入公众号的H5页面 扫码支付:用户打开"微信

微信支付的坑 返回值 -1

最近在用android接入微信支付.. 之前的包没问题,发现这段时间突然不行了... 于是调试之. 1.开始用的支付配置参数估计有错误,然后支付失败, 获取token值 ,和 prepayId 都是正常的,等在回调支付的文件时候返回错误码-1,其他的参数 都为null 2.使用正确的 微信 appId ,key 和支付的 key 参数,然后进行打包,运行-- 依然结果 一样,前两项都OK,第三步支付界面启动不了,回调返回错误码-1. 疑惑中 --  疑惑中-- 在考虑 1)是否微信sdk 更新了

asp.net微信支付发起页面jsapi.aspx

jsapi.aspx 后台核心代码 //创建支付应答对象 RequestHandler packageReqHandler = new RequestHandler(Context); //初始化 packageReqHandler.init(); packageReqHandler.setKey(TenpayUtil.key); //设置package订单参数 packageReqHandler.setParameter("partner", TenpayUtil.partner);

url带#号,微信支付那些坑

现在前端很多框架的前端路由都带#号,主要为了做到无刷新跳转页面. 在微信公众号做微信支付时,配置的支付路径比如是http://www.eee.com/#/order,在调微信支付的方法时错误信息是'URL未注册'. 我的解决方案是,写一个专门做为微信支付的页面,ajax请求后台返回需要调取微信支付的数据(签名等信息),然后把这些信息暂存起来(可以用h5的缓存,记得支付完清掉,如果用node,可以用node的缓存,以自己的实际项目方便).跳转到支付的页面 <!DOCTYPE html><h

iOS SDK微信支付填坑!(跳转微信支付,只有确定按钮)

这两天接微信支付的SDK,遇到了一个天坑,微信文档里面不写清楚,demo里面也没有,参数少了一个无法支付啊有没有!有没有!有没有! 最后调试成功,得知真相的我眼泪掉下来... 先让我们看看是什么情况: --------------------------------------------------------我是分割线-------------------------------------------------------- 预支付订单那块就不说了,基本上都没问题,服务器会返回一个pre

iOS集成微信支付各种坑收录

统一下单的参数要拼接成XML格式,使用AFN请求时,要对参数转义,直接传入字典给AFN,无法识别(这个接口,微信demo中并没有提供示例) AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; //这里传入的xml字符串只是形似xml,但是不是正确是xml格式,需要使用af方法进行转义 manager.responseSerializer = [[AFHTTPResponseSerial

微信支付.net官方坑太多,我们来精简

微信支付官方坑太多,我们来精简 我把官方的代码,打包成了 an.wxapi.dll. 里面主要替换了下注释.呵呵.然后修改了几个地方. 修改一.Config.cs 1 namespace an.wxapi 2 { 3 public class WxPayConfig 4 { 5 6 public static string AppKey(string key) 7 { 8 return System.Configuration.ConfigurationManager.AppSettings[k

微信支付官方.net版之坑你没商量

//来源:http://www.cnblogs.com/ancms/p/4571567.html 微信支付官方.net版之坑你没商量 最近开始弄支付这块,先是支付宝手机网站支付,也是坑了我许久,不过还好,问题不大. 让我们看看微信支付有多少坑 微信商户平台,你们知道么(我前天才知道,别笑我) 登录地址:https://mch.weixin.qq.com 我查了很久,才知道,原来,帐号密码,发到你开户的邮箱里了,然后,我翻啊翻,终于让我找到帐号密码了. 实在不明白,帐号为嘛是:[email pro

微信支付遇到的坑

最近搞了个公众号,由于是新手,微信支付那一块其中就遇到了不少的坑,为此商家因为我的失误就丢了差不多1000块..下面总结一下遇到的坑 图为微信支付的官方文档 图为实际文档的代码 如果你用过微信支付的sdk,就会发现支付的设置是在jsapi.php这个文件下面,其中上面的那段代码是微信支付js api的调用,如果有支付行为就会调用function里面的函数,如果是返回的信息是"get_brand_wcpay_request:ok",就会执行if里面你的写的代码,按道理来说if里面一般放置