支付寶業(yè)務(wù)相關(guān)(一) —— 支付寶支付集成(一)

版本記錄

版本號(hào) 時(shí)間
V1.0 2017.05.24

前言

很多app都有支付和提現(xiàn)功能,而移動(dòng)支付中支付寶泳梆、微信無疑是國(guó)內(nèi)重要的支付平臺(tái)和工具,最近有一個(gè)項(xiàng)目需要增加支付寶支付功能塞关,這里就講述下關(guān)于支付寶集成的問題蜒犯,感興趣的可以看一下抽活。

支付寶支付業(yè)務(wù)流程

在說明支付寶原理之前硫戈,首先需要看的是支付寶支付的開發(fā)文檔。
支付寶支付開發(fā)文檔

下面我們就進(jìn)入正題下硕。

  • 創(chuàng)建應(yīng)用:在開發(fā)平臺(tái)創(chuàng)建一個(gè)應(yīng)用丁逝,接入App支付能力,需要在開放平臺(tái)創(chuàng)建一個(gè)應(yīng)用梭姓,通過該應(yīng)用來接入各種能力霜幼。可以根據(jù)下面:
    了解應(yīng)用創(chuàng)建步驟
    開始創(chuàng)建應(yīng)用
  • 配置應(yīng)用
    • 為創(chuàng)建的應(yīng)用添加所需功能誉尖。給應(yīng)用添加App支付功能辛掠,這樣就可以在你的應(yīng)用里使用App支付能力。
      了解如何添加APP支付功能
      立即開始添加
    • 簽約:在使用這些能力的時(shí)候释牺,需要在開放平臺(tái)里進(jìn)行簽約,這時(shí)候約定的合同就生效了回挽。也可以代替商戶簽約没咙。
    • 配置密匙:為了保證交易雙方的身份和數(shù)據(jù)安全,需要配置雙方密鑰千劈。
  • 設(shè)計(jì)
    • 接入設(shè)計(jì):常用的接入方式與架構(gòu)建議祭刚。在開始開發(fā)前,需要了解接入的方式或者材料等
    • 安全設(shè)計(jì):為了保證交易安全,支付寶采用了一系列的安全手段涡驮。
  • 開發(fā)
    • SDK和開發(fā)語(yǔ)言:App支付為開發(fā)者提供了Android和iOS的客戶端SDK, 為了驗(yàn)證交易數(shù)據(jù)的來源暗甥,開發(fā)者需要在商家后臺(tái)對(duì)交易數(shù)據(jù)進(jìn)行加簽, 驗(yàn)簽,那么就需要集成開放平臺(tái)服務(wù)端SDK捉捅。
    • 集成客戶端SDK:在集成App支付能力時(shí)撤防,為主流移動(dòng)平臺(tái)的App提供集成方式。
    • 支付主流程:在集成App支付能力時(shí)棒口,建議實(shí)現(xiàn)如下支付場(chǎng)景:(創(chuàng)建訂單并支付寄月,根據(jù)支付結(jié)果確定支付狀態(tài),并且做異常處理无牵,必要時(shí)候關(guān)閉訂單)漾肮。
    • 退款流程:商戶由于業(yè)務(wù)原因可能需要退款,退款的途徑按照支付途徑原路返回. 支付渠道為花唄茎毁、余額等退款即時(shí)到賬克懊。銀行卡的退款時(shí)間以銀行退款時(shí)間為準(zhǔn),一般情況下2小時(shí)內(nèi)可到賬七蜘。也可以在商戶門戶(b.alipay.com)中退款。
    • 對(duì)賬:為了保障交易的正確性崔梗,支付寶提供了交易賬單數(shù)據(jù)提供給商戶對(duì)賬夜只。
  • 調(diào)試應(yīng)用:沙箱環(huán)境供調(diào)試使用,支付能力直接涉及到交易與資金蒜魄,為了方便開放者調(diào)試支付能力扔亥,我們已經(jīng)準(zhǔn)備好沙箱環(huán)境,包括沙箱環(huán)境賬號(hào)和沙箱版支付寶錢包谈为,這樣就可以在沙箱環(huán)境調(diào)試了旅挤。
  • 上線應(yīng)用:上線應(yīng)用所需步驟,商戶本身應(yīng)用上線時(shí)候伞鲫,也要把支付寶開放平臺(tái)的應(yīng)用上線粘茄。

下面看一下支付流程圖。

支付寶支付流程圖

下面看一下支付原理圖秕脓。

支付原理圖

