日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

iOS

發布時間:2023/12/13 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 iOS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、支付寶支付申請

支付寶支付官方簽約集成指引

支付寶APP支付官方集成指引

螞蟻金服開放平臺

1.1 支付寶 APP 支付申請步驟

APP 支付:APP 支付是商戶通過在移動端應用 APP 中集成開放 SDK 調起支付寶支付模塊完成支付的模式。買家在手機、掌上電腦等無線設備的應用程序內,可通過支付寶進行付款購買特定服務或商品,資金即時到賬。舊的接口叫 移動支付。

申請條件:

申請前必須擁有經過實名認證的支付寶賬戶;

企業或個體工商戶可申請;

需提供真實有效的營業執照,且支付寶賬戶名稱需與營業執照主體一致;

如應用開發者與支付寶賬戶名稱不一致需提供開發合作協議;

如應用已上架,需提供應用名稱和下載鏈接;若應用未上架,需提供 demo 或產品說明文檔;

古玩、珠寶等奢侈品、投資類行業無法申請本產品;

費率說明:

助力中小商戶,從簽約日至 2017.6.30 日優惠費率為 0.55%(不包含特殊行業)
特殊行業費率:1.2%,行業范圍包括:手機、通訊設備銷售;家用電器;數碼產品及配件;休閑游戲;網絡游戲點卡、游戲渠道代理;游戲系統商;網游周邊服務、交易平臺;網游運營商(含網頁游戲)

1.1.1 創建應用并獲取 APPID

要在您的應用中使用支付寶開放產品的接口能力,您需要先去螞蟻金服開放平臺,在管理中心中創建登記您的應用,并提交審核,審核通過后會為您生成應用唯一標識 APPID,并且可以申請開通開放產品使用權限,通過 APPID 您的應用才能調用開放產品的接口能力。需要詳細了解開放平臺創建應用步驟請參考《開放平臺應用創建指南》。

1、開發者使用支付寶賬號登錄開放平臺(需實名認證的支付寶賬號),并創建應用。

創建應用時只需填寫應用名稱,此時的應用狀態為開發中,無法在線上正式調用接口。

2、創建應用后,點擊 “修改” 可跳轉到完善應用信息頁面。

應用信息在開發應用過程中可以無需審核隨時完善。應用名稱和應用圖標會在應用申請上線時進行審核,所以在配置時,建議先了解相關審核規則。

的內容 作用
應用名稱和應用圖標會在授權、分享的場景中露出,請準確填寫相關信息
文檔 用于審核人員了解應用覆蓋場景和應用實現的功能,請準確填寫

3、配置應用環境,開發者所需配置內容請參考:

