123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- //
- // ALiPayHandle.m
- // tuoyan
- //
- // Created by admin on 2017/1/19.
- // Copyright © 2017年 czy. All rights reserved.
- //
- #import <UIKit/UIKit.h>
- #import "ALiPayHandle.h"
- #import "Order.h"
- #import "RSADataSigner.h"
- #import <AlipaySDK/AlipaySDK.h>
- @implementation ALiPayHandle
- + (NSString *)doAlipayPay:(NSString *)orderId amount:(NSString *)amount productName:(NSString *)productName productDescription:(NSString *)productDescription notifyURL:(NSString *)notifyURL
- {
-
- NSString *appID = @"2017050207079289";
-
- NSString *rsa2PrivateKey = @"MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDGD3fGoJrGXYNQ7AyMh2YdMqu4izf6OTg2yy+RoOb9g9wmeeJWBC2IZh+vNwqdE+wHRPu9oq+7iflonq0oXNNttAZ3xnS9cKejhIflzWcRgFyVxE+mZvruKBMOPh1Mk5UxoGqwQAuR3Nr+sDO2hMRKyFtpK4CcfGpq2FD7SCshIVdz71zbvY4l0ZGIDavuUfHWZoTYHt80BUtlS51oFaVWhP8ykwDdZemOv/xPEvbkyMetIopjsKgqARCdzJFUTltaGvP7fiOEFgNHAbpVYeKh4FkIXyxbeVyRdSLKF0zfZIp+eNd263+jNoojHrl5QusGn1L8eanIxSaJQiA3GEfPAgMBAAECggEBAKxjNitKCqzxI6TBb8K47uYm/lPnyNcgCo+Wlla4p5Ssumc62wdnJ4J68MT+sVw6xMsm/b325eHjm5O12J0y/kuTz7VcpKtmbGLkrawU9crD4NHyRildpLa5ZqyU38eRBOBm8bVqaSeSBYJ8NuZ79KXqcbW+SXjqyW0pzoKINBHmenfFGUyZz4ObWqN5sjLVEqLC/D7BulJNXdgoRGdGLJt0ntsV+XJFHdBxBezQmJxStsc6VgBMgd7J7gD9f2ob6hK1ulyJCGHSuH0Ai+sjaxNvdgN/jBxJ3cGQU7MtP8PFdGTgkjBktkXtURTWPL3lDIvE2lacSp9pHoYKaBcMdUECgYEA/fbPMr1rS3YniUzWon81yjEyoDDhgohRXcYBmJ+rzlzBiorswSCVj1ajDvXVGFAoukwNgDi+DqC3mJBb63ftVco97UxHqd3+AzlJqK6p2lhXAt63nCLzE4ipIaB17bkXJVk/yr5DkW86+UrZJyc8sUMXYTYrH6YnYoHeLXLmDzECgYEAx6XuiER0Z3Hjd6vw60XXortWveop6BC+zBvK5Cz55w2TnzzS/byx1Yybmf/paMuh161RZ90dp/avedENhFHky5WOEd39FqjMrG1KBV+rSSSSUJyAnnLAPfqK+lWQFsXXqs4wUgT7hP6NI/VLMTyy2yVRCem/49UHvmnsTLvUBv8CgYAU5wVytahpE5Z5dHuN8E5rD9WM3bkR10prH2ruNuYbHANJ9dk6pAXrQEQ3bQBW+fIAM1ZBIWpzJcM2qVsHbF16XCTwrQCQ+JZ5iXOIkKemMvMmZ1JRZYcAKpVRETXjlQJUrp3TgAlrpO4Dqqdo04/pPw5jj+PIvRIsx2eT8gsBYQKBgDG2mMnnudCUZF7FOs1q68ICwhuyNlMp8Eik1wWwSV4GXG73V1aFaQbS52AWgElvA1LQPogNYDgVziYYLzR2q/EhwWmjjETbLXP2Fst1whIJgEGAZuqNil8khvzE14dEJmrKwu95fCPmusBscRfGlIbLKP297eFOh4obmBKXZrmDAoGAOwQd/g2N7bupnqVF7+B3TfHT2wAXqY84ppn6m4gOZcuXkKx2MKprzNLuAJcQNx4BPGm4+HSxZsaow1gX4230G2yFdXrUknrxEWCqRlZQEPqmnfgC/CsGAKRzXcBw5ufVlJ/tDj+EpcsrALLMHh8rbAF16+D/qVdo5ING2lCEDKc=";
- NSString *rsaPrivateKey = @"";
- /*============================================================================*/
- /*============================================================================*/
- /*============================================================================*/
-
- //partner和seller获取失败,提示
- if ([appID length] == 0 ||
- ([rsa2PrivateKey length] == 0 && [rsaPrivateKey length] == 0))
- {
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
- message:@"缺少appId或者私钥。"
- delegate:self
- cancelButtonTitle:@"确定"
- otherButtonTitles:nil];
- [alert show];
- }else{
-
- /*
- *生成订单信息及签名
- */
- //将商品信息赋予AlixPayOrder的成员变量
- Order* order = [Order new];
-
- // NOTE: app_id设置
- order.app_id = appID;
-
- // NOTE: 支付接口名称
- order.method = @"alipay.trade.app.pay";
-
- // NOTE: 参数编码格式
- order.charset = @"utf-8";
-
- // NOTE: 当前时间点
- NSDateFormatter* formatter = [NSDateFormatter new];
- [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
- order.timestamp = [formatter stringFromDate:[NSDate date]];
- order.notify_url = notifyURL;
- // NOTE: 支付版本
- order.version = @"1.0";
-
- // NOTE: sign_type 根据商户设置的私钥来决定
- order.sign_type = (rsa2PrivateKey.length > 1)?@"RSA2":@"RSA";
-
- // NOTE: 商品数据
- order.biz_content = [BizContent new];
- order.biz_content.body = productName;
- order.biz_content.subject = productDescription;
- order.biz_content.out_trade_no = orderId; //订单ID(由商家自行制定)
- order.biz_content.timeout_express = @"30m"; //超时时间设置
- order.biz_content.total_amount = amount; //商品价格
-
- //将商品信息拼接成字符串
- NSString *orderInfo = [order orderInfoEncoded:NO];
- NSString *orderInfoEncoded = [order orderInfoEncoded:YES];
- NSLog(@"orderSpec = %@",orderInfo);
-
- // NOTE: 获取私钥并将商户信息签名,外部商户的加签过程请务必放在服务端,防止公私钥数据泄露;
- // 需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
- NSString *signedString = nil;
- RSADataSigner* signer = [[RSADataSigner alloc] initWithPrivateKey:((rsa2PrivateKey.length > 1)?rsa2PrivateKey:rsaPrivateKey)];
- if ((rsa2PrivateKey.length > 1)) {
- signedString = [signer signString:orderInfo withRSA2:YES];
- } else {
- signedString = [signer signString:orderInfo withRSA2:NO];
- }
-
- // NOTE: 如果加签成功,则继续执行支付
- if (signedString != nil) {
- //应用注册scheme,在AliSDKDemo-Info.plist定义URL types
-
- // NOTE: 将签名成功字符串格式化为订单字符串,请严格按照该格式
- NSString *orderString = [NSString stringWithFormat:@"%@&sign=%@",
- orderInfoEncoded, signedString];
-
- return orderString;
-
- }
-
- }
- return @"";
-
- }
- @end
|