支付寶支付相關步驟和問題

流程參照支付寶開放平臺的文檔--1.導入代碼2.針對Demo的運行注意3.配置基本信息支付寶SDK下載

ios 審核不通過的時候,出現因為蘋果不支持app里的支付寶支付的時候,只能讓后臺做一個網頁連接請求連接到服務器,進入支付寶的支付網頁即可。

#pragma mark--------------------------------------------------------支付寶網頁支付請求

- (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];

}

openssl沒有找到的問題,解決辦法:點擊項目名稱,點擊“Build Settings”選項卡,在搜索框中,以關鍵字“search”搜索,對“Header Search Paths“,增加該頭文件路徑。方法在以上位置右鍵點擊openssel文件夾,在command+i 快捷鍵直接可以顯示文件的路徑。如下圖

libcrypto.a,libssl.a這兩個文件不添加也會報錯。


參數問題:

下面訂單的一些信息

#pragma mark--------------------------------------------------生成支付寶訂單信息

- (void)setUpOrderString{

/*=======================需要填寫商戶app申請的===================================*/

/*============================================================================*/

NSString*partner =@"208";

NSString*seller =@"chari@126.com";

NSString*privateKey =@"MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMpvwt77vLxpHAm9+PwIaM+RU2/gw==";

以上三個參數后臺必須給你的

/*

*生成訂單信息及簽名

*/

//將商品信息賦予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";//回調URL(這個網址可以自己設置)

//以下幾個是固定值。

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);

//獲取私鑰并將商戶信息簽名,外部商戶可以根據情況存放私鑰和簽名,只需要遵循RSA簽名規范,并將簽名字符串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(@"支付結果= %@",resultDic);

if([resultDic[@"ResultStatus"]isEqualToString:@"9000"]) {

//支付成功,這里放你們想要的操作

[selfshowAlert:@"支付成功"];

}else{

[selfshowAlert:@"支付失敗"];

}

}];

}

}

最后,在appdelegate

#pragma mark------------------------------------------------------支付寶支付

//支付寶支付回調

- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation

{

//如果極簡開發包不可用,會跳轉支付寶錢包進行支付,需要將支付寶錢包的支付結果回傳給開發包

if([url.hostisEqualToString:@"safepay"]) {

[[AlipaySDKdefaultService]processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary*resultDic) {

//【由于在跳轉支付寶客戶端支付的過程中,商戶app在后臺很可能被系統kill了,所以pay接口的callback就會失效,請商戶對standbyCallback返回的回調結果進行處理,就是在這個方法里面處理跟callback一樣的邏輯】

DDLogVerbose(@"result = %@",resultDic);

[selfsendAliPayRequest];

}];

}

if([url.hostisEqualToString:@"platformapi"]){//支付寶錢包快登授權返回authCode

[[AlipaySDKdefaultService]processAuthResult:urlstandbyCallback:^(NSDictionary*resultDic) {

//【由于在跳轉支付寶客戶端支付的過程中,商戶app在后臺很可能被系統kill了,所以pay接口的callback就會失效,請商戶對standbyCallback返回的回調結果進行處理,就是在這個方法里面處理跟callback一樣的邏輯】

DDLogVerbose(@"result = %@",resultDic);

[selfsendAliPayRequest];

}];

}

returnYES;

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 在我們應用開發中我們經常在自己的項目中使用到支付,下面我們來談談iOS這塊的支付;iOS支付主要分為兩類,第三方支...
    Hither閱讀 8,328評論 9 42
  • iOS支付 iOS支付分為兩類,第三方支付和應用內支付(內購)。 第三方支付包括:支付寶支付、微信支付、銀聯支付、...
    請輸入賬號名閱讀 6,317評論 3 22
  • 實現支付寶支付的準備工作: 1.向支付寶簽約,成為支付寶的商戶 簽約完成后,支付寶會提供一些必要的數據給我們 商戶...
    Anson楊春安閱讀 8,263評論 0 6
  • iOS支付 iOS支付分為兩類,第三方支付和應用內支付(內購)。 第三方支付包括:支付寶支付、微信支付、銀聯支付、...
    sillen閱讀 1,413評論 0 1
  • 自己總結的微信支付寶支付流程和注意點: 準備工作: 需要公司的營業執照,稅務信息,等老板的身份證信息等,我記得,用...
    Www劉閱讀 18,588評論 2 50