iOS--支付宝环境集成

 

1.下载支付宝SDK以及Demo

https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1

2.新建文件夹“AliSDK”,将压缩包内的文件拷贝到该文件夹下,完成后如下图所示:

 

3.将文件夹拷贝到项目中,

 

4.执行完第二步后项目目录里会出现蓝色的AliSDK分组。然后添加相应的库文件,添加完成后如下图所示:

5.拷贝完成后编译会出现如下错误:只需要在相应的类内添加:#import <Foundation/Foundation.h>即可解决

6.添加完成后编译仍然有错误:

解决办法:Targets->Build Settings->Header Search Path中添加1中建立的aliSDK文件夹的路径(找到alisdk路径拖拽到这儿就好了):

技术分享

 

此时问题解决了

7.整理项目目录,把添加的库文件移动的framework分组内,ali也移动到framework分组内,如下所示:

 

8.新建Product类,Product.h内如下所示:

#import <Foundation/Foundation.h>@interface Product : NSObject{
@privatefloat     _price;NSString *_subject;NSString *_body;NSString *_orderId;
}@property (nonatomic, assign) float price;
@property (nonatomic, copy) NSString *subject;
@property (nonatomic, copy) NSString *body;
@property (nonatomic, copy) NSString *orderId;@end

 9.viewController.h

#import "ViewController.h"
#import "Product.h"
#import "Order.h"
#import "AliSDK/Util/DataSigner.h"
#import <AlipaySDK/AlipaySDK.h>
@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)clickPay:(UIButton *)sender {[self testPay];
}-(void)testPay{/**点击获取prodcut实例并初始化订单信息*/Product *product = [[Product alloc]init];/**商户的唯一的parnter和seller。*签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。*//*============================================================================*//*=======================需要填写商户app申请的===================================*//*============================================================================*/NSString *partner = @"";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:selfcancelButtonTitle:@"确定"otherButtonTitles:nil];[alert show];return;}/**生成订单信息及签名*///将商品信息赋予AlixPayOrder的成员变量Order *order = [[Order alloc] init];order.partner = partner;order.sellerID = seller;order.outTradeNO = [self generateTradeNO]; //订单ID(由商家自行制定)order.subject = product.subject; //商品标题order.body = product.body; //商品描述order.totalFee = [NSString stringWithFormat:@"%.2f",product.price]; //商品价格order.notifyURL =  @"http://www.xxx.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 typesNSString *appScheme = @"alisdkdemo";//将商品信息拼接成字符串NSString *orderSpec = [order description];NSLog(@"orderSpec = %@",orderSpec);//获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncodeid<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((unsigned)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;
}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end

 

 10.appdelegate.m中添加如下代码:

- (BOOL)application:(UIApplication *)applicationopenURL:(NSURL *)urlsourceApplication:(NSString *)sourceApplicationannotation:(id)annotation {if ([url.host isEqualToString:@"safepay"]) {//跳转支付宝钱包进行支付,处理支付结果[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {NSLog(@"result = %@",resultDic);}];}return YES;
}// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{if ([url.host isEqualToString:@"safepay"]) {//跳转支付宝钱包进行支付,处理支付结果[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {NSLog(@"result = %@",resultDic);}];}return YES;
}

大功告成!!

 

转载于:https://www.cnblogs.com/sunjianfei/p/5727119.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java EE 6测试第二部分– Arquillian和ShrinkWrap简介

在Java EE 6测试的第一部分中&#xff0c;我简要介绍了使用Glassfish嵌入式容器的EJB 3.1 Embeddable API&#xff0c;以演示如何启动该容器&#xff0c;如何在项目类路径中查找bean以及运行非常简单的集成测试。 这篇文章重点介绍Arquillian和ShrinkWrap以及为什么它们是用于企…

【腾讯Bugly干货分享】Android内存优化总结实践

本文来自于腾讯Bugly公众号&#xff08;weixinBugly&#xff09;&#xff0c;未经作者同意&#xff0c;请勿转载&#xff0c;原文地址&#xff1a;https://mp.weixin.qq.com/s/2MsEAR9pQfMr1Sfs7cPdWQ 导语 智能手机发展到今天已经有十几个年头&#xff0c;手机的软硬件都已经发…

令人印象深刻的第一个Apache Camel版本

为了准备下周的CamelOne会议&#xff0c;我花了一些时间回顾一下Apache Camel项目的历史。 因此&#xff0c;除其他外&#xff0c;我了解了Apache Camel的第一个正式1.0版本 。 Apache Camel 1.0 – 5年前 我看的越多&#xff0c;这个版本的事实给我留下了深刻的印象。 现在您…

为什么在2012/2013年我将在新的Enterprise Java项目中继续使用Spring *和* Java EE

自从我担任技术决策职务以来已经过去了一年多&#xff0c;很高兴看到我仍然与之保持着完美的和谐。 几个月前&#xff0c;我在KaiWhner的一个不错的博客中写了一个有关JEE与Spring的答案。 如果观点没有不同&#xff0c;那么讨论的附加值在哪里&#xff1f; 我确实同意Kai的许多…

linux ubuntu 五笔输入法,ubuntu下安装fcitx五笔输入法

安装fcitx输入法sudo add-apt-repository ppa:fcitx-team/stable #添加安装源&#xff0c;apt-get 添加&#xff0c;nightly源也可以sudo apt-get update #更新源&#xff0c;否则无法安装fcit…

浅谈Windows下SVN在Android Studio中的配置、基本使用及解除关联