支付寶支付SDK和集成流程

下面我們先看一下支付寶的SDK柒瓣。

支付寶SDK

下面說一下SDK的集成流程。

一吠架、導(dǎo)入代碼

步驟1:啟動(dòng)IDE(如Xcode)芙贫,把iOS包中的壓縮文件中以下文件拷貝到項(xiàng)目文件夾下,并導(dǎo)入到項(xiàng)目工程中傍药。

AlipaySDK.bundle
AlipaySDK.framework

在Build Phases選項(xiàng)卡的Link Binary With Libraries中磺平,增加以下依賴:

添加依賴庫(kù)

其中魂仍,需要注意的是:

  • 如果是Xcode 7.0之后的版本,需要添加libc++.tbd拣挪、libz.tbd擦酌。
  • 如果是Xcode 7.0之前的版本,需要添加libc++.dylib菠劝、libz.dylib赊舶。

步驟2:在需要調(diào)用AlipaySDK的文件中,增加頭文件引用闸英。

#import <AlipaySDK/AlipaySDK.h>

步驟3:組裝請(qǐng)求信息锯岖。

這里需要注意:這一步應(yīng)在商戶服務(wù)端完成,商戶服務(wù)端直接將組裝和簽名后的請(qǐng)求串orderString傳給客戶端甫何,客戶端直接傳給SDK發(fā)起請(qǐng)求出吹。文檔和Demo是為了示例效果在客戶端實(shí)現(xiàn)。

//將商品信息賦予AlixPayOrder的成員變量
Order* order = [Order new];
 
// NOTE: app_id設(shè)置
order.app_id = appID;
 
// NOTE: 支付接口名稱
order.method = @"alipay.trade.app.pay";
 
// NOTE: 參數(shù)編碼格式
order.charset = @"utf-8";
 
// NOTE: 當(dāng)前時(shí)間點(diǎn)
NSDateFormatter* formatter = [NSDateFormatter new];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
order.timestamp = [formatter stringFromDate:[NSDate date]];
 
// NOTE: 支付版本
order.version = @"1.0";
 
// NOTE: sign_type設(shè)置
order.sign_type = @"RSA";
 
// NOTE: 商品數(shù)據(jù)
order.biz_content = [BizContent new];
order.biz_content.body = @"我是測(cè)試數(shù)據(jù)";
order.biz_content.subject = @"1";
order.biz_content.out_trade_no = [self generateTradeNO]; //訂單ID(由商家自行制定)
order.biz_content.timeout_express = @"30m"; //超時(shí)時(shí)間設(shè)置
order.biz_content.total_amount = [NSString stringWithFormat:@"%.2f", 0.01]; //商品價(jià)格
 
//將商品信息拼接成字符串
NSString *orderInfo = [order orderInfoEncoded:NO];
NSString *orderInfoEncoded = [order orderInfoEncoded:YES];
NSLog(@"orderSpec = %@",orderInfo);
 
// NOTE: 獲取私鑰并將商戶信息簽名辙喂,外部商戶的加簽過程請(qǐng)務(wù)必放在服務(wù)端捶牢,防止公私鑰數(shù)據(jù)泄露;
//       需要遵循RSA簽名規(guī)范巍耗,并將簽名字符串base64編碼和UrlEncode
id<DataSigner> signer = CreateRSADataSigner(privateKey);
NSString *signedString = [signer signString:orderInfo];
 
// NOTE: 如果加簽成功秋麸,則繼續(xù)執(zhí)行支付
if (signedString != nil) {
    //應(yīng)用注冊(cè)scheme,在AliSDKDemo-Info.plist定義URL types
    NSString *appScheme = @"alisdkdemo";
     
    // NOTE: 將簽名成功字符串格式化為訂單字符串,請(qǐng)嚴(yán)格按照該格式
    NSString *orderString = [NSString stringWithFormat:@"%@&sign=%@",
                             orderInfoEncoded, signedString];
     
    // NOTE: 調(diào)用支付結(jié)果開始支付
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
        NSLog(@"reslut = %@",resultDic);
    }];
}

步驟4: 配置支付寶客戶端返回url處理方法。(外部存在支付包錢包炬太,支付寶錢包將處理結(jié)果通過url返回灸蟆。)如示例AliSDKDemo\APAppDelegate.m文件中,增加引用代碼:

#import <AlipaySDK/AlipaySDK.h>