段名稱 字段描述
用網關(對應下圖1) 用于接收支付寶異步通知,例如口碑開店中,需要配置此網關來接收開發者門店被動通知。
權回調地址(對應下圖2) 第三方授權或用戶信息授權后回調地址。授權鏈接中配置的redirect_uri的值必須與此值保持一致。(如:https://www.alipay.com)
SA(SHA1)密鑰(對應下圖3) 開發者要保證接口中使用的私鑰與此處的公鑰匹配,否則無法調用接口。可參考密鑰的生成與配置。

1.1.2 配置密鑰

開發者調用接口前需要先生成 RSA 密鑰,RSA 密鑰包含應用私鑰 (APP_PRIVATE_KEY)、應用公鑰 (APP_PUBLIC_KEY)。生成密鑰后在開放平臺管理中心進行密鑰配置,配置完成后可以獲取支付寶公鑰 (ALIPAY_PUBLIC_KEY)。詳細步驟請參考《配置應用環境》。

1、生成 RSA 密鑰

生成方式一(推薦):使用支付寶提供的一鍵生成工具(內附使用說明)

Windows:下載

MAC OSX:下載

解壓打開文件夾,直接運行 “支付寶RAS密鑰生成器SHAwithRSA1024_V1.0.bat”(WINDOWS)或 “SHAwithRSA1024_V1.0.command”(MACOSX),點擊 “生成RSA密鑰”,會自動生成公私鑰,然后點擊 “打開文件位置”,即可找到工具自動生成的密鑰。

TIPS:工具不支持含中文或空格的路徑,請下載到英文目錄下使用。

生成方式二:也可以使用 OpenSSL 工具命令生成

首先進入 OpenSSL 工具,再輸入以下命令。

	OpenSSL> genrsa -out app_private_key.pem   1024  #生成私鑰
	OpenSSL> pkcs8 -topk8 -inform PEM -in app_private_key.pem -outform PEM -nocrypt -out app_private_key_pkcs8.pem #Java開發者需要將私鑰轉換成PKCS8格式
	OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem #生成公鑰
	OpenSSL> exit #退出OpenSSL程序

經過以上步驟,開發者可以在當前文件夾中(OpenSSL 運行文件夾),看到app_private_key.pem(開發者 RSA 私鑰)、app_private_key_pkcs8.pem(pkcs8 格式開發者 RSA 私鑰)和 app_public_key.pem(開發者 RSA 公鑰)3 個文件。開發者將私鑰保留,將公鑰提交給支付寶配置到開發平臺,用于驗證簽名。以下為私鑰文件和公鑰文件示例。

注意:對于使用 Java 的開發者,將 pkcs8 在 console 中輸出的私鑰去除頭尾、換行和空格,作為開發者私鑰,對于 .NET 和 PHP 的開發者來說,無需進行 pkcs8 命令行操作。

標準的私鑰文件示例(PHP、.NET使用)

	-----BEGIN RSA PRIVATE KEY-----
	MIICXQIBAAKBgQC+L0rfjLl3neHleNMOsYTW8r0QXZ5RVb2p/vvY3fJNNugvJ7lo4+fdBz+LN4mDxTz4MTOhi5e2yeAqx+v3nKpNmPzC5LmDjhHZURhwbqFtIpZD51mOfno2c3MDwlrsVi6mTypbNu4uaQzw/TOpwufSLWF7k6p2pLoVmmqJzQiD0QIDAQABAoGAakB1risquv9D4zX7hCv9MTFwGyKSfpJOYhkIjwKAik7wrNeeqFEbisqv35FpjGq3Q1oJpGkem4pxaLVEyZOHONefZ9MGVChT/MNH5b0FJYWl392RZy8KCdq376Vt4gKVlABvaV1DkapL+nLh7LMo/bENudARsxD55IGObMU19lkCQQDwHmzWPMHfc3kdY6AqiLrOss+MVIAhQqZOHhDe0aW2gZtwiWeYK1wB/fRxJ5esk1sScOWgzvCN/oGJLhU3kipHAkEAysNoSdG2oWADxlIt4W9kUiiiqNgimHGMHPwp4JMxupHMTm7D9XtGUIiDijZxunHv3kvktNfWj3Yji0661zHVJwJBAM8TDf077F4NsVc9AXVs8N0sq3xzqwQD/HPFzfq6hdR8tVY5yRMb4X7+SX4EDPORKKsgnYcur5lk8MUi7r072iUCQQC8xQvUne+fcdpRyrR4StJlQvucogwjTKMbYRBDygXkIlTJOIorgudFlrKP/HwJDoY4uQNl8gQJb/1LdrKwIe7FAkBl0TNtfodGrDXBHwBgtN/t3pyi+sz7OpJdUklKE7zMSBuLd1E3O4JMzvWP9wEE7JDb+brjgK4/cxxUHUTkk592
	-----END RSA PRIVATE KEY-----

PKCS8處理后的私鑰文件示例(Java 使用)

	-----BEGIN PRIVATE KEY-----
	MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAN0yqPkLXlnhM+2H/57aHsYHaHXazr9pFQun907TMvmbR04wHChVsKVgGUF1hC0FN9hfeYT5v2SXg1WJSg2tSgk7F29SpsF0I36oSLCIszxdu7ClO7c22mxEVuCjmYpJdqb6XweAZzv4Is661jXP4PdrCTHRdVTU5zR9xUByiLSVAgMBAAECgYEAhznORRonHylm9oKaygEsqQGkYdBXbnsOS6busLi6xA+iovEUdbAVIrTCG9t854z2HAgaISoRUKyztJoOtJfI1wJaQU+XL+U3JIh4jmNx/k5UzJijfvfpT7Cv3ueMtqyAGBJrkLvXjiS7O5ylaCGuB0Qz711bWGkRrVoosPM3N6ECQQD8hVQUgnHEVHZYtvFqfcoq2g/onPbSqyjdrRu35a7PvgDAZx69Mr/XggGNTgT3jJn7+2XmiGkHM1fd1Ob/3uAdAkEA4D7aE3ZgXG/PQqlm3VbE/+4MvNl8xhjqOkByBOY2ZFfWKhlRziLEPSSAh16xEJ79WgY9iti+guLRAMravGrs2QJBAOmKWYeaWKNNxiIoF7/4VDgrcpkcSf3uRB44UjFSn8kLnWBUPo6WV+x1FQBdjqRviZ4NFGIP+KqrJnFHzNgJhVUCQFzCAukMDV4PLfeQJSmna8PFz2UKva8fvTutTryyEYu+PauaX5laDjyQbc4RIEMU0Q29CRX3BA8WDYg7YPGRdTkCQQCG+pjU2FB17ZLuKRlKEdtXNV6zQFTmFc1TKhlsDTtCkWs/xwkoCfZKstuV3Uc5J4BNJDkQOGm38pDRPcUDUh2/
	-----END PRIVATE KEY-----

公鑰文件示例

	-----BEGIN PUBLIC KEY-----
	MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB
	-----END PUBLIC KEY-----

2、密鑰配置

開發者登錄開放平臺后,找到并進入應用。點擊 “RSA(SHA1)密鑰” 處的 “設置應用公鑰”(如已設置則顯示 “查看應用公鑰”,可修改),將公鑰文件去除頭尾、換行和空格,僅需填入字符串。

例如轉換前公鑰 pem 文件格式:

	-----BEGIN PUBLIC KEY-----
	MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB
	-----END PUBLIC KEY-----

轉換后得到的字符串為:

	MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQWiDVZ7XYxa4CQsZoB3n7bfxLDkeGKjyQPt2FUtm4TWX9OYrd523iw6UUqnQ+Evfw88JgRnhyXadp+vnPKP7unormYQAfsM/CxzrfMoVdtwSiGtIJB4pfyRXjA+KL8nIa2hdQy5nLfgPVGZN4WidfUY/QpkddCVXnZ4bAUaQjXQIDAQAB

3、獲取支付寶公鑰

應用上線后點擊 “查看支付寶公鑰”,即可獲取支付寶公鑰,用于支付寶返回數據的驗簽。

對于支付寶公鑰,看到的是一個字符串,如下:

	MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDI6d306Q8fIfCOaTXyiUeJHkrIvYISRcc73s3vF1ZT7XN8RNPwJxo8pWaJMmvyTn9N4HQ632qJBVHf8sxHi/fEsraprwCtzvzQETrNRwVxLO5jVmRGi60j8Ue1efIlzPXV9je9mkjzOmdssymZkh2QhUrCmZYI/FCEa3/cNMW0QIDAQAB

如果需要使用文件方式(如使用服務端 SDK 的 PHP/.NET 版本)讀取支付寶公鑰,需要在頭尾加入標示后保存至文件,文件內容如下:

	-----BEGIN PUBLIC KEY-----
	MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDI6d306Q8fIfCOaTXyiUeJHkrIvYISRcc73s3vF1ZT7XN8RNPwJxo8pWaJMmvyTn9N4HQ632qJBVHf8sxHi/fEsraprwCtzvzQETrNRwVxLO5jVmRGi60j8Ue1efIlzPXV9je9mkjzOmdssymZkh2QhUrCmZYI/FCEa3/cNMW0QIDAQAB
	-----END PUBLIC KEY-----

1.1.3 支付寶 APP 支付功能申請簽約

1、準備簽約資料

請提前準備以下資料:1)營業執照 2)APP 說明文檔 3)如開發者與簽約者不一致,需提供開發合作協議。

