关闭

微信支付成功,如何刷新用户当前页面的余额

标签: 支付微信
2187人阅读 评论(0) 收藏 举报
分类:

本项目中,使用微信支付,支付成功后,弹出提示框,并且目的是改变当前用户的余额。。。我们在互动直播项目中发现 ,然而事情并没有那么简单。

代码如下:
我们知道,应该在appdelegate中调用微信支付代理,告知用户的充值结果是否正确。
为了确保安全,应使用服务器对用户的余额进行保存
我在这里为了传值 有设置了一个代理 如下:

@protocol payIsOkDelegate

- (void)payIsOk;

@end
@property (retain,nonatomic) id <payIsOkDelegate> payIsOkDelegate;

-(void) onResp:(BaseResp*)resp
{
    if([resp isKindOfClass:[SendMessageToWXResp class]])
    {
        SwiftFunction *sobj = [[SwiftFunction alloc] init];
        [sobj shareRespFromWeixin:resp.errCode ];
    }
    else if([resp isKindOfClass:[SendAuthResp class]])
    {
        NSLog(@"onResp");
        SendAuthResp *aresp = (SendAuthResp *)resp;
        NSLog(@"code:%@,state:%@,errcode:%d", aresp.code, aresp.state, aresp.errCode);
        if (aresp.errCode== 0) {
            NSString *code = aresp.code;
            self.kWeiXinCode =  aresp.code;
            [self getAccess_token];
        }
    }else if([resp isKindOfClass:[PayResp class]]){
        PayReq * res = resp;
        //支付返回结果,实际支付结果需要去微信服务器端查询
        NSString *strMsg,*strTitle = [NSString stringWithFormat:@"支付结果"];
        PayViewController *payViewController = [[PayViewController alloc] init];



        self.payIsOkDelegate = payViewController; //设置代理

        [self.payIsOkDelegate payIsOk];

        switch (resp.errCode) {
            case WXSuccess:
            {
                strMsg = @"支付结果:成功!";
                NSLog(@"支付成功-PaySuccess,retcode = %d", resp.errCode);
                PayViewController *payViewController = [[PayViewController alloc] init];



                self.payIsOkDelegate = payViewController; //设置代理

                [self.payIsOkDelegate payIsOk];

                break;
            }
            default:

                strMsg = [NSString stringWithFormat:@"支付失败!请重新支付!"];
                NSLog(@"错误,retcode = %d, retstr = %@", resp.errCode,resp.errStr);
                break;
        }
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alert show];

    }
}

在支付成功之后通过代理查看支付结果,再通过代理回到这个页面进行用户数据的网络保存。

- (void)payIsOk
{
    NSLog(@"%lu",(unsigned long)self.productModelArray.count);
    NSUserDefaults *defaultPay = [NSUserDefaults standardUserDefaults];

    NSString *productId = [defaultPay objectForKey:@"productId"];
    NSString *ProductPrice = [defaultPay objectForKey:@"ProductPrice"];
    NSLog(@"########    %@,%@",productId,ProductPrice);

        NSString *urlStr1=[NSString stringWithFormat:@"http://baidu.com"];
        AlamofireRequest *fireRequest = [[AlamofireRequest alloc]initWithParameters:nil];
    NSString *paraToken = [fireRequest creatToken];
        NSString *userId = [fireRequest getCurrentUserId];
        NSDictionary *parameters1;
    NSLog(@"##### %@",userId);
    NSLog(@"##### %@",paraToken);
    parameters1 =@{
                   @"paraToken":paraToken,
                   @"productBuyHis.userId":userId,


                   } ;
        AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];

        manager.responseSerializer = [AFHTTPResponseSerializer serializer];
        [manager POST:urlStr1 parameters:parameters1 success:^(NSURLSessionDataTask *task, id responseObject) {

            NSJSONSerialization *json = [NSJSONSerialization JSONObjectWithData:responseObject options:nil error:nil];
            NSDictionary *dic = json;
            NSDictionary *d = dic[@"user"];

            NSString *userCoin = d[@"golds"];
            //         userCoin = @"1000";
            NSUserDefaults *defaultCreator = [NSUserDefaults standardUserDefaults];
            [defaultCreator setObject:userCoin forKey:@"userCoinKey"];
            CoinNum.text = userCoin;

            NSLog(@"!!!!!!!!!!!!!!%@",userCoin);
            NSLog(@"!!!!!!!!!!!!!!!!!!!!!   %@",json);
        } failure:^(NSURLSessionDataTask *task, NSError *error) {
            NSLog(@"payIsOkpayIsOkpayIsOkerror   %@",error);

        }];



}

这里写图片描述

这里应该成功的改变了用户余额吧。。
然而,并没有。。