在@implementation AppDelegate中以下代碼中的NSLog改為實(shí)際業(yè)務(wù)處理代碼:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
     
    if ([url.host isEqualToString:@"safepay"]) {
        //跳轉(zhuǎn)支付寶錢包進(jìn)行支付亲族,處理支付結(jié)果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
        }];
    }
    return YES;
}
 
// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
    if ([url.host isEqualToString:@"safepay"]) {
        //跳轉(zhuǎn)支付寶錢包進(jìn)行支付炒考,處理支付結(jié)果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
        }];
    }
    return YES;
}

二、配置基本信息

打開“APViewController.m”文件霎迫,對(duì)以下2個(gè)參數(shù)進(jìn)行編輯斋枢。

SString *appid = @"";
NSString *privateKey = @"";

iOS基本信息配置表:

參數(shù) 含義
appid 應(yīng)用ID,調(diào)用API時(shí)用來識(shí)別開發(fā)者知给。請(qǐng)參考創(chuàng)建應(yīng)用并獲取APPID瓤帚。
private_key 應(yīng)用私鑰,pkcs8格式涩赢。請(qǐng)參考配置密鑰戈次。

注意:這些參數(shù)配置僅作為客戶端示例使用。商戶實(shí)際支付過程中參數(shù)需要放置在服務(wù)端筒扒,且整個(gè)簽名過程必須在服務(wù)端進(jìn)行朝扼。

三、代碼示例運(yùn)行邏輯

步驟1:調(diào)用order.m里的函數(shù)description將商品信息拼接成字符串作為待簽名字符串霎肯,如:

app_id=2015052600090779&biz_content={"timeout_express":"30m","seller_id":"","product_code":"QUICK_MSECURITY_PAY","total_amount":"0.02","subject":"1","body":"我是測(cè)試數(shù)據(jù)","out_trade_no":"ZQLM3O56MJD4SK3"}&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA2&timestamp=2016-07-28 20:36:11&version=1.0

步驟2:使用類CreateRSADataSigner擎颖,調(diào)用signString簽名函數(shù)做簽名,如:

"GsSZgPloF1vn52XAItRAldwQAbzIgkDyByCxMfTZG%2FMapRoyrNIJo4U1LUGjHp6gdBZ7U8jA1kljLPqkeGv8MZigd3kH25V0UK3Jc3C94Ngxm5S%2Fz5QsNr6wnqNY9sx%2Bw6DqNdEQnnks7PKvvU0zgsynip50lAhJmflmfHvp%2Bgk%3D"

步驟3:把簽名結(jié)果賦值給參數(shù)sign戒努,并把sign加入之前的待簽名數(shù)組中囤萤,此時(shí)得到的便是要請(qǐng)求給支付寶的全部數(shù)據(jù)抛虫。

app_id=2015052600090779&biz_content={"timeout_express":"30m","seller_id":"","product_code":"QUICK_MSECURITY_PAY","total_amount":"0.02","subject":"1","body":"我是測(cè)試數(shù)據(jù)","out_trade_no":"ZQLM3O56MJD4SK3"}&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA2&timestamp=2016-07-28 20:36:11&version=1.0&sign=*********

步驟4:調(diào)用(AlipaySDK *)defaultService類下面的支付接口函數(shù),喚起支付寶支付頁(yè)面允跑。

(void)payOrder:(NSString *)orderStr
  fromScheme:(NSString *)schemeStr
    callback:(CompletionBlock)completionBlock

步驟5:當(dāng)這筆交易被買家支付成功后支付寶收銀臺(tái)上顯示該筆交易成功,并提示用戶“返回”搪柑。此時(shí)在APAppDelegate.m的 - (BOOL)application:(UIApplication )application openURL:(NSURL )url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 中調(diào)用獲取返回?cái)?shù)據(jù)的代碼【iOS9.0以上(包括iOS9.0)需要在 - (BOOL)application:(UIApplication *)app openURL:(NSURL )url options:(NSDictionary<NSString, id> *)options 中執(zhí)行 】聋丝。

[[AlipaySDK defaultService]
processOrderWithPaymentResult:url
standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);//返回的支付結(jié)果
}];

注意:

  • 同步返回?cái)?shù)據(jù)校驗(yàn)邏輯請(qǐng)參考
  • SDK付款有兩種模式:如果外部存工碾。

支付寶支付iOS調(diào)用說明

一弱睦、支付全部接口

  • 接口名稱:AlipaySDK
  • 接口描述:提供支付功能。
  • Alipay接口主要為商戶提供訂單支付功能渊额。接口所提供的方法况木,如下表所示。
