每日更新关注:http://weibo.com/hanjunqiang 
新浪微博!

iOS开发者交流QQ群:
446310206

一、在app中成功完成支付宝支付的过程

1、申请支付宝钱包。参考网址:


     这是使用支付宝支付的第一步,合作申请通过之后,会集成一个开发文件。即使不申请也可以下载,只是demo中会缺少几个必须的参数: 在demo中的 PartnerConfig.h 文件中可以看到

//合作身份者id,以2088开头的16位纯数字

#define PartnerID @""

//收款支付宝账号

#define SellerID  @""

//安全校验码(MD5)密钥,以数字和字母组成的32位字符

#define MD5_KEY @""

//商户私钥,自助生成

#define PartnerPrivKey

//支付宝公钥(老板给你的)

#define AlipayPubKey   @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB"

只有这几个参数备齐之后,demo才可以完成支付,所以接下来第二步

2、生成RSA
    这个需要在windows系统下生成,开发文档中也有生成的步骤。我是直接问后台要了这几个参数,所以这一步只能简单写到这。
 3、导入框架
      根据集成文件的开发文档,导入框架。可以参考demo。当四个参数都备齐之后可以先在demo上试一下能不能成功支付。然后再往自己的程序中导入。

每日更新关注:http://weibo.com/hanjunqiang 
新浪微博

二、代码的使用
1、支付需要的参数
    在demo中的ViewController.h中可以看到有这么一段代码

@interface Product :NSObject{

@private

float _price;

NSString *_subject;

NSString *_body;

NSString *_orderId;

}

@property (nonatomic,assign) float price;

@property (nonatomic,retain) NSString *subject;

@property (nonatomic,retain) NSString *body;

@property (nonatomic,retain) NSString *orderId;

@end

这个就是所支付产品需要的几个必要的字段。在开发文档中可以看到需要好多参数,但在真正用时,只需要特别注意这几个就行。demo中有自动拼接的方法,到时候直接调用就行。

2、app和支付宝客户端之间的跳转

NSString *appScheme = @"AlipaySdkDemo"; //应用跳转的URL

*这里要和plist文件中URL types 下面的字段保持一致

3、支付结果的入口

首先是WAP端的入口,在ViewController.m文件中可以找到,这里返回支付结果,比较简单,不多说。

独立端的入口,在AppDelegate里面,我试着在viewcontroller中找这个,但最后没找到。最后只能设置一个观察者,把支付结果发送过来再进行处理。

三、总结

第一次接触支付方面的东西,刚开始很迷茫,不明白其中财务方面是怎么对上号的。

那些都是在后台进行处理的,iOS开发时需要做的,就是完成这个支付流程。

==================================具体看下面流程====================================

第一步:引入框架

每日更新关注:http://weibo.com/hanjunqiang 
新浪微博

第二步:注意框架及拉进相关文件

每日更新关注:http://weibo.com/hanjunqiang 
新浪微博

第三步:上代码

直接建立根视图:

#import "RootViewController.h"
#import <AlipaySDK/AlipaySDK.h>
#import "Order.h"
#import "DataSigner.h"
@interface RootViewController ()

@end

@implementation RootViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    UIButton *button = [UIButton buttonWithType:(UIButtonTypeSystem)];
    [button addTarget:self action:@selector(buttonAction :) forControlEvents:(UIControlEventTouchUpInside)];
    button.frame = CGRectMake(100, 200, 100, 100);
    [button setTitle:@"支付" forState:(UIControlStateNormal)];
    [button setBackgroundColor:[UIColor yellowColor]];
    [self.view addSubview:button];
    self.view.backgroundColor = [UIColor greenColor];

}

每日更新关注:http://weibo.com/hanjunqiang 
新浪微博

点击事件:

- (void)buttonAction : (UIButton *)sender
{
//    NSLog(@"支付");

    /*
     *点击获取prodcut实例并初始化订单信息
     */
//    Product *product = [self.productList objectAtIndex:indexPath.row];

    /*
     *商户的唯一的parnter和seller。
     *签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。
     */

    /*============================================================================*/
    /*=======================需要填写商户app申请的===================================*/
    /*============================================================================*/
    // 16位的纯数字
    NSString *partner = @"2088。。公司唯一ID";
    // 收款账户
    NSString *seller = @"收款账号";
    NSString *privateKey = @"密钥";
    /*============================================================================*/
    /*============================================================================*/
    /*============================================================================*/

    //partner和seller获取失败,提示
    if ([partner length] == 0 ||
        [seller length] == 0 ||
        [privateKey length] == 0)
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
                                                        message:@"缺少partner或者seller或者私钥。"
                                                       delegate:self
                                              cancelButtonTitle:@"确定"
                                              otherButtonTitles:nil];
        [alert show];
        return;
    }

    /*
     *生成订单信息及签名
     */
    //将商品信息赋予AlixPayOrder的成员变量
    Order *order = [[Order alloc] init];
    order.partner = partner;
    order.seller = seller;
    order.tradeNO = @"123456"; //订单ID(由商家自行制定)
    order.productName = @"太空杯"; //商品标题
    order.productDescription = @"耐摔的太空杯"; //商品描述
    order.amount = [NSString stringWithFormat:@"%.2f",0.01]; //商品价格
    order.notifyURL =  @"http://www.lanou3g.com"; //回调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 = @"xiaohange";

    //将商品信息拼接成字符串
    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);
        }];

    }
}

