第三方支付平台
可以协调客户,商户,银联三者关系的方便平台。
使用支付宝进行一个完整的支付功能,大致有以下步骤:(红色是做一次,绿色每次都做)
1,向支付宝申请,与支付宝签约,获得商户ID(partner) 和帐号ID(seller)
2,下载相应的公钥私钥文件(加密签名用)
3,下载支付宝SDK
4,生成订单信息,签名加密
5,调用支付宝客户端,由支付宝客户端跟支付宝安全服务器打交道
6,支付完毕后,支付宝客户端会自动跳回到原来的应用程序
7,在原来的应用程序中显示支付结果给用户看
#import "CZViewController.h"
/** 支付宝需要的头文件 **/
#import "AlixPayOrder.h"
#import "AlixLibService.h"
#import "PartnerConfig.h"
#import "DataSigner.h"
#import "DataVerifier.h"
#import "AlixPayResult.h"
/** 支付宝需要的头文件 **/
@interface CZViewController ()
- (IBAction)buy;
@property (weak, nonatomic) IBOutlet UILabel *amountLabel;
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UILabel *descLabel;
@end
@implementation CZViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)buy {
// 利用支付宝将用户的钱转到商家账号(比如公司账号)
// 1.创建订单模型
AlixPayOrder *order = [[AlixPayOrder alloc] init];
order.partner = PartnerID; // 商户ID
order.seller = SellerID; // 账号ID
order.tradeNO = @"201414505657357834"; // 订单号 (一般跟时间有关)
order.amount = self.amountLabel.text; // 金额
order.productName = self.nameLabel.text; // 商品名称
order.productDescription = self.descLabel.text; // 商品描述
// order.notifyURL = @""; // 回调地址
// 2.签名加密
id<DataSigner> signer = CreateRSADataSigner(PartnerPrivKey);
// 将订单模型转为字符串, 进行签名加密
NSString *signedString = [signer signString:order.description];
// 3.进一步生成订单信息字符串
NSString *orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
order.description, signedString, @"RSA"];
// 网页支付
// [AlixLibService payOrder:orderString AndScheme:@"shop" seletor:@selector(paymentResult:) target:self];
// 4.打开支付宝客户端
[AlixLibService payOrder:orderString AndScheme:@"shop" seletor:nil target:nil];
}
//wap回调函数
-(void)paymentResult:(NSString *)resultd
{
//结果处理
AlixPayResult *result = [[AlixPayResult alloc] initWithString:resultd];
if (result.statusCode == 9000) { // 支付OK
/*
*用公钥验证签名 严格验证请使用result.resultString与result.signString验签
*/
//交易成功
NSString* key = AlipayPubKey;//签约帐户后获取到的支付宝公钥
id<DataVerifier> verifier = CreateRSADataVerifier(key);
if ([verifier verifyString:result.resultString withSign:result.signString]) {
//验证签名成功,交易结果无篡改
#warning 这里才代表支付成功
}
} else {
//交易失败
}
}
@end