支付接口

二旬迹、快捷訂單支付iOS

  • 方法名稱:pay方法
  • 方法原型:(void)payOrder:(NSString *)orderStr fromScheme:(NSString *)schemeStr callback:(CompletionBlock)completionBlock;
  • 方法功能:提供給商戶快捷訂單支付功能火惊。
快捷訂單接口

orderStr示例如下:

app_id=2015052600090779&biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22seller_id%22%3A%22%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A%220.02%22%2C%22subject%22%3A%221%22%2C%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%22314VYGIAGG7ZOYY%22%7D&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA2&timestamp=2016-08-15%2012%3A12%3A15&version=1.0&sign=MsbylYkCzlfYLy9PeRwUUIg9nZPeN9SfXPNavUCroGKR5Kqvx0nEnd3eRmKxJuthNUx4ERCXe552EV9PfwexqW%2B1wbKOdYtDIb4%2B7PL3Pc94RZL0zKaWcaY3tSL89%2FuAVUsQuFqEJdhIukuKygrXucvejOUgTCfoUdwTi7z%2BZzQ%3D

三、處理客戶端返回url

  • 方法名稱:處理客戶端方法
  • 方法原型:-(void)processOrderWithPaymentResult:(NSURL*)resultUrl standbyCallback:(CompletionBlock)completionBlock;
  • 方法功能:設(shè)備已安裝支付寶客戶端情況下奔垦,處理支付寶客戶端返回的url屹耐。

注意:該方法必須實(shí)現(xiàn),否則將會(huì)導(dǎo)致在安裝手機(jī)支付寶的情況下椿猎,支付結(jié)果無法正常同步返回惶岭。

處理客戶端返回URL

備注:請(qǐng)?jiān)贏PPDelegate的 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 中調(diào)用該方法,iOS9.0以上(包括iOS9.0)請(qǐng)?jiān)?- (BOOL)application:(UIApplication *)app openURL:(NSURL )url options:(NSDictionary<NSString, id> *)options 中調(diào)用該方法鸵贬。

四俗他、回調(diào)接口

在支付過程結(jié)束后,會(huì)通過callbackBlock同步返回支付結(jié)果(callbackBlock是調(diào)用支付同步的回調(diào))阔逼。支付結(jié)果中參數(shù)的提取兆衅,必須通過CompletionBlock獲取,禁止開發(fā)者私自解析支付結(jié)果返回的URL嗜浮。


支付寶支付工程代碼

下面我就以我寫的代碼說明支付寶支付的集成和實(shí)現(xiàn)羡亩。先看代碼。

//從后臺(tái)獲取簽名數(shù)據(jù)

- (void)requesstAlipaySignedString
{
    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
    [mutableDict setObject:@"0" forKey:@"chargeType"];
    [mutableDict setObject:self.cashNumTextField.text forKey:@"totalAmount"];
    
    [[JJNetWorkManager manager] requestByPostNetworkWithPayUrl:kalipayPharchase parameters:mutableDict success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"responseObject--%@",responseObject);
        
        if ([[responseObject objectForKey:@"code"] integerValue] == 0) {
            self.dataDictM = [responseObject objectForKey:@"data"];
            self.alipayOrderStr = [self.dataDictM objectForKey:@"sign"];
            
            if (self.alipayOrderStr) {
                // NOTE: 調(diào)用支付結(jié)果開始支付
                [[AlipaySDK defaultService] payOrder:self.alipayOrderStr fromScheme:@"ZebraChat" callback:^(NSDictionary *resultDic) {
                    NSLog(@"resultDic = %@",resultDic);                    
                }];
            }
        }
        
    } error:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"error--%@",error);
    }];
}

下面的代碼就是的AppDelegate中了危融。

//配置支付寶客戶端返回url處理方法

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    //支付寶
    if ([url.host isEqualToString:@"safepay"]) {
        //跳轉(zhuǎn)支付寶錢包進(jìn)行支付畏铆,處理支付結(jié)果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
        //在這里獲得支付結(jié)果,發(fā)送通知給相應(yīng)的服務(wù)器更新余額
        }];
        return YES;
    }
    
    if ([url.host isEqualToString:@"platformapi"])//支付寶錢包快登授權(quán)返回 authCode
    {
        [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
        }];
        
        return YES;
    }
    return NO;
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
{
    //支付寶
    if ([url.host isEqualToString:@"safepay"]) {
        //跳轉(zhuǎn)支付寶錢包進(jìn)行支付吉殃,處理支付結(jié)果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
        }];
        return YES;
    }
    
    if ([url.host isEqualToString:@"platformapi"])//支付寶錢包快登授權(quán)返回 authCode
    {
        [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
            NSLog(@"result = %@",resultDic);
        }];
        
        return YES;
    }
    //這里判斷是否發(fā)起的請(qǐng)求為微信支付辞居,如果是的話楷怒,用WXApi的方法調(diào)起微信客戶端的支付頁(yè)面(://pay 之前的那串字符串就是你的APPID,)
    return  [WXApi handleOpenURL:url delegate:self];
}

