美文网首页
微信支付

微信支付

作者: iOS_zeng | 来源:发表于2019-05-21 22:51 被阅读0次

    4.1 导入SDK库
    导入上面那个iOS头文件和库下载下载出来的SDK包的就行,然后需要链接上依赖库,在Target —> BuildPhases —> Link Binary With Libraries— 点击+号 -> 搜索你需要的系统库。

    SystemConfiguration.framework
    libz.tbd
    libsqlite3.0.tbd
    CoreTelephony.framework
    QuartzCore.framework
    libc++.tbd

    1、项目设置APPID

    商户在微信开放平台申请开发APP应用后,微信开放平台会生成APP的唯一标识APPID。在Xcode中打开项目,设置项目属性中的URL Schemes为您的APPID。如图8.7标红位置所示。


    图片.png

    2、注册APPID

    商户APP工程中引入微信lib库和头文件,调用API前,需要先向微信注册您的APPID,代码如下:

    [WXApi registerApp:@"wxd930ea5d5a258f4f" withDescription:@"demo 2.0"];
    3、调起支付

    商户服务器生成支付订单,先调用【统一下单API】生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付。以下是调起微信支付的关键代码:

    
    PayReq *request = [[[PayReq alloc] init] autorelease];
    request.partnerId = @"10000100";
    request.prepayId= @"1101000000140415649af9fc314aa427";
    request.package = @"Sign=WXPay";
    request.nonceStr= @"a462b76e7436e98e0ed6e13c64b4fd1c";
    request.timeStamp= @"1397527777";
    request.sign= @"582282D72DD2B03AD892830965F428CB16E7A256";
    [WXApi sendReq:request];
    
    

    注意:该sign生成字段名列表见调起支付API

    参数说明

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

    4、支付结果回调

    照微信SDK Sample,在类实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意 一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。代码示例如下:

    -(void)onResp:(BaseResp*)resp{
      if ([respisKindOfClass:[PayRespclass]]){
          PayResp*response=(PayResp*)resp;
          switch(response.errCode){
              caseWXSuccess:
                        //服务器端查询支付通知或查询API返回的结果再提示成功
                        NSlog(@"支付成功");
                break;
                default:
                NSlog(@"支付失败,retcode=%d",resp.errCode);
                break;
          }
            }
        } 
    
    

    在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin(如下图所示)。


    图片.png

    3、处理好iOS 9.0以后的(https:// )问题在target->info.plist中添加如下图:


    图片.png

    相关文章

      网友评论

          本文标题:微信支付

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