iOSAPP端接入微信支付流程

如题所述

第1个回答  2022-06-10
商户在微信开放平台申请开发APP应用后,微信开放平台会生成APP的唯一标识APPID。在Xcode中打开项目,设置项目属性中的URL Schemes为您的APPID。如图所示。

2.导入微信支付SDK

将官方demo中的这个文件夹拷贝到项目里

在APPdelegate里设置APPID

导入依赖库

项目中点击支付的按钮写上如下方法

别忘了导入头文件和遵循代理和注册代理  

info.plist里添加如下字段LSApplicationQueriesSchemes,为Array类型,然后在里面添加两个小选项,分别为weixin和wechat

注意!!!下面这三处  一定要对应上  少一不可

如果不回调,APPdelegate里写上这个

//被废弃的方法如下

- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url {

    return  [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];

}

- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation {

    return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];

}

//替换的新方法

- (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary*)options {

    return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];

}

//调起微信支付

    PayReq* req  = [[PayReq alloc] init];

    req.partnerId = @"1220277201";

    req.prepayId  = @"9201039000160315ab9324b87b451223";

    req.nonceStr  = @"83DB7tk21akNRSFs";

    req.timeStamp = 1458027344;

    req.package  = @"Sign=WXPay";

    req.sign      = @"db6919dbd8ccb3f8a25108bebcd87f7a02c52e39";

    [WXApi sendReq:req];

// 获取当前时间

    time_t now;

    time(&now);

    // 时间戳

    //NSString *timestamp = [NSString stringWithFormat:@"%ld", now];

    // 随机字符串

    //NSString *nonceStr = [[self md5:timestamp] uppercaseString];

    //订单id

    NSString *prepayid =  _prepayid;

    PayReq *request = [[PayReq alloc] init];

    /** 商家向财付通申请的商家id */

    request.partnerId = WXPartnerid;

    /** 预支付订单 */

    request.prepayId= prepayid;

    /** 商家根据财付通文档填写的数据和签名 */

    request.package = @"Sign=WXPay";

    /** 随机串,防重发 */

    request.nonceStr= _noncestr;

    /** 时间戳,防重发 */

    request.timeStamp = [_timestamp intValue];

    /** 商家根据微信开放平台文档对数据做的签名 */

    request.sign= _sign;

    /*! @brief 发送请求到微信,等待微信返回onResp

     *

     * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持以下类型

     * SendAuthReq、SendMessageToWXReq、PayReq等。

     * @param req 具体的发送请求,在调用函数后,请自己释放。

     * @return 成功返回YES,失败返回NO。

     */

    [WXApi sendReq: request];
相似回答