下面看結(jié)果圖瓦灶。

輸入充值金額
確認(rèn)訂單信息
輸入支付密碼
交易記錄查詢

后記

??到此為止鸠删,主要的和支付相關(guān)的我都寫完了,涉及到微信贼陶,內(nèi)購(gòu)刃泡,支付寶這三種支付方式,后續(xù)如有需要我還會(huì)添加其他的支付方式碉怔,比如銀聯(lián)支付等烘贴,有什么不對(duì)的地方希望大家能夠批評(píng)指出。

山水之樂
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撮胧,一起剝皮案震驚了整個(gè)濱河市桨踪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌趴樱,老刑警劉巖馒闷,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異叁征,居然都是意外死亡纳账,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門捺疼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疏虫,“玉大人,你說我怎么就攤上這事啤呼∥悦兀” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵官扣,是天一觀的道長(zhǎng)翅敌。 經(jīng)常有香客問我,道長(zhǎng)惕蹄,這世上最難降的妖魔是什么蚯涮? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮卖陵,結(jié)果婚禮上遭顶,老公的妹妹穿的比我還像新娘。我一直安慰自己泪蔫,他們只是感情好棒旗,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著撩荣,像睡著了一般铣揉。 火紅的嫁衣襯著肌膚如雪饶深。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天逛拱,我揣著相機(jī)與錄音粥喜,去河邊找鬼。 笑死橘券,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卿吐。 我是一名探鬼主播旁舰,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼嗡官!你這毒婦竟也來了箭窜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤衍腥,失蹤者是張志新(化名)和其女友劉穎磺樱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體婆咸,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡竹捉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尚骄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片块差。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖倔丈,靈堂內(nèi)的尸體忽然破棺而出憨闰,到底是詐尸還是另有隱情,我是刑警寧澤需五,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布鹉动,位于F島的核電站,受9級(jí)特大地震影響宏邮,放射性物質(zhì)發(fā)生泄漏泽示。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一蜀铲、第九天 我趴在偏房一處隱蔽的房頂上張望边琉。 院中可真熱鬧,春花似錦记劝、人聲如沸变姨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)定欧。三九已至渔呵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間砍鸠,已是汗流浹背扩氢。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留爷辱,地道東北人录豺。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像饭弓,于是被迫代替她去往敵國(guó)和親双饥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1弟断、App支付簡(jiǎn)介 買家在手機(jī)咏花、掌上電腦等無線設(shè)備的應(yīng)用程序內(nèi),可通過支付寶進(jìn)行付款購(gòu)買特定服務(wù)或商品阀趴,資金即時(shí)到...
    PZcoder閱讀 43,973評(píng)論 5 22
  • 準(zhǔn)備工作: 需要公司的營(yíng)業(yè)執(zhí)照昏翰,稅務(wù)信息,等老板的身份證信息等刘急,我記得棚菊,用這些材料,去支付寶注冊(cè)一個(gè)商家賬戶(審核...
    Hevin_Chen閱讀 6,797評(píng)論 0 9
  • 支付寶簡(jiǎn)介文檔 (適用于ydm-java接口與后臺(tái),如有誤入攻柠,但愿也能給您帶來幫助) 此文檔寫于2017年3月球订,只...
    隔壁付叔叔閱讀 17,046評(píng)論 3 19
  • 實(shí)現(xiàn)支付寶支付的準(zhǔn)備工作: 1.向支付寶簽約,成為支付寶的商戶 簽約完成后瑰钮,支付寶會(huì)提供一些必要的數(shù)據(jù)給我們 商戶...
    Anson楊春安閱讀 8,183評(píng)論 0 6
  • 整個(gè)支付邏輯分為兩個(gè)部分 對(duì)訂單模型order的總結(jié) 訂單模型中分為兩個(gè)部分商品模型 訂單模型 快速完成支付功能步...
    winlee閱讀 13,128評(píng)論 4 7