美文网首页
微信支付回调的判断问题

微信支付回调的判断问题

作者: androidfan | 来源:发表于2018-12-24 13:33 被阅读0次

    微信支付,支付宝支付和余额支付,这或许是app 支付里必须要做的一套完整支付方式吧。就拿我自己做的app来说,app里有三处地方需要使用到微信支付

    • 充值 ,对于充值这块,支付完成后是需要回到钱包,重新刷新钱包页面数据
    • 支付订单 ,对于这块的逻辑,支付完成就要返回订单列表,并且刷新数据
    • 支付尾款 ,这里则是要求,支付完成后直接跳到订单详情页,并且打开评价的弹窗
      需求很清晰,逻辑也是很清晰的,可是我却一时迷茫起来。
      对于这几种跳转逻辑是非常好做的,唯一棘手的是,在微信支付成功的回调里我要怎么判断是哪个Activity 发来的请求呢?
      我们先来看下调起微信支付的代码
                                          val appid = data.appid
                                          val nonce_str = data.nonce_str
                                          val partnerid = data.partnerid
                                          val sign = data.sign
                                          val timestamp = data.timestamp.toString()
                                          val prepay_id = data.prepay_id
                                          //将该app注册到微信
                                          msgApi.registerApp(appid)
                                          //微信
                                          val request = PayReq()
                                          request.appId = appid
                                          request.partnerId = partnerid
                                          request.prepayId = prepay_id
                                          request.packageValue = "Sign=WXPay"
                                          request.nonceStr = nonce_str
                                          request.timeStamp = timestamp
                                          request.sign = sign
                                          request.extData = "app data"
                                          Log.i("微信请求", "onClick: " + request.toString())
                                          msgApi.sendReq(request)
    

    然后我们再来看看微信支付的回调

    @Override
       public void onResp(BaseResp resp) {
           if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
               if (resp.errCode == 0) {   //付款成功
                  
               } else {                //付款失败
                   Toast.makeText(this, "支付失败", Toast.LENGTH_SHORT).show();
               }
               WXPayEntryActivity.this.finish();
           }
       }
    
    image.png

    emmmm 有点小无助
    然后就是百度呗,看文档呗。后来参考资料和看文档,发现调起微信支付的时候,有个字段 request.extData = "app data",难到这个是的??那就试试吧,果然黄天不负有心人,真的是这个,但是在微信支付的回调里又出幺蛾子了。


    image.png

    WHT ????resp 实体类里是无法拿到那个extData的,这个,我要去哪里接收呢?又是一番百度和尝试,最后终于发现,原来是需要转换下的

     @Override
        public void onResp(BaseResp resp) {
            if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
                if (resp.errCode == 0) {   //付款成功
                    PayResp resps = (PayResp) resp;
                    String payType = resps.extData;
                    Toast.makeText(WXPayEntryActivity.this, "付款成功", Toast.LENGTH_SHORT).show();
                    switch (payType) {
                        case "lastMoney":   //支付尾款的
                          
                            break;
                        case "charge":       //充值的
                          
                            break;
                        case "orderRefresh": //订单里支付
                          
                            break;
                    }
                } else {                //付款失败
                    Toast.makeText(this, "支付失败", Toast.LENGTH_SHORT).show();
                }
                WXPayEntryActivity.this.finish();
            }
        }
    

    嗯,这样就可以了,哈哈。果然,最聪明的还是我们IT 程序员

    相关文章

      网友评论

          本文标题:微信支付回调的判断问题

          本文链接:https://www.haomeiwen.com/subject/uvzakqtx.html