难道是子线程没有办法刷新UI,于是,我有回到了主线程操作

 dispatch_async(dispatch_get_main_queue(), ^{
        NSUserDefaults *defaultCreator = [NSUserDefaults standardUserDefaults];
            [defaultCreator setObject:userCoin forKey:@"userCoinKey"];
            CoinNum.text = userCoin;
    });

这下没问题了吧。。。。。然而,,依旧不行

接下来我们又用到了,__weak 等,依旧没有解决
最后。。。。我们用了最笨的方法。用户交互
通过,用户的点击确定充值成功按钮,开刷新UI。。。。这样就可以了,,,,但是很Low。
如果,有高人指点,不胜感激。!@!!!!!!

0
0
查看评论

微信支付出现--3当前页面的URL未注册

最近在尝试着写微信支付方面的内容,今天下午的时候遇到了一个问题,也就是当前页面没有进行注册的问题。 在写好后台代码之后我在微信后台配置了测试授权目录和支付白名单,如下图所示,但是无论我如何进行测试总是会提醒一个错误就是“3当前页面的URL未注册” 再说就是这儿还需要注意一些细...
  • daily886
  • daily886
  • 2017-01-23 17:40
  • 3764

微信支付:“当前页面的URL未注册”

微信支付之:3当前页面的URL未注册
  • qq_16071145
  • qq_16071145
  • 2016-05-04 21:53
  • 35959

微信支付提示"当前页面的url未注册"

支付授权目录配置格式按微信要求结尾必须有”/” 如:http://xxx.com/pay/ 此时如果业务页面正好是index时,我们会习惯性地省略 /index, 正是这种情况导致出现”当前页面的url未注册”; 此时配置oauth2链接的redirect_uri时必须加上pay下级的inde...
  • dotffer
  • dotffer
  • 2016-05-18 23:04
  • 9002

微信支付url未注册问题解决方案

微信H5网页支付产生未注册的问题 最近开发单页应用,然后集成在微信端。因为项目需要接通微信支付,而在开发过程中也遇上了一些问题。 所以便写下这篇文章,希望给同样遇上问题的朋友一个参考。 如果你此刻正好遇上图中的情况,那么我这篇文章也许能帮到你。 微信网页端支付接口,也许...
  • weixin_29351003
  • weixin_29351003
  • 2017-07-11 23:52
  • 9711

PHP版微信JSAPI支付时报"当前页面的URL未注册"的问题

原因1:公众号支付授权目录或测试授权目录设置不正确。 原因2:微信SDK"WxPay.JsApiPay.php"文件中GetOpenid方法中$baseUrl的拼接的结果与支付授权目录配置的不一致。(这个是重点问题,调试打印检查你就明白我的意思了)。 ...
  • tangxinzhuan
  • tangxinzhuan
  • 2015-11-19 16:15
  • 7224

微信公众号支付出错: 当前页面的URL未注册: get_brand_wcpay_request:fail

支付授权目录 设置问题 如下设置 假如请求是:http://www.xxx.com/shop/2/user/do-pay 必须填写: http://www.xxx.com/shop/2/user/ 假如请求是:http://www.xxx.com/wxpay/ord...
  • buyueliuying
  • buyueliuying
  • 2016-08-23 16:39
  • 6952

公众号微信支付直播室送礼物

1.h5页面通过这个接口获取预支付id @RequestMapping(value = "/payOrder") @ResponseBody public String payOrder(HttpServletRequest request, double ...
  • haibo8023
  • haibo8023
  • 2017-08-05 17:50
  • 116

微信支付当前url未注册问题

当前 url 未注册
  • u010201484
  • u010201484
  • 2017-12-07 17:05
  • 664

微信公众号支付 当前页面的url未注册 一直提示这个 求救!!!

支付时显示 “当前页面的url未注册“在商户平台已经设置好了请求地址是http://xxx.com/order/Pay.jsp 一直提示 这个目录未注册 微信后台已经设置了支付授权目录,支付授权目录为http://xxx.com/order/,还是一直提示当前页面的url未注册  找了一天...
  • qq_31483135
  • qq_31483135
  • 2018-01-18 17:47
  • 214

微信支付坑:url未注册

微信支付,报:url未注册 页面URL未注册 支付授权目录 这里很重要我就是在这里折腾了很久。怎么设置呢,首先要看你支付的当前页面URL 比如是:http://www.taidupa.com/wxpay/js_api_call.php 你就必须填写: ht...
  • tongdengquan
  • tongdengquan
  • 2016-05-18 16:16
  • 3807
    个人资料
    • 访问:176259次
    • 积分:3336
    • 等级:
    • 排名:第12005名
    • 原创:153篇
    • 转载:18篇
    • 译文:2篇
    • 评论:98条
    博客专栏
    最新评论