看到网上很多关于svn环境配置和关联Android-Studio的很多博文&#xff0c;发现很零散&#xff0c;想集大家所长整理一下&#xff1a; 在AndroidStudio中开发版本控制中&#xff0c;除了Git就是SVN&#xff0c;和Eclipse不同Android Studio没有提供单独的插件&#xff0c;只能和…

四. 基于环视Camera的BEV感知算法-BEVDepth

目录 前言0. 简述1. 算法动机&开创性思路2. 主体结构3. 损失函数4. 性能对比总结下载链接参考 前言 自动驾驶之心推出的《国内首个BVE感知全栈系列学习教程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 本次课程我们来学习下课程第四章——基于环视Cam…

【腾讯Bugly干货分享】Android Patch 方案与持续交付

本文来自于腾讯bugly开发者社区&#xff0c;非经作者同意&#xff0c;请勿转载&#xff0c;原文地址&#xff1a;http://dev.qq.com/topic/57a31921ac3a1fb613dd40f3 Android 不仅系统版本众多&#xff0c;机型众多&#xff0c;而且各个市场都各有各的政策和审核速度&#xff0…

App Engine中的Google Services身份验证,第1部分

这篇文章将说明如何构建一个简单的Google App Engine&#xff08;GAE&#xff09;Java应用程序&#xff0c;该应用程序可针对Google进行身份验证&#xff0c;并利用Google的OAuth授权访问Google的API服务&#xff08;例如Google Docs&#xff09;。 此外&#xff0c;在Google已…

山东自考c语言程序设计停考了吗,2018山东自考停考专业有哪些

自考每年都会停考一批的专业以适应社会的发展&#xff0c;今年山东自考的停考专业有哪些&#xff1f;本文由学梯网小编整理发布&#xff0c;仅供参考。2018年山东自考停考专业有什么根据山东省教育考试院发布的《关于山东自学考试停考国际贸易(专科)等19个专业的通知》知悉&…

公开调用私有Java方法?

我们是Java开发人员&#xff0c;在Java中已知4种访问修饰符&#xff1a;私有&#xff0c;受保护&#xff0c;公共和包。 好吧&#xff0c;除了私有外&#xff0c;最后三个可以通过继承&#xff0c;相同的包或实例从类外部调用。 现在&#xff0c;常见的问题是&#xff0c;可以公…

C语言字符像素,返回字符串宽度 (以像素为单位)

[c]代码库#include #include #include #include int main(void){/* request auto detection */int gdriver DETECT, gmode, errorcode;int x 0, y 0;int i;char msg[80];/* initialize graphics and local variables */initgraph(&gdriver, &gmode, "");/…

Spring动态物业管理

静态和动态属性对于运营管理以及在生产级别更改系统行为都非常重要。 特别地&#xff0c;动态参数减少了服务中断。 本文展示了如何使用Quartz在Spring Applications中管理动态属性。 有关使用 Spring和Quartz集成提供“ 使用Spring和Quartz的多作业计划服务”的文章。 让我们看…

ADF任务流:页面片段的托管bean范围

介绍 当我们使用ADF任务流并需要实现一些特定于流的业务逻辑或存储一些与该流相关的信息时&#xff0c;我们通常使用pageFlowScope托管bean。 而且&#xff0c;当我们需要为流的活动&#xff08;页面或页面片段&#xff09;提供服务时&#xff0c;我们将较短的作用域用于此类托…

数据库事物操作

事务 什么是事务?转账&#xff1a;1. 给wc账户减1000元2. 给wcxf账户加1000元 当给wc账户减1000元后&#xff0c;抛出了异常&#xff01;这会怎么样呢&#xff1f;我相信从此之后&#xff0c;wc再也不敢转账了。 使用事务就可以处理这一问题&#xff1a;把多个对数据库的操作绑…

android+4.4+稳定性,新系统新UI!台电A10h四核安卓4.4.2性能测试

国内著名商标&#xff0c;数码用户首选品牌的台电科技在12月20日全国首发了安卓4.4.2系统&#xff0c;并且运行台电全新tUI同时&#xff0c;支持从安卓4.2系统OTA一键升级至安卓4.4.2系统&#xff01;作为国内首款升级到目前全球最新的Android4.4.2系统之后&#xff0c;整体性能…

网络知识点小结

VMware虚拟机三种联网方法及原理一、Brigde——桥接&#xff1a;默认使用VMnet0 1、原理&#xff1a; Bridge 桥"就是一个主机&#xff0c;这个机器拥有两块网卡&#xff0c;分别处于两个局域网中&#xff0c;同时在"桥"上&#xff0c;运行着程序&#xff0c;让…

在JUnit中超越核心Hamcrest

在通过JUnit和Hamcrest改进对assertEquals的文章中&#xff0c;我介绍了将Hamcrest与JUnit一起使用 。 然后&#xff0c;我查看了JUnit的内置Hamcrest Core Matcher支持 。 在本文中&#xff0c;我将介绍如何将Hamcrest的非核心匹配器与JUnit一起应用。 这些非核心匹配器默认情…

4pics1word android,4 Pics 1 Word

4 Pics 1 Word是一款非常有意思的看图猜词游戏&#xff0c;这款游戏中会给我们四张图片&#xff0c;玩家需要通过图片给出的信息来猜出是哪个词&#xff0c;看西西的介绍你可能以为这是一款千篇一律的看图猜词游戏&#xff0c;不过这里猜的不是中文而是英语单词。4 Pics 1 Word…

JAVA学习绘图颜色及其笔画属性设置字体显示文字

package com.graphics;import java.awt.*; import java.awt.geom.Rectangle2D; import java.util.Date;import javax.swing.*;/*** * author biexiansheng**/ public class DrawString extends JFrame{private Shape rect;//矩形对象private Font font;//字体对象private Date …