//选中商品调用支付宝极简支付
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

}

每日更新关注:http://weibo.com/hanjunqiang 
新浪微博

最终效果:

每日更新关注:http://weibo.com/hanjunqiang 
新浪微博

iOS开发者交流QQ群:
446310206


iOS中 支付宝钱包详解/第三方支付 韩俊强的博客的更多相关文章

  1. iOS中 支付宝钱包具体解释/第三方支付 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博! iOS开发人员交流QQ群: 446310206 一.在app中成功完毕支付宝支付的过程 1.申请支付宝钱包.參考网 ...

  2. iOS中 项目开发易错知识点总结 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 点击return取消textView 的响应者 - (BOOL)textFieldShouldReturn:(UI ...

  3. iOS中发送短信/发送邮件的实现 韩俊强的博客

    需要引入框架: MessageUI.framework 布局如下: 短信和邮件: #import "ViewController.h" #import <MessageUI/ ...

  4. HTML5中 HTML列表/块/布局 韩俊强的博客

    从简单到复杂HTML5详解:每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 1.HTML列表 1.有序 2.无序 3.有序star属性 4.有序无序列表 代码: ...

  5. iOS中 扫描二维码/生成二维码详解 韩俊强的博客

    最近大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 指示根视图: se ...

  6. iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博 简单介绍: // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 ...

  7. iOS中 扫描二维码/生成二维码具体解释 韩俊强的博客

    近期大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 每日更新关注:http://weibo.com/hanjunqiang  新浪微博 指示根视图: se ...

  8. iOS中 HTTP/Socket/TCP/IP通信协议具体解释 韩俊强的博客

    简介: // OSI(开放式系统互联), 由ISO(国际化标准组织)制定 // 1. 应用层 // 2. 表示层 // 3. 会话层 // 4. 传输层 // 5. 网络层 // 6. 数据链接层 / ...

  9. iOS中 最新支付宝支付(AliPay) 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博 现在的支付方式一般有三种, 支付宝, 微信, 网银. 个人觉得最简单易用的还是支付宝, 微信虽然看起来币支付宝要简单 ...

随机推荐

  1. python2.7练习小例子(三)

        3):题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?     程序分析:假设该数为 x.1.则:x + 100 = n2, x + 100 + ...

  2. PTA 银行排队问题之单队列多窗口服务

    假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙.当有窗口空闲时,下一位顾客即去该窗口处理事务.当有多个窗口可选择时,假设顾客总是选择编号最小的窗口. 本题要求输出 ...

  3. js修改伪类元素样式

    <style type="text/css"> .htmlbox_close::before, .htmlbox_close::after { content: ''; ...

  4. 如何在joomla上展示word,pdf,xlsx,ppt

    去年用slideshare,非常好用,只要在joomla上装上插件,就能直接把slideshare上的文件弄到网站上了,但是前几天突然发现slideshare登不进去了,而<embed>下 ...

  5. webpack 4 + mockjs

    一.创建项目目录 二.添加开发依赖( html-webpack-plugin.webpack.webpack-cli.webpack-dev-server.webpack-api-mocker) 如下 ...

  6. opencv视屏流嵌入wxpython框架

    前几篇博客分享搭建人脸识别与情绪判断的环境和源码,但是没有UI,界面很难看,一打开就是opencv弹出的一个视屏框.处女座的我看着非常难受,于是决定做一个UI,稍微规矩好看一点,再怎么说,这样的话也算 ...

  7. CMS垃圾收集器

    介绍 CMS垃圾回收器的全称是Concurrent Mark-Sweep Collector,从名字上可以看出两点,一个是使用的是并发收集,第二个是使用的收集算法是Mark-Sweep.从而也可以推测 ...

  8. CentOS7.2安装Weblogic12c出现的问题

    Weblogic12c安装到步骤:Prerequisite  Checks 时,会进行操作系统版本的校验,即checking  operating  system  certification. 此处 ...

  9. GDAL库进度信息编写示例

    GDAL进度信息编写 GDAL库中的算法以及读写数据的时候一般都会提供两个与进度信息相关的参数,下面分别进行描述: GDALProgressFunc pfnProgress void * pProgr ...

  10. Unity UGUI图文混排(六) -- 超链接

    图文混排更新到超链接这儿,好像也差不多了,不过就在最后一点,博主也表现得相当不专业,直接整合了山中双木林同学提供的超链接的解决方案,博主甚至没来得及细看就直接复制了,但感觉还是挺好用的. 博主已经将超 ...