2、提交簽約信息

填寫商戶經營信息、APP 說明文檔、商戶聯系人信息。

3、應用創建完成后點擊查看我的應用詳情,功能信息中進行 APP 支付功能的簽約。

或者進入螞蟻金服商家中心 選擇 APP 支付功能進行簽約。

APP 說明文檔相關格式。

1.2 支付寶 APP 支付集成并配置 SDK

接入移動支付需要集成兩個 SDK,客戶端 SDK 需要集成在商戶自己的 APP 中,用于喚起支付寶 APP 并發送交易數據,并在支付寶 APP 返回商戶 APP 時獲得支付結果。服務端 SDK 需要商戶集成在自己的服務端系統中,用于協助解析并驗證客戶端同步返回的支付結果和異步通知。

如何集成客戶端 SDK

點擊查看 iOS 集成流程詳解,Android 集成流程詳解。

如何集成服務端 SDK

為了幫助開發者調用開放接口,我們提供了開放平臺服務端 SDK,包含 JAVA、PHP 和 .NET 三語言版本,封裝了簽名&驗簽、HTTP 接口請求等基礎功能。請先下載對應語言版本的 SDK 并引入您的開發工程。

1.3 支付寶 APP 支付上線應用

應用開發完成后,請開發者自行進行驗收和安全性檢查(安全性檢查可參考《開放平臺第三方應用安全開發指南》),驗收檢查完成后,可申請上線,上線成功后,狀態變為已上線,這個狀態下的應用能夠調用生產環境的接口。

