IOS-支付宝

IOS-支付宝

 
一、使用支付宝进行一个完整的支付功能,大致有以下步骤:
与支付宝签约,获得商户ID(partner)和账号ID(seller)
下载相应的公钥私钥文件(加密签名用)
下载支付宝SDK
生成订单信息
调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道
支付完毕后返回支付结果给商户客户端和服务器
 
注意:我们主要负责下单,和处理支付结果
 
 
二、调用接口步骤

1.封装订单模型

AlixPayOrder *order = [[AlixPayOrder alloc] init];

// 生成订单描述

NSString *orderSpec = [order description];

 

2.签名

id<DataSigner> signer = CreateRSADataSigner(@“私钥key”);

// 传入订单描述 进行 签名

NSString *signedString = [signer signString:orderSpec];

 

3.生成订单字符串

NSString *orderString = [NSString stringWithFormat:@”%@&sign=\”%@\”&sign_type=\”%@\””,

                         orderSpec, signedString, @”RSA”];

 

4.调用支付接口

AlixPay * alixpay = [AlixPay shared];

// appScheme:商户自己的协议头

int ret = [alixpay pay:orderString applicationScheme:appScheme];

 
 
代码:
 1 - (IBAction)buy {
 2     // 1.生成订单信息
 3     AlixPayOrder *order = [[AlixPayOrder alloc] init];
 4     order.partner = PartnerID; // 商户ID
 5     order.seller = SellerID; // 帐号ID
 6     
 7     order.tradeNO = @"2014082717183778587475"; // 订单ID(由商家自行制定)
 8     order.productName = self.deal.title; // 商品标题
 9     order.productDescription = self.deal.desc; // 商品描述
10     order.amount = [NSString stringWithFormat:@"%.2f", [self.deal.current_price floatValue]]; //商品价格
11     order.notifyURL =  @"http%3A%2F%2Fwwww.xxx.com"; // 回调URL
12     
13     // 2.签名加密
14     id<DataSigner> signer = CreateRSADataSigner(PartnerPrivKey);
15     NSString *signedString = [signer signString:[order description]];
16     
17     // 3.利用订单信息、签名信息、签名类型生成一个订单字符串
18     NSString *orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
19                              [order description], signedString, @"RSA"];
20     
21     // 4.打开支付宝,传递订单信息
22     [AlixLibService payOrder:orderString AndScheme:@"heituan" seletor:@selector(paymentResultDelegate:) target:self];
23 }

 

 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109098.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python和c++哪个好_pycharm怎么创建python项目

    python和c++哪个好_pycharm怎么创建python项目创建项目首先打开Pycharm勾选IconfirmthatIhavereadandacceptthetermsofthisUserAgreement接下来选择Don’tsend就可以了初次登陆的时候因为你没有Project,所以我们可以创建一个Project随后,我们便可以得到以下界面,new1是项目的名称,new1之前的是你项目所在路径,当然你也可以设置其他的名称,尽…

    2022年8月26日
    14
  • constexpr和常量表达式

    constexpr和常量表达式常量表达式常量表达式(constexpression)是指值不会改变并且在编译过程就能得到计算结果的表达式。显然,字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式。constinta=3;//a是常量表达式constintb=a+1;//b是常量表达式intc=8;//c不是常量表达式,因为c的数据类型是int而不是constintco

    2022年9月29日
    4
  • 多线程thread与runnable的区别_handlerthread与thread的区别

    多线程thread与runnable的区别_handlerthread与thread的区别C#中多线程的线程加.IsBackground=true与不加有什么区别?按照MSDN上讲:“获取或设置一个值,该值指示某个线程是否为后台线程。”其实这个解释并不到位,至少应该解释一…

    2022年10月9日
    2
  • vuejs 和 element 搭建的一个后台管理界面

    vuejs 和 element 搭建的一个后台管理界面

    2021年10月11日
    48
  • 【23】进大厂必须掌握的面试题-50个spring面试

    让我们从Spring面试问题的第一部分开始,即“一般问题”。 一般问题–Spring面试问题 1.不同版本的Spring Framework的主要功能是什么? 版 商标 特征 Sp…

    2020年11月15日
    666
  • LDR命令

    LDR命令  LDR指令用于从内存中将一个32位的字读取到指令中的目标寄存器中,如果目标寄存器为PC,则可以实现“长”跳转。主要有一下3种方式使用:ldrr0,_startldrr0,=_startldrpc,_start  逐条分析:一、ldrr0,_start  从内存地址_start的地方,把其对应的命令执行对应的“执行码”读入到r0中。二、ldrr0,=_start  …

    2022年6月28日
    82

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号