流程參照支付寶開放平臺的文檔--1.導入代碼,2.針對Demo的運行注意,3.配置基本信息匣椰,支付寶SDK下載
ios 審核不通過的時候,出現(xiàn)因為蘋果不支持app里的支付寶支付的時候端礼,只能讓后臺做一個網(wǎng)頁連接請求連接到服務器禽笑,進入支付寶的支付網(wǎng)頁即可。
#pragma mark--------------------------------------------------------支付寶網(wǎng)頁支付請求
- (void)sendAlipayWebsiteRequest{
if(self.userInfo.LogginType==YES) {
self.alipayUrl= [NSURLURLWithString:kALIPAYWEBSITESTR];
}else{
self.alipayUrl= [NSURLURLWithString:kTERISTALIPAYWEBSITESTR];
}
UIWebView* webView = [[UIWebViewalloc]initWithFrame:self.view.bounds];
[webViewloadRequest:[NSURLRequestrequestWithURL:self.alipayUrl]];
[self.viewaddSubview:webView];
}
libcrypto.a,libssl.a這兩個文件不添加也會報錯衰猛。
參數(shù)問題:
下面訂單的一些信息
#pragma mark--------------------------------------------------生成支付寶訂單信息
- (void)setUpOrderString{
/*=======================需要填寫商戶app申請的===================================*/
/*============================================================================*/
NSString*partner =@"208";
NSString*seller =@"chari@126.com";
NSString*privateKey =@"MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMpvwt77vLxpHAm9+PwIaM+RU2/gw==";
以上三個參數(shù)后臺必須給你的
/*
*生成訂單信息及簽名
*/
//將商品信息賦予AlixPayOrder的成員變量
Order*order = [[Orderalloc]init];
order.partner= partner;
order.seller= seller;
order.tradeNO=self.pdr_sn;
order.productName=self.pdr_sn;;//商品標題
order.productDescription=self.pdr_sn;//商品描述
order.amount=self.moneyTextField.text;//商品價格
order.notifyURL=@"http://www.1paper.org/mobile/api/payment/alipay/app_notify_url.php";//回調(diào)URL(這個網(wǎng)址可以自己設置)
//以下幾個是固定值迟蜜。
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 types
NSString* appScheme =@"OnePieceOfPaper";
//將商品信息拼接成字符串
NSString*orderSpec = [orderdescription];
DDLogVerbose(@"orderSpec = %@",orderSpec);
//獲取私鑰并將商戶信息簽名,外部商戶可以根據(jù)情況存放私鑰和簽名,只需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncode
id signer =CreateRSADataSigner(privateKey);
NSString*signedString = [signersignString:orderSpec];
DDLogVerbose(@"key:%@",signedString);
//將簽名成功字符串格式化為訂單字符串,請嚴格按照該格式
NSString*orderString =nil;
if(signedString !=nil) {
orderString = [NSStringstringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",orderSpec, signedString,@"RSA"];
DDLogVerbose(@"dealInfo:%@",orderString);
//支付寶的拉起操作
//---------------------------------------------//
//orderString:一個字符串,這個字符串包含了訂單信息.通常來說為了安全起見,我們不會在客戶端拼接訂單信息,當要支付時,向服務器請求訂單信息
[[AlipaySDKdefaultService]payOrder:orderStringfromScheme:appSchemecallback:^(NSDictionary*resultDic) {
DDLogVerbose(@"支付結(jié)果= %@",resultDic);
if([resultDic[@"ResultStatus"]isEqualToString:@"9000"]) {
//支付成功,這里放你們想要的操作
[selfshowAlert:@"支付成功"];
}else{
[selfshowAlert:@"支付失敗"];
}
}];
}
}
最后,在appdelegate
#pragma mark------------------------------------------------------支付寶支付
//支付寶支付回調(diào)
- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation
{
//如果極簡開發(fā)包不可用啡省,會跳轉(zhuǎn)支付寶錢包進行支付娜睛,需要將支付寶錢包的支付結(jié)果回傳給開發(fā)包
if([url.hostisEqualToString:@"safepay"]) {
[[AlipaySDKdefaultService]processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary*resultDic) {
//【由于在跳轉(zhuǎn)支付寶客戶端支付的過程中髓霞,商戶app在后臺很可能被系統(tǒng)kill了,所以pay接口的callback就會失效微姊,請商戶對standbyCallback返回的回調(diào)結(jié)果進行處理,就是在這個方法里面處理跟callback一樣的邏輯】
DDLogVerbose(@"result = %@",resultDic);
[selfsendAliPayRequest];
}];
}
if([url.hostisEqualToString:@"platformapi"]){//支付寶錢包快登授權(quán)返回authCode
[[AlipaySDKdefaultService]processAuthResult:urlstandbyCallback:^(NSDictionary*resultDic) {
//【由于在跳轉(zhuǎn)支付寶客戶端支付的過程中酸茴,商戶app在后臺很可能被系統(tǒng)kill了,所以pay接口的callback就會失效兢交,請商戶對standbyCallback返回的回調(diào)結(jié)果進行處理,就是在這個方法里面處理跟callback一樣的邏輯】
DDLogVerbose(@"result = %@",resultDic);
[selfsendAliPayRequest];
}];
}
returnYES;
}