支付宝(移动支付)
支付宝(移动支付)
1、支付宝 快捷支付(无线) 申请: https://b.alipay.com/order/productDetail.htm?productId=2014110308141993
申请条件(二选一):1、 使用 企业支付宝账号注册企业账号
2、个体工商户(需要上传营业执照)
集成支付宝:
1、创建Xcode工程,导入以下文件:
AlipaySDK.bundle
AlipaySDK.framework
libcrypto.a
libssl.a
openssl文件夹
Util文件夹
PartnerConfig.h 配置文件
2、导入依赖库
4、 导入Order.h Order.m(订单类)
5、 要支付的类文件
//导入订单类
#import "Order.h"
//数据签名类
#import "DataSigner.h"
//支付SDK
#import <AlipaySDK/AlipaySDK.h>
//配置文件
#import "PartnerConfig.h"
#pragma mark - 支付方法
-(void)payBtnClick
{
NSString *partner = PartnerID; //支付宝分配给商户的ID
NSString *seller = SellerID; //收款支付宝账号(用于收💰)
NSString *privateKey = PartnerPrivKey; //商户私钥
/*
* 生成订单信息及签名
*/
//将商品信息赋予Order的成员变量
Order *order = [[Order alloc] init];
order.partner = partner; //商户ID
order.seller = seller; //收款支付宝账号
order.tradeNO = [self generateTradeNO]; //订单ID(由商家自行制定)
order.productName = @"苹果"; //商品标题
order.productDescription = @"5斤苹果"; //商品描述
order.amount = [NSString stringWithFormat:@"%.2f", 0.01]; //商品价格(重要)
order.notifyURL = @"http://www.xxx.com"; //回调URL(通知服务器端交易结果)(重要)
// 1777297988
order.service = @"mobile.securitypay.pay";
order.paymentType = @"1";
order.inputCharset = @"utf-8";
order.itBPay = @"30m";
order.showUrl = @"m.alipay.com";
// 应用注册scheme, 在AlipayDEMO-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(@"callback reslut = %@",resultDic);
}];
}
#pragma mark ============== 产生随机订单号 ==============
- (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;
}
1、购物流程:
1、加入购物车;
2、购物车中可能有多件商品(购物清单),收货人信息,收货地址信息,发票信息,备注等等, 生成订单(提交后台服务器);
3、从服务器返回一个订单号、商品名称、商品描述等信息 ;
4、再支付。