應用申請上線后,預計會有1個工作日的審核時間,請耐心等待。

步驟一:確認功能

步驟二:完善應用信息

步驟三:申請上線

應用上線后可新增功能、刪除功能,操作后實時生效。刪除功能時請謹慎操作,如果線上已經有用戶使用此功能,刪除功能后會導致無法使用。

1.4 支付寶 APP 支付系統交互流程

系統交互流程:

如圖,以 Android 平臺為例:

第4步:調用支付接口:此消息就是本接口所描述的支付寶客戶端 SDK 提供的支付對象 PayTask,將商戶簽名后的訂單信息傳進 payv2 方法喚起支付寶收銀臺,交易數據格式具體參見請求參數說明。

第5步:支付請求:支付寶客戶端 SDK 將會按照商戶客戶端提供的請求參數發送支付請求。

第8步:接口返回支付結果:商戶客戶端在第 4 步中調用的支付接口,會返回最終的支付結果(即同步通知),參見客戶端同步返回。

第13步:用戶在支付寶 APP 或 H5 收銀臺完成支付后,會根據商戶在手機網站支付 API 中傳入的前臺回跳地址 return_url 自動跳轉回商戶頁面,同時在 URL 請求中附帶上支付結果參數。同時,支付寶還會根據原始支付 API 中傳入的異步通知地址 notify_url,通過 POST 請求的形式將支付結果作為參數通知到商戶系統,詳情見支付結果異步通知。

除了正向支付流程外,支付寶也提供交易查詢、關閉、退款、退款查詢以及對賬等配套 API。

特別注意:

構造交易數據并簽名必須在商戶服務端完成,商戶的應用私鑰絕對不能保存在商戶 APP 客戶端中,也不能從服務端下發。
同步返回的數據,只是一個簡單的結果通知,商戶確定該筆交易付款是否成功需要依賴服務端收到支付寶異步通知的結果進行判斷。
商戶系統接收到通知以后,必須通過驗簽(驗證通知中的 sign 參數)來確保支付通知是由支付寶發送的。建議使用支付寶提供的 SDK 來完成,詳細驗簽規則參考異步通知驗簽。

2、支付寶 APP 支付開發

說明:

商戶服務端:

負責生成訂單及簽名,及接受支付異步通知。

APP 客戶端:

負責使用服務端傳來的訂單信息調用支付寶支付接口,及根據 SDK 同步返回的支付結果展示結果頁。

服務端接入:

私鑰必須放在商戶服務端,簽名過程必須放在商戶服務端。

2.1 支付寶 APP 支付集成設置

1、下載 iOS 端開發工具包 AlipaySDK,并添加到創建的工程中。AlipaySDK 中有 2 個文件,分別為:

	AlipaySDK.bundle
	AlipaySDK.framework

2、添加 SDK 的依賴庫和框架。在 項目設置 => TARGETS => Build Phases => Link Binary With Libraries 中依次添加以下庫或框架:

	SystemConfiguration.framework
	CoreTelephony.framework
	QuartzCore.framework
	CoreText.framework
	CoreGraphics.framework
	CoreMotion.framework
	CFNetwork.framework
	AlipaySDK.framework					// 導入 SDK 時已自動添加
	
	libz.dylib
	libc++.tbd

其中,需要注意的是:

