支付寶支付
按照“支付寶開放平臺”的“iOS整合流程”進行整合:
https://docs.open.alipay.com/204/105295/
一、專案配置:
- 請按照上面給的連結文件進行配置
二、程式碼:
1.在.pch檔案中巨集定義跳轉app的URLSchemes:
//跳轉本app需要用的 URLScheme
#define kAppURLScheme @"AJProject"
2.在用到支付寶支付的地方,倒入標頭檔案:
#import <AlipaySDK/AlipaySDK.h>
3.AJGoodsCashierController.m檔案(收銀臺頁):
#pragma mark - 支付寶相關
/**
支付寶支付
@param orderStr 後臺返回的訂單string
*/
-(void)aliPayWithOrderStr:(NSString *)orderStr {
[AlipaySDK.defaultService payOrder:orderStr fromScheme:kAppURLScheme callback:^(NSDictionary *resultDic) {
//這是從支付寶H5頁面支付之後走的回撥 - 未離開了本app
[self postAliPayResultNotificationWithDict:resultDic];
}];
}
/**傳送支付寶支付結果的通知*/
-(void)postAliPayResultNotificationWithDict:(NSDictionary *)dict {
if (dict != nil) {
[NSNotificationCenter.defaultCenter postNotificationName:@"kAliPayResultNotification" object:nil userInfo:dict];
}
}
/**接收到通知的回撥 - “支付寶支付結果”*/
-(void)getAlipayOrderPayResult:(NSNotification *)notification {
if (notification.userInfo != nil) {
NSDictionary * resultDic = notification.userInfo;
NSString * resultStatus = [resultDic valueForKey:@"resultStatus"];
if ([resultStatus isEqualToString:@"9000"]) {//支付成功
self.payResultLabel.text = @"支付成功!";
[self.payResultImageView setImageWithName:@"icon_pay_paySuccess"];
} else {//支付失敗
self.payResultLabel.text = @"支付失敗...";
[self.payResultImageView setImageWithName:@"icon_pay_payFail"];
}
self.payResultBgView.hidden = false;
[self.view bringSubviewToFront:self.payResultBgView];
}
}
4.AppDelegate.m檔案:
- 下面的 processAuthResult 方法,是處理“支付寶app授權結果資訊”的方法,如果需求中有對授權結果的處理,可以選擇呼叫。如果只是處理“支付成功/失敗的結果資訊”,那麼只需要呼叫 processOrderWithPaymentResult 方法即可。
#pragma mark - 支付寶接入
// NOTE: 9.0以前
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
if ([url.host isEqualToString:@"safepay"]) {
// 支付跳轉支付寶錢包進行支付,處理支付結果(從支付寶app支付之後走的回撥 - 離開了本app)
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
[self postAliPayResultNotificationWithDict:resultDic];
}];
//處理授權結果
[[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
// 解析 auth code
NSString *result = resultDic[@"result"];
NSString *authCode = nil;
if (result.length>0) {
NSArray *resultArr = [result componentsSeparatedByString:@"&"];
for (NSString *subResult in resultArr) {
if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
authCode = [subResult substringFromIndex:10];
break;
}
}
}
NSLog(@"授權結果 authCode = %@", authCode?:@"");
}];
}
return YES;
}
// NOTE: 9.0及以後,使用新API介面
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
if ([url.host isEqualToString:@"safepay"]) {
// 支付跳轉支付寶錢包進行支付,處理支付結果(從支付寶app支付之後走的回撥 - 離開了本app)
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
[self postAliPayResultNotificationWithDict:resultDic];
}];
// 處理授權結果
[[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
// 解析 auth code
NSString *result = resultDic[@"result"];
NSString *authCode = nil;
if (result.length>0) {
NSArray *resultArr = [result componentsSeparatedByString:@"&"];
for (NSString *subResult in resultArr) {
if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
authCode = [subResult substringFromIndex:10];
break;
}
}
}
NSLog(@"授權結果 authCode = %@", authCode?:@"");
}];
}
return YES;
}
/**傳送支付寶支付結果的通知*/
-(void)postAliPayResultNotificationWithDict:(NSDictionary *)dict {
if (dict != nil) {
[NSNotificationCenter.defaultCenter postNotificationName:@"kAliPayResultNotification" object:nil userInfo:dict];
}
}
相關文章
- 微信支付,支付寶支付
- 關於微信支付,支付寶支付
- Java 支付寶支付,退款,單筆轉賬到支付寶賬戶(支付寶訂單退款)Java
- Django呼叫支付寶支付介面Django
- Java接入支付寶支付教程Java
- 支付寶alipay移動支付
- 支付寶、微信支付(.NET)
- vue-仿支付寶支付Vue
- PHP-Laravel支付寶支付和微信支付PHPLaravel
- pc端實現支付寶支付
- 支付寶微信合單支付
- Android 接入微信支付寶支付Android
- 支付寶支付產品介面文件地址和支付寶代金券理解
- java對接支付寶支付(手機網站支付)Java網站
- 支付寶 InfoStr
- CS支付寶
- Django對接支付寶Alipay支付介面Django
- 手機APP如何接入支付寶支付APP
- flutter 支付寶APP支付 (包含後臺)FlutterAPP
- go-zero之App支付寶支付GoAPP
- 支付寶裡如何使用網銀支付?
- iOS使用Stripe整合支付寶Alipay支付iOS
- 微信、支付寶支付那點事
- java實現沙箱測試環境支付寶支付(demo)和整合微信支付和支付寶支付到springmvc+spring+mybatis環境全過程(支付寶和微信支付、附原始碼)JavaSpringMVCMyBatis原始碼
- 支付寶支付回撥觸發問題
- 基於 golang 的支付寶支付小案例Golang
- IDEA支付寶小程式開發流程——支付Idea
- XorPay 個人支付平臺【支援個人微信支付和支付寶支付介面】
- android 整合微信支付和支付寶支付其實很簡單Android
- Laravel 搞定支付寶和微信掃碼支付Laravel
- web端網站接入支付寶支付過程Web網站
- SpringMVC 實現支付寶支付功能(沙箱環境)SpringMVC
- 關於支付寶以及微信支付的整合
- 小米手環3繫結支付寶免密支付教程 小米手環3支援支付寶免密支付嗎?
- 支付寶新版介面曝光:支付寶小程式或迎來重磅入口
- pay-spring-boot 開箱即用的Java支付模組,整合支付寶支付、微信支付SpringbootJava
- laravel 支付寶問題Laravel
- SpringBoot 配置支付寶介面Spring Boot