调用支付宝及注意事项

首先先导入依赖库,然后把AlipaySDK拖入到工程中,这时候会出现很多的错误,但是这不忙,一步一步来;
在Pch文件里面先引入两个头文件

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

当然,PCH怎么时候就不在描述了,因为在支付宝DEMO里面市导入了头文件的,然后把对应的文件加入到工程中,如下所示:

这里写图片描述

小心点,别忽略了libcrypto.a和libssl.a这两个文件,我就在这里载了一次,如果没有这两个文件汇报很多错的,所以小心点,点击触发,如果报错了,首先检查有没有这两个文件;下面是我出现的错误:
这里写图片描述

把原来的表视图去除掉,因为在使用支付宝的时候并不是表格形式的区支付,

在导入文件的时候,可能会报错找不到文件之类的问题,那么就去Build Settings里面设置;设置好路径,路径不正确就找不到文件
这里写图片描述

下面是代码实现:自己看吧,很简单的,拿过来直接用,

![代码](http://img.blog.csdn.net/20160111191512496)


#pragma mark   ==============点击订单支付行为==============
- (void)CreateProduct
{
    /*
     *商户的唯一的parnter和seller。
     *签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。
     */
    /*=======================需要填写商户app申请的===================================*/
    NSString *partner = @"申请的编号";
    NSString *seller = @"收款账号";
    NSString *privateKey = @"密钥";
    /*============================================================================*/
    if ([partner length] == 0 ||
        [seller length] == 0 ||
        [privateKey length] == 0)
    {
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"缺少partner或者seller或者私钥。" preferredStyle:UIAlertControllerStyleAlert];

        UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];

        [alert addAction:action];

        [self presentViewController:alert animated:YES completion:nil];
        return;
    }
    /*
     *生成订单信息及签名
     */
    //将商品信息赋予AlixPayOrder的成员变量
    Order *order = [[Order alloc] init];
    order.partner = partner;
    order.seller = seller;
    order.tradeNO = [self generateTradeNO]; //订单ID(由商家自行制定)
    order.productName = @"预付薪资"; //商品标题
    order.productDescription = PlanMessageDic[@"Table"][0][@"PayRecordStytleText"]; //商品描述
    order.amount = [NSString stringWithFormat:@"%.2f",[PlanMessageDic[@"Table"][0][@"Amount"] floatValue]]; //商品价格

    order.notifyURL =  @"http://BmFinance.93966.net:1063/UserYBmFinanceWeb/Alipay/notify_url.aspx"; //回调URL

    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 = @"alisdkdemo";

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

    //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
    id<DataSigner> 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);
        }];
    }
}

产生随机订单号:

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

    NSString *sourceStr = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    NSMutableString *resultStr = [[NSMutableString alloc] init];
    srand(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;
}

就到这里吧,结束了,小伙伴们,一起努力吧!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值