支付宝集成

原创 2016年08月29日 14:41:55

注意:在给支付宝传订单金额的时候,最小要精确到分,也就是0.01。如果小于0.01,跳转到支付宝后会提示:交易订单处理失败,请稍后再试。

一、下载支付宝SDK,导入到项目中:

1、文件路径问题:

#include <openssl/asn1.h> not fond 问题:

target ---> buildsetting ---> header search path ---> 添加:$(SRCROOT)/项目名中间文件夹名/Alipay

2、混编问题:

target ---> buildsetting ---> Apple LLVM 7.0 - Language ---> Compile Sources As --->Objective-C

二、在Info.plist文件中添加:

1、在target中info下的URL Types下添加:


2、LSApplicationQueriesSchemes

三、相关代码:

0、Appdelegate.m中配置:

// 当通过别的应用程序,将该应用程序打开时,会调用该方法
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
{
    // 当用户通过支付宝客户端进行支付时,会回调该block:standbyCallback
    [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
        NSLog(@"result = %@",resultDic);
    }];
    
    return YES;
}

1、Product.h

#import <Foundation/Foundation.h>

@interface Product : NSObject

@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *detail;
@property (nonatomic, assign) CGFloat price;

@end

2.1、Order.h

#import <Foundation/Foundation.h>

@interface Order : NSObject

@property (nonatomic, copy) NSString *partner;
@property (nonatomic, copy) NSString *seller;
@property (nonatomic, copy) NSString *productName;
@property (nonatomic, copy) NSString *productDescription;
@property (nonatomic, copy) NSString *amount;
@property (nonatomic, copy) NSString *service;
@property (nonatomic, copy) NSString *paymentType;
@property (nonatomic, copy) NSString *inputCharset;
@property (nonatomic, copy) NSString *itBPay;
@property (nonatomic, copy) NSString *showUrl;
@property (nonatomic, copy) NSString *notifyURL;
@property (nonatomic, copy) NSString *tradeNO;

@property(nonatomic, copy) NSString * rsaDate;
@property(nonatomic, copy) NSString * appID;

@property(nonatomic, readonly) NSMutableDictionary * extraParams;
@end
2.2、Order.m

#import "Order.h"

@implementation Order


- (NSString *)description
{
    NSMutableString * discription = [NSMutableString string];
    if (self.partner) {
        [discription appendFormat:@"partner=\"%@\"", self.partner];
    }
    
    if (self.seller) {
        [discription appendFormat:@"&seller_id=\"%@\"", self.seller];
    }
    if (self.tradeNO) {
        [discription appendFormat:@"&out_trade_no=\"%@\"", self.tradeNO];
    }
    if (self.productName) {
        [discription appendFormat:@"&subject=\"%@\"", self.productName];
    }
    
    if (self.productDescription) {
        [discription appendFormat:@"&body=\"%@\"", self.productDescription];
    }
    if (self.amount) {
        [discription appendFormat:@"&total_fee=\"%@\"", self.amount];
    }
    if (self.notifyURL) {
        [discription appendFormat:@"¬ify_url=\"%@\"", self.notifyURL];
    }
    
    if (self.service) {
        [discription appendFormat:@"&service=\"%@\"",self.service];//mobile.securitypay.pay
    }
    if (self.paymentType) {
        [discription appendFormat:@"&payment_type=\"%@\"",self.paymentType];//1
    }
    
    if (self.inputCharset) {
        [discription appendFormat:@"&_input_charset=\"%@\"",self.inputCharset];//utf-8
    }
    if (self.itBPay) {
        [discription appendFormat:@"&it_b_pay=\"%@\"",self.itBPay];//30m
    }
    if (self.showUrl) {
        [discription appendFormat:@"&show_url=\"%@\"",self.showUrl];//m.alipay.com
    }
    if (self.rsaDate) {
        [discription appendFormat:@"&sign_date=\"%@\"",self.rsaDate];
    }
    if (self.appID) {
        [discription appendFormat:@"&app_id=\"%@\"",self.appID];
    }
    for (NSString * key in [self.extraParams allKeys]) {
        [discription appendFormat:@"&%@=\"%@\"", key, [self.extraParams objectForKey:key]];
    }
    return discription;
}

@end


3、支付宝调用:

需导入头文件:
#import "DataSigner.h"
#import <AlipaySDK/AlipaySDK.h>

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    Product *product = [[Product alloc] init];
    product.title = @"商品名称";
    product.detail = @"商品描述";
    product.price = 0.1;
    [self buyProduct:product];
}