如果是 Xcode 7.0 之后的版本,需要添加 libc++.tbd、libz.tbd

如果是 Xcode 7.0 之前的版本,需要添加 libc++.dylib、libz.dylib

3、在 項目設置 => TARGETS => Info => URL Types 中點擊加號按鈕添加,在 “URL Schemes” 中輸入 “alisdkdemo”。

注意:“alisdkdemo” 即為調起支付寶開始支付時使用的參數 appScheme。這里的 URL Schemes 中輸入的 alisdkdemo,為測試 demo,實際商戶的 app 中要填寫獨立的 scheme,建議跟商戶的 app 有一定的標示度,要做到和其他的商戶 app 不重復,否則可能會導致支付寶返回的結果無法正確跳回商戶 app。

	NSString *appScheme = @"alisdkdemo";
	
	[[AlipaySDK defaultService] payOrder:orderString 
	                          fromScheme:appScheme 
	                            callback:^(NSDictionary *resultDic) {
        
        NSLog(@"reslut = %@", resultDic);
    }];

4、iOS 9 + 系統策略更新,限制了 http 協議的訪問,受此影響,當你的應用在 iOS 9 + 中需要使用支付寶 SDK 的相關能力時,需要在 “Info.plist” 里增加如下代碼:

	<key>NSAppTransportSecurity</key>
	<dict>
	<key>NSAllowsArbitraryLoads</key>
	<true/>
	</dict>

5、若將 openssl 文件夾隨意拉進項目中,即使添加頭文件鏈接,也可能會出現找不到頭文件的問題,在 項目設置 => TARGETS => Build Settings => Search Paths => Header Search Paths 中添加 openssl 文件夾所在的路徑即可解決。

2.2 支付寶 APP 支付集成

詳細代碼見 GitHub

Objective-C

AppDelegate.m

	// 支付寶支付回調,當用戶通過其他應用啟動本應用時,會回調這個方法
	
	// NS_DEPRECATED_IOS(2_0, 9_0)
	- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
	                                       sourceApplication:(NSString *)sourceApplication
	                                              annotation:(id)annotation {
	         
		if ([url.host isEqualToString:@"safepay"]) {
		
		// 支付跳轉支付寶錢包進行支付,處理支付結果
		[[AlipaySDK defaultService] processOrderWithPaymentResult:url 
		                                          standbyCallback:^(NSDictionary *resultDic) {
			NSLog(@"result = %@",resultDic);
		}];

		return YES;
	}

	// NS_AVAILABLE_IOS(9_0) 9.0 以后使用新 API 接口
	- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url 
	                                         options:(NSDictionary<NSString*, id> *)options {
	
		if ([url.host isEqualToString:@"safepay"]) {

			// 支付跳轉支付寶錢包進行支付,處理支付結果
			[[AlipaySDK defaultService] processOrderWithPaymentResult:url 
			                                          standbyCallback:^(NSDictionary *resultDic) {
    			NSLog(@"result = %@",resultDic);
 		}];

		return YES;
	}

ViewController.m

	NSMutableDictionary *params = [NSMutableDictionary dictionary];
    
	// 在此設置商戶服務端需要的參數
	params[@"totalFee"] = @"10";
	params[@"bodyID"] = @"1";
    
	// 向商戶支付寶支付服務器端請求組裝和簽名后的請求串 orderString
	AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
	
	[sessionManager POST:@"test 商戶支付寶支付后臺接口"
	          parameters:params
	            progress:nil
	             success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
     
    	// 解析商戶支付寶支付服務器端返回的數據,獲得組裝和簽名后的請求串 orderString
    
    	NSLog(@"responseObject = %@", responseObject);
     
    	NSString *orderString = responseObject[@"signedString"];
     
    	if (orderString != nil) {
         
         	// 應用注冊的 scheme,在 Info.plist 定義 URL types
         	NSString *appScheme = @"alisdkdemo";
         	
         	// 調用支付結果開始支付
         	[[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme 
         	                                                   callback:^(NSDictionary *resultDic) {
             
             	NSLog(@"reslut = %@", resultDic);
         	}];
    	}
     
	} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
     
     	NSLog(@"向商戶支付寶支付服務器端請求信息失敗:%@", error.localizedDescription);
	}];

總結

以上是生活随笔為你收集整理的iOS的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。