微信支付、银联支付、支付宝

appdelegate中添加方法:

(BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {

//    注册微信支付ID
[WXApi registerApp:APP_ID withDescription:@"app"];

}

  • (BOOL)application:(UIApplication )application openURL:(NSURL )url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    //如果极简开发包不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给开 发包
    if ([url.host isEqualToString:@”safepay”]) {
    [[AlipaySDK defaultService] processOrderWithPaymentResult:url
    standbyCallback:^(NSDictionary *resultDic) {
    NSLog(@”result = %@”,resultDic);
    }]; }
    if ([url.host isEqualToString:@”platformapi”]){//支付宝钱包快登授权返回 authCode
    [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
    NSLog(@”result = %@”,resultDic);
    }];
    }

    if ([url.host isEqualToString:@”pay”]){
    [WXApi handleOpenURL:url delegate:self];
    }
    return YES;
    }

  • (BOOL)application:(UIApplication )application openURL:(NSURL )url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    //如果极简开发包不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给开 发包
    if ([url.host isEqualToString:@”safepay”]) {
    [[AlipaySDK defaultService] processOrderWithPaymentResult:url
    standbyCallback:^(NSDictionary *resultDic) {
    NSLog(@”result = %@”,resultDic);
    }]; }
    if ([url.host isEqualToString:@”platformapi”]){//支付宝钱包快登授权返回 authCode
    [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
    NSLog(@”result = %@”,resultDic);
    }];
    }

    if ([url.host isEqualToString:@”pay”]){
    [WXApi handleOpenURL:url delegate:self];
    }
    return YES;
    }

pragma mark - 微信支付代理方法

-(void) onResp:(BaseResp*)resp {
NSString *strTitle = nil;
NSString *strMsg = nil;

if([resp isKindOfClass:[PayResp class]]){

    if (resp.errCode == WXSuccess) {
        //支付返回结果,实际支付结果需要去微信服务器端查询
        NSString *result = nil;
        NSString *hintInfo = nil;
        result = @"支付结果";
        hintInfo = @"支付结果:成功!";


        strTitle = result;
        strMsg = hintInfo;

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alert show];
    }
}

}


执行文件中添加方法:


pragma mark - 微信支付

  • (void)weixinPayWithMoney:(NSString )money WithAccount:(NSString )account {
    if (![WXApi isWXAppInstalled]) {
    [self alert:nil msg:_wxNoInstall];
    return;
    }

    NSString *urlString = [NSString stringWithFormat:@”http://%@/WeChatPay/payServlet?number=%@&txnAmt=%@&type=0“, @”120.26.110.99”, account, money];

    //解析服务端返回json数据
    NSError *error;
    //加载一个NSURL对象
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
    //将请求的url数据放到NSData对象中
    NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    if ( response != nil) {
    NSMutableDictionary *dict = NULL;
    //IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中
    dict = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];

    NSLog(@"url:%@",urlString);
    if(dict != nil){
        NSMutableString *retcode = [dict objectForKey:@"retcode"];
        if (retcode.intValue == 0){
            NSMutableString *stamp  = [dict objectForKey:@"timeStamp"];
    
            //调起微信支付
            PayReq* req             = [[PayReq alloc] init];
            req.openID              = [dict objectForKey:@"appid"];
            req.partnerId           = @"1250026601";
            req.prepayId            = [dict objectForKey:@"prepay_id"];
            req.nonceStr            = [dict objectForKey:@"nonceStr"];
            req.timeStamp           = stamp.intValue;
            req.package             = @"Sign=WXPay";
            req.sign                = [dict objectForKey:@"sign"];
            [WXApi sendReq:req];
            //日志输出
            NSLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",req.openID,req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign );
        }else{
            [self alert:_hintStr msg:_wrongNetStr];
        }
    }else{
        [self alert:_hintStr msg:_wrongNetStr];
    }
    

    }else{
    [self alert:_hintStr msg:_wrongNetStr];
    }
    }

//客户端提示信息
- (void)alert:(NSString )title msg:(NSString )msg
{
UIAlertView *alter = [[UIAlertView alloc] initWithTitle:title message:msg delegate:nil cancelButtonTitle:@”OK” otherButtonTitles:nil];

[alter show];

}