- (void)buyProduct:(Product *)product
{
    // 1.添加写partner/seller/privateKey,签约后获得
    NSString *partner = @"";
    NSString *seller = @"";
    NSString *privateKey = @""; // 不能有空格或换行
    
    // 2.生成订单
    // 2.1.创建订单
    Order *order = [[Order alloc] init];
    
    // 2.2.设置商户ID/账号ID
    order.partner = partner;
    order.seller = seller;
    
    // 2.3.设置订单号
    order.tradeNO = @"订单号";
    
    // 2.4.设置产品相关的信息
    order.productName = product.title;
    order.productDescription = product.detail;
    order.amount = [NSString stringWithFormat:@"%.2f", product.price];
    
    // 2.5.设置订单常量
    order.service = @"mobile.securitypay.pay";
    order.paymentType = @"1";
    order.inputCharset = @"utf-8";
    order.itBPay = @"30m";
    order.showUrl = @"m.alipay.com";
    
    // 2.6.回调URL(异步通知服务器的地址)
    order.notifyURL =  @""; //回调URL
    
    // 2.7.将订单信息拼接成字符串
    NSString *orderSpec = [order description];// 重写Order类的description方法
    
    // 3.对订单进行签名加密
    // 3.1.对订单进行加密
    id<DataSigner> signer = CreateRSADataSigner(privateKey);
    NSString *signedString = [signer signString:orderSpec];
    
    // 3.2.将签名成功字符串格式化为订单字符串,请严格按照该格式
    NSString *orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"", orderSpec, signedString, @"RSA"];
    
    // 4.打开支付宝客户端进行支付(用户没有安装支付宝客户端,直接在应用程序中添加一个WebView,通过网页让用户进行支付)
    // 注意:如果是通过网页支付完成,那么会回调该block:callback
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:@"alipayschemes" callback:^(NSDictionary *resultDic) {
        
        NSLog(@"resultDic = %@",resultDic);
        
    }];
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android集成支付宝步骤讲解

一、准备工作 〉1、下载开发包 https://b.alipay.com/order/productDetail.htm?productId=2014110308141993&tabId=...
  • bruceyangjie
  • bruceyangjie
  • 2016年07月03日 09:55
  • 2013

支付宝集成文档和Demo下载路径

https://b.alipay.com/order/productDetail.htm?productId=2013080604609654&tabId=4#ps-tabinfo-hash
  • u011492867
  • u011492867
  • 2014年05月14日 17:16
  • 655

iOS开发之支付宝集成流程

1、创建应用 这个其实开发者们都应该懂,就是在支付宝这里挂个号,然后进行下一步业务的申请。 创建应用的链接创建应用界面 开发者只需要按照指示一步一步添加内容就可以。 2、申请移动支付 这个就需要一些公...
  • GorLong
  • GorLong
  • 2017年03月17日 14:39
  • 1985

Android集成支付宝的几个步骤以及需要注意的几个地方

如今许多App都集成了支付宝支付,因为其支付简单,安全,快捷。掌握了支付宝的集成和支付流程是一个非常必要的。 支付宝的sdk下载地址在https://doc.open.alipay.com/doc2/...
  • ganziqian
  • ganziqian
  • 2016年02月17日 16:05
  • 1980

支付宝集成

http://blog.csdn.net/forlong401/article/details/8665758
  • wo0123456789wo
  • wo0123456789wo
  • 2014年08月25日 14:02
  • 239

支付宝集成过程详解——运行DEMO

前言,梦想是需要坚持的,在路上,一路前行。加油。这两天软件需要集成支付宝了,第一次集成,过程还是挺简单的,不过由于支付宝官方文档写的不够清晰,也是走了一些弯路,下面把过程写出来分享给大家一、申请移动支...
  • harvic880925
  • harvic880925
  • 2015年11月11日 11:02
  • 79832

支付宝集成文档-傻瓜式快速集成

支付宝集成-作为移动开发者的必学技能 一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统对于资源有限的公司来说显然不太明智,国内已经有多家成熟的移动支付提供商,阿里就是其...
  • qq_30983519
  • qq_30983519
  • 2016年09月02日 16:58
  • 555

alipay--- Android 集成支付宝SDK实现快捷支付--详解

转载请标明出处:http://blog.csdn.net/u014084504/article/details/42104035 公司最近要在项目中加入购物车功能,提到购物车那就自然少不了支付宝的身...
  • IT1039871366
  • IT1039871366
  • 2015年06月29日 14:29
  • 8406

IOS支付宝集成总结

以下是IOS项目中集成支付宝的过程总结,如有冲突,请以支付宝的文档为准 一、集成大致流程:      1、商户服务端使用openssl生成自己的公钥和私钥,      2、商户真正使用的是:商户...
  • fcihpy
  • fcihpy
  • 2015年07月14日 15:46
  • 724

支付宝集成过程

前言,梦想是需要坚持的,在路上,一路前行。加油。这两天软件需要集成支付宝了,第一次集成,过程还是挺简单的,不过由于支付宝官方文档写的不够清晰,也是走了一些弯路,下面把过程写出来分享给大家一、申请移动支...
  • suweili333
  • suweili333
  • 2016年11月29日 10:59
  • 258
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:支付宝集成
举报原因:
原因补充:

(最多只允许输入30个字)