ios 打賞微信/支付寶

聲明:本人文筆不好,希望大家諒解。

? ? ? ?ios打賞是一個(gè)有歧義的地方。蘋果沒有明確的定義,目前都是以直接支付的方式集成的,所以不用考慮內(nèi)購問題。

由于是打賞所以不用在客戶端做訂單商品信息。

1 微信支付的集成

首先去這 https://pay.weixin.qq.com/ 下載微信支付的SDK以及demo

導(dǎo)入文件如 圖1.

圖1

在你的項(xiàng)目中的Appdelegate中實(shí)現(xiàn)方法

代碼


- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url {

return[WXApihandleOpenURL:urldelegate:[WXApiManagersharedManager]];

}

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

return[WXApihandleOpenURL:urldelegate:[WXApiManagersharedManager]];

}


并且在 - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

實(shí)現(xiàn)注冊(cè)微信的方法


[WXApiregisterApp:@"xxxx"withDescription:@"demo 2.0"];

[WXApiregisterApp:@"xxxx"];

這兩種注冊(cè)方法沒什么區(qū)別

并且設(shè)置URL Schemes如 圖2

圖2

在你需要實(shí)現(xiàn)微信支付的地方寫如下代碼


//調(diào)起微信支付

PayReq* req= [[[PayReqalloc]init]autorelease];

req.partnerId=@"1380654701";

req.prepayId=@"wx20161205242740c6aae18cc50936210796";

req.nonceStr=@"dfb6d0ae13af7ede53bc18a4fb82804c";

req.timeStamp=1480919261;

req.package=@"Sign=WXPay";

req.sign=@"9C2879B2FB0F91111324CDBDBE585213";

[WXApisendReq:req];


各個(gè)字段從服務(wù)器返回的數(shù)據(jù)中取出來就可以了。

回調(diào)函數(shù)在 圖3 這個(gè)文件在demo中自己查看就行了。


圖 3

可以自己給這倆文件添加個(gè)代理方法直接回調(diào)到你當(dāng)前發(fā)起支付的頁面來處理結(jié)果。微信打賞就完成了。支付的話也差不多就是需要在app中生成商品信息。

2 支付寶支付

支付寶相對(duì)于微信支付就好多了,就是文檔不好找 ,首先https://doc.open.alipay.com/doc2/alipayDocIndex.htm到這里下載sdk與demo

把 AlipaySDK.bundle、AlipaySDK.framework 拖到項(xiàng)目中。

添加依賴庫如 圖4


圖4

導(dǎo)入頭文件#import<AlipaySDK/AlipaySDK.h>

在發(fā)起支付寶支付打賞的時(shí)候?qū)崿F(xiàn)代碼


[[AlipaySDK defaultService]payOrder:@"xxx"fromScheme:kUrlSchemecallback:^(NSDictionary*resultDic) {

NSLog(@"reslut = %@",resultDic);

//9000訂單支付成功

//8000正在處理中,支付結(jié)果未知(有可能已經(jīng)支付成功),請(qǐng)查詢商戶訂單列表中訂單的支付狀態(tài)

//4000訂單支付失敗

//6001用戶中途取消

//6002網(wǎng)絡(luò)連接出錯(cuò)

//6004支付結(jié)果未知(有可能已經(jīng)支付成功),請(qǐng)查詢商戶訂單列表中訂單的支付狀態(tài)

//其它其它支付錯(cuò)誤

}];


@“xxx”中 就是服務(wù)器返回的數(shù)據(jù),自己替換下就行了。

2017年01月13日11:26:37 更新

還有就是支付寶支付分為 應(yīng)用支付和網(wǎng)頁授權(quán)支付,網(wǎng)頁支付是走支付寶SDK的回調(diào)的,但是支付寶應(yīng)用支付是不走回調(diào)的,說明了只是走到了 Appdelegate里面的 - (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary*)options ;這個(gè)方法里面,然后就沒有又然后了。

就是具體的回調(diào)方法需要你自己去寫 通知也好,block也好需要自己去定義。支付寶這大坑在文檔里面是沒有的。我這里用的是block

#pragma mark以下是支付寶支付相關(guān)

-(BOOL)Alipay:(NSURL*)url{

/*

9000訂單支付成功

8000正在處理中

4000訂單支付失敗

6001用戶中途取消

6002網(wǎng)絡(luò)連接出錯(cuò)

*/

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

//這個(gè)是進(jìn)程KILL掉之后也會(huì)調(diào)用,這個(gè)只是第一次授權(quán)回調(diào),同時(shí)也會(huì)返回支付信息

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

[selfAlipayWithResutl:resultDic];

}];

//跳轉(zhuǎn)支付寶錢包進(jìn)行支付,處理支付結(jié)果,這個(gè)只是輔佐訂單支付結(jié)果回調(diào)

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

[selfAlipayWithResutl:resultDic];

}];

}elseif([url.hostisEqualToString:@"platformapi"]){

//授權(quán)返回碼

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

[selfAlipayWithResutl:resultDic];

}];

}

returnYES;

}

-(void)AlipayWithResutl:(NSDictionary*)resultDic{

NSString*str = [resultDicobjectForKey:@"resultStatus"];

AlipayResultresult =AlipayResultSuccess;

switch(str.intValue) {

case9000:

case6001:

result = str.intValue;

break;

default:

result =AlipayResultFailure;

break;

}

if(self.payComplete) {

self.payComplete(result);

}

}

- (void)alipayonComplete:(ALIPAY_PAY_COMPLETE)completeBlock {

self.payComplete= completeBlock;

}

- (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary*)options {

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

return[selfAlipay:url];

}

}

然后在你要處理回調(diào)的頁面 實(shí)現(xiàn)這個(gè)block就行了。

打賞就完成了。是不是支付寶比微信簡(jiǎn)單的多。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容