支付寶支付

支付寶集成的介紹

第三方支付平臺,支付寶是用戶將錢付款給支付寶,之后支付寶將錢轉(zhuǎn)入我們自己的賬戶。

集成支付寶的步驟

  • 向支付寶申請, 與支付寶簽約,獲得商戶ID(partner)和賬號ID(seller)和私鑰(privateKey)

  • 下載支付寶SDK

  • 生成訂單信息,簽名加密

  • 調(diào)用支付寶客戶端,由支付寶客戶端跟支付寶安全服務(wù)器打交道

  • 支付完畢后,支付寶客戶端會自動跳回到原來的應(yīng)用程序

  • 在原來的應(yīng)用程序中顯示支付結(jié)果給用戶看

集成的流程圖(官方)

下載SDK

官網(wǎng)地址:https://www.alipay.com

根據(jù)dome配置開發(fā)環(huán)境:(微信提供了一個公共的測試賬號,支付寶沒有)


支付完成之后跳轉(zhuǎn)的APP

集成流程

  • 項目中展示對應(yīng)的商品內(nèi)容

  • 當(dāng)用戶點擊購買時,通過支付寶購買商品

  • 購買流程

    • 根據(jù)對應(yīng)的商品,生成訂單
    • 對訂單進行簽名加密
    • 調(diào)用支付寶客戶端進行支付
  • 支付成功或者失敗時回調(diào)

    • 通過網(wǎng)頁支付,則直接在block中直接拿到支付結(jié)果
    • 通過支付寶客戶端支付,則在appdelegate的代理方法中拿到支付結(jié)果
  • 主要代碼

    // 1.獲取簽約之后的三個數(shù)據(jù)
    NSString *partner = @"";
    NSString *seller = @"";
    NSString *privateKey = @"";
    
    // 2.生成訂單和簽名
    Order *order = [[Order alloc] init];
    order.partner = partner;
    order.seller = seller;
    order.tradeNO = nil; //訂單ID(由商家自行制定)
    order.productName = product.name; //商品標(biāo)題
    order.productDescription = product.detail; //商品描述
    order.amount = [NSString stringWithFormat:@"%.2f",product.price]; //商品價格
    
    // 服務(wù)器的回調(diào)地址
    order.notifyURL =  @"http://www.xxx.com"; // 用戶支付成功后,支付寶服務(wù)器會同步通知我們的服務(wù)器.我們服務(wù)器需要有一個可以回調(diào)的地址
    order.service = @"mobile.securitypay.pay";
    order.paymentType = @"1";
    order.inputCharset = @"utf-8";
    order.itBPay = @"30m";
    order.showUrl = @"m.alipay.com";
    
    //應(yīng)用注冊scheme,在AlixPayDemo-Info.plist定義URL types
    NSString *appScheme = @"alipay";
    
    //將商品信息拼接成字符串
    NSString *orderSpec = [order description];
    
    //獲取私鑰并將商戶信息簽名,外部商戶可以根據(jù)情況存放私鑰和簽名,只需要遵循RSA簽名規(guī)范,并將簽名字符串base64編碼和UrlEncode
    id<DataSigner> signer = CreateRSADataSigner(privateKey);
    NSString *signedString = [signer signString:orderSpec];
    
    //將簽名成功字符串格式化為訂單字符串,請嚴格按照該格式
    NSString *orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
                       orderSpec, signedString, @"RSA"];
    
    // 跳轉(zhuǎn)到支付寶進行支付
    [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
        NSLog(@"reslut = %@",resultDic);
    }];
  • 在AppDelegate配置處理返回的支付結(jié)果
  -(BOOL)application:(UIApplication *)application  openURL:(NSURL *)url  sourceApplication:(NSString *)sourceApplication  annotation:(id)annotation {
    
    //跳轉(zhuǎn)支付寶錢包進行支付,處理支付結(jié)果
    [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
        NSLog(@"result = %@",resultDic);
    }];
    
    return YES;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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