pragma mark - 支付宝充值

  • (void)alipayWithMoney:(NSString )money WithAccount:(NSString )account{

    // 账号,不能修改
    NSString *partner = @”“;
    // 账号,不能修改
    NSString *seller = @”“;
    // 秘钥,不能修改
    NSString *privateKey = @”“;

    /*
    *生成订单信息及签名
    */
    //将商品信息赋予AlixPayOrder的成员变量
    Order *order = [[Order alloc] init];
    order.partner = partner;
    order.seller = seller;
    order.tradeNO = [self generateTradeNO]; //订单ID(由商家自行制定)
    order.productName = @”充值”; //商品标题
    // cpass账号作为商品描述,对应充值成功后返回的body
    order.productDescription = account; //商品描述
    order.amount = [NSString stringWithFormat:@”%@”,money]; //商品价格
    // order.amount = @”0.01”;
    // order.notifyURL = @”http://120.26.110.99/Alipay/backUrl“; //回调URL
    order.notifyURL = [NSString stringWithFormat:@”http://%@“, [HOST_IP stringByAppendingString:@”/Alipay/backUrl”]];

    order.service = @”mobile.securitypay.pay”;
    order.paymentType = @”1”;
    order.inputCharset = @”utf-8”;
    order.itBPay = @”30m”;
    order.showUrl = @”m.alipay.com”;

    //应用注册scheme,在AlixPayDemo-Info.plist定义URL types
    NSString *appScheme = @”“;

    //将商品信息拼接成字符串
    NSString *orderSpec = [order description];
    NSLog(@”orderSpec = %@”,orderSpec);

    //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
    id signer = CreateRSADataSigner(privateKey);
    NSString *signedString = [signer signString:orderSpec];

    //将签名成功字符串格式化为订单字符串,请严格按照该格式
    NSString *orderString = nil;
    if (signedString != nil) {
    orderString = [NSString stringWithFormat:@”%@&sign=\”%@\”&sign_type=\”%@\”“,
    orderSpec, signedString, @”RSA”];

    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
        NSLog(@"reslut = %@",resultDic);
        [Conference getBalance];
    
        [[NSNotificationCenter defaultCenter] postNotificationName:CheckAccount object:nil];
    
    }];
    

    }
    }

pragma mark ==============产生随机订单号==============

  • (NSString *)generateTradeNO
    {
    static int kNumber = 15;

    NSString *sourceStr = @”0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”;
    NSMutableString *resultStr = [[NSMutableString alloc] init];
    srand((unsigned int)time(0));
    for (int i = 0; i < kNumber; i++)
    {
    unsigned index = rand() % [sourceStr length];
    NSString *oneStr = [sourceStr substringWithRange:NSMakeRange(index, 1)];
    [resultStr appendString:oneStr];
    }
    return resultStr;
    }

pragma mark - 银联支付

  • (void)unionPayWithMoney:(NSString )money WithAccount:(NSString )account {
    // 后台获取tn
    NSString url = [NSString stringWithFormat:@”UnionPay/IndexServlet?number=%@&txnAmt=%ld”, account, (long)[money integerValue] 100];
    // NSString *url = [NSString stringWithFormat:@”UnionPay/IndexServlet?number=%@&txnAmt=%ld”, account, (long)1];

    MKNetworkEngine *engine = [[MKNetworkEngine alloc] initWithHostName:HOST_IP customHeaderFields:nil];
    MKNetworkOperation *op = [engine operationWithPath:url params:nil httpMethod:@”GET” ssl:NO];

    [op addCompletionHandler:^(MKNetworkOperation *operation) {
    NSString *responseString = [operation responseString];
    NSLog(@”responseString :%@”, responseString);
    [UPPayPlugin startPay:responseString mode:@”00” viewController:self delegate:self];
    } errorHandler:^(MKNetworkOperation *operation, NSError *error) {
    NSLog(@”error :%@”, error);
    // [OMGToast showWithText:CustomLocalizedString(@”网络错误”, nil) duration:2.0f];
    }];

    [engine enqueueOperation:op];
    }

pragma mark 银联支付结果代理方法

-(void)UPPayPluginResult:(NSString*)result {
NSLog(@”unionPay result:%@”, result);
[Conference getBalance];

}


info里面需要配置

*

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值