zoukankan      html  css  js  c++  java
  • iOS微信APP支付填坑!(跳转微信支付,只有确定按钮)

    这两天接微信支付的SDK,遇到了一个天坑,微信文档里面不写清楚,demo里面也没有,参数少了一个无法支付啊有没有!有没有!有没有!

    最后调试成功,得知真相的我眼泪掉下来。。。

    先让我们看看是什么情况:

    --------------------------------------------------------我是分割线--------------------------------------------------------

    预支付订单那块就不说了,基本上都没问题,服务器会返回一个prepay_id预支付订单号,拿到这个订单号在接下来的支付操作中会用到。

    根据微信的文档还有demo显示,支付的时候需要这几个参数应该就够了

    /** 商家向财付通申请的商家id */
    @property (nonatomic, retain) NSString *partnerId;
    /** 预支付订单 */
    @property (nonatomic, retain) NSString *prepayId;
    /** 随机串,防重发 */
    @property (nonatomic, retain) NSString *nonceStr;
    /** 时间戳,防重发 */
    @property (nonatomic, assign) UInt32 timeStamp;
    /** 商家根据财付通文档填写的数据和签名 */
    @property (nonatomic, retain) NSString *package;
    /** 商家根据微信开放平台文档对数据做的签名 */
    @property (nonatomic, retain) NSString *sign;

    看着没什么问题吧,把前面几个参数用字典序拼接,然后用key加密就生成sign了是吧,是不是都这么认为的?

    no!图样图森破!!!

    如果你按照这样签名去支付的话,会看到这样的界面

    不明真相的你一定会一脸懵比

    谁曾想,微信这个大坑X!要签名的参数还差一个appid!把这个参数拼接签名之后,再次跳转微信支付就会有相应的订单信息了。

     代码如下:

        PayReq *payRequest = [[PayReq alloc] init];
        payRequest.partnerId = @"13473*****";
        payRequest.prepayId = prepayid;
        payRequest.nonceStr = [NSString randomString];
        payRequest.timeStamp = [ZHDeviceModel shareModel].timesStamp.doubleValue / 1000;
        payRequest.package = @"Sign=WXPay";
        NSDictionary *params = @{@"partnerid" : payRequest.partnerId,
                                 @"prepayid" : payRequest.prepayId,
                                 @"noncestr" : payRequest.nonceStr,
                                 @"timestamp" : [NSNumber numberWithInt:payRequest.timeStamp],
                                 @"package" : payRequest.package,
                                 @"appid" : @"wxa8a4*********",
                                 }.mutableCopy;
        payRequest.sign = [[MD5Model wChatSignedStringWithDic:params] uppercaseString];
        [WXApi sendReq:payRequest];
  • 相关阅读:
    .Net -- NLog日志框架配置与使用
    Prism -- 简介
    Prism.WPF -- Prism框架使用(下)
    Prism.WPF -- Prism框架使用(上)
    Win32Api -- 关闭当前应用
    WPF -- 一种圆形识别方案
    C#语言特性及发展史
    WPF -- 一种实现本地化的方法
    DEV中右键菜单如何只在非空单元格上显示?
    打开一个窗体,其他窗体处于不可编辑状态
  • 原文地址:https://www.cnblogs.com/CrazySL/p/5585393.html
Copyright © 2011-2022 走看看