支付寶、微信sdk支付流程模擬
今天和同事閒聊的時候,聊到對接支付寶和微信sdk的事情,聊完以後興致未盡。順便去網上搜了一下,怎樣做一款sdk,網上的教程少的可憐,能搜到的也是好壞各異,參差不齊。遂下決心,敲一篇部落格,把sdk的實現流程講解一下。給迷茫中的小白一點思路。還是那句話,一萬個讀者有一萬個哈姆雷特,一萬個程式設計師有一萬種編碼風格,程式碼僅供參考。最後的效果如圖:
sdk內部類檔案:
匯入sdk後demo內部類檔案:
①UserInfoModel類作為傳入sdk的資料模型
UserInfoModel.h
#import <Foundation/Foundation.h>
@interface UserInfoModel : NSObject
@property (nonatomic, copy) NSString *money;
@end
②ResultModel類作為支付完成以後資料回撥模型
ResultModel.h
#import <Foundation/Foundation.h>
@interface ResultModel : NSObject
@property (nonatomic, copy) void(^payResultBlock)(NSString *status, NSDictionary *payDict);
+ (instancetype)sharedInstance;
@end
ResultModel.m
#import "ResultModel.h"
@implementation ResultModel
+ (instancetype)sharedInstance {
static ResultModel *resultModel;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
resultModel = [[ResultModel alloc] init];
});
return resultModel;
}
@end
③PayAndReddem類作為支付sdk入口
PayAndReddem.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "UserInfoModel.h"
@interface PayAndReddem : NSObject
+ (void)setupPayInfo:(UserInfoModel *)userInfo subClass:(UIViewController *)subCotroller payResult:(void (^)(NSString *status, NSDictionary *payDict))payResultBlock;
@end
PayAndReddem.m
#import "PayAndReddem.h"
#import "ThridViewController.h"
#import "PayModel.h"
#import "ResultModel.h"
@implementation PayAndReddem
+ (void)setupPayInfo:(UserInfoModel *)userInfo subClass:(UIViewController *)subCotroller payResult:(void (^)(NSString *status, NSDictionary *payDict))payResultBlock {
[ResultModel sharedInstance].payResultBlock = payResultBlock;
PayModel *payModel = [PayModel sharedPayInfo];
payModel.money = userInfo.money;
ThridViewController *payInputVC = [[ThridViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:payInputVC];
[subCotroller presentViewController:nav animated:YES completion:nil];
}
@end
④SecondViewController,從此處開始呼叫sdk,並將資料通過PayReddem傳入sdk。在支付完成以後,成功與否均返回此頁面
SecondViewController.m
#import "SecondViewController.h"
#import "PayAndReddem.h"
@interface SecondViewController ()
@property (nonatomic, strong) UITextField *textField;
@property (nonatomic, strong) UIButton *button;
@end
@implementation SecondViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor colorWithWhite:1 alpha:0.9];
self.navigationItem.title = @"購買商品";
[self setupSubviews];
}
- (void)setupSubviews {
self.textField = [[UITextField alloc] initWithFrame:CGRectMake((CGRectGetWidth(self.view.bounds)-200)/2, 100, 200, 30)];
self.textField.borderStyle = UITextBorderStyleNone;
self.textField.backgroundColor = [UIColor whiteColor];
self.textField.placeholder = @"請輸入支付金額(分)";
[self.textField becomeFirstResponder];
[self.view addSubview:self.textField];
self.button = [UIButton buttonWithType:UIButtonTypeCustom];
self.button.backgroundColor = [UIColor greenColor];
[self.button setTitle:@"進入支付sdk" forState:UIControlStateNormal];
[self.button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
self.button.frame = CGRectMake((CGRectGetWidth(self.view.bounds)-200)/2, 150, 200, 35);
[self.button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.button];
}
- (void)buttonClick:(UIButton *)btn {
BOOL isEmpty = [self checkTextField];
//進入支付sdk
if (isEmpty) {
[PayAndReddem setupPayInfo:[self test] subClass:self payResult:^(NSString *status, NSDictionary *payDict) {
if ([status isEqualToString:@"success"]) {
//支付成功,並返回支付成功後的相應欄位
NSLog(@"result_code=%@,result_msg=%@",payDict[@"result_code"],payDict[@"result_msg"]);
} else if ([status isEqualToString:@"fail"]) {
//支付失敗
NSLog(@"支付失敗");
}
}];
}
}
- (BOOL)checkTextField {
if (self.textField.text.length > 0) {
return YES;
} else {
NSLog(@"金額不能為空");
return NO;
}
}
//傳入支付sdk資料
- (UserInfoModel *)test {
UserInfoModel *userInfoModel = [[UserInfoModel alloc] init];
userInfoModel.money = self.textField.text;
return userInfoModel;
}
@end
相關推薦
支付寶、微信sdk支付流程模擬
今天和同事閒聊的時候,聊到對接支付寶和微信sdk的事情,聊完以後興致未盡。順便去網上搜了一下,怎樣做一款sdk,網上的教程少的可憐,能搜到的也是好壞各異,參差不齊。遂下決心,敲一篇部落格,把sdk的實現流程講解一下。給迷茫中的小白一點思路。還是那句話,一萬個讀者
HBuilder基礎上APP呼叫支付寶、微信支付(PHP)
支付寶後端程式碼: /** * @param Request $request * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View * 訂單頁面支付(支付寶支付) *
手機POS機支付能否挑戰支付寶、微信?
你能想象到,只要2個手機“碰一碰”就能收付款了嗎?在今年12月,華為與銀聯合作了,推出新的支付方式了——手機POS機,使用者無需另行開啟支付視窗,只要“碰一碰”NFC標籤,支付視窗就能自動彈出。對於商家來說,設定NFC標籤的成本顯然不高,這也能讓他們省去購置POS機等支付裝置,節省成本。 &nb
抓住支付寶、微信支付的“短板”,它成第三方支付平臺最大的黑馬
我們都知道,微信支付寶是目前為止最大的第三方支付平臺,從2004年支付寶成立以後,支付寶就依託於淘寶,作為淘寶獨立使用的第三方支付平臺,一直到2008年開始支付寶推出移動電子支付之後,支付寶才開始正式的面向第三方(非淘寶使用)。而支付寶又在2010年年底的時候跟中國銀行合作,推出了快捷支付,
支付介面呼叫(支付寶、微信)
一、支付寶支付 1、官方文件是最好的教程: ①電腦網站支付文件:https://docs.open.alipay.com/270/105899/ ②支付寶沙箱使用教程:http
iOS支付(包括支付寶、微信、銀聯)封裝
前言 最近在學習構架,感覺到構架的魅力,自己用構架思想封裝了一個支付集合,歡迎使用! 開發環境 1、xcode 8以上 2、iOS 7.0以上 支付SDK的整合 1、支付寶 參照部落格 支付寶支付整合 ,裡面很詳細這裡就不多說了。 2、微信支付 3、銀聯支付 銀聯支付要
Android常用的第三方支付(支付寶、微信、銀聯)
生成RSA私鑰 openssl>genrsa -out rsa_private_key.pem 1024 生成RSA公鑰 openssl>rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 將RSA私鑰轉換成PKCS8
仿支付寶、微信EditText金額輸入驗證
金額輸入要考慮的幾種情況: **1.首位輸入小數點的情況 2.小數點後保留2位 3.當切換小數點位置時的處理 4.不能輸入多個小數點。** 不多說, 上程式碼: public class CashierInputFilter implements I
支付寶、微信、銀聯移動支付整合
一、支付寶移動支付 業務流程: SDK整合: 解壓介面壓縮檔案(檔名是 WS_MOBILE_PAY_SDK_BASE.zip),找到 IOS 的壓縮檔案(檔名是支付寶移動支付 SDK 標準版(iOS).zip)。 匯入程式碼 步驟1
支付寶和微信APP支付 java服務端程式碼
支付寶和微信支付的接入基本只需要看官方文件就能很好的弄明白,這裡我做記錄一些我在接入是寫demo 首先需要建立一個配置管理的類: public final class ZhifubaoConfig { /** * 應用號 */ publ
支付寶和微信移動支付的個人總結
今天在看了移動支付的文件,對整個流程都有了自己的理解,在這裡記錄下來自己的總結,把裡面的邏輯都整理一遍 一、支付寶支付 先去看官方的支付文件,連結如下 1、先說前期準備,關鍵就是要生成一對公鑰和私鑰,這個看官方文件,現在官方有個自動生成工具,其實挺方便的。注意的是如
微信、企業微信、支付窗、微博SDK 四合一,JeeWx-api 1.2.2 版本釋出!
JeeWx-API 1.2.2 版本釋出,微信、企業微信、支付窗、微博SDK四合一 JEEWX-API 是第一款JAVA版微信極速SDK,同時整合企業微信SDK,支付窗SDK,微博SDK,可以快速的基於她
通過user-agent判斷使用者的請求是用QQ、微信還是支付寶
通過user-agent判斷使用者是用QQ、微信還是支付寶開啟連結或二維碼 function is_weixn_qq(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)=="
基於SDK的支付介面服務端——支付寶,微信
支付寶 準備: 1.建立應用,配置金鑰(詳見https://docs.open.alipay.com/291/105971); 2.jar包:alipay-sdk-java20170818173712.jar;commons-logging-1.1.
spring_boot_pay支付寶,微信,銀聯支付詳細代碼案例
fan target 簽名加密 china 整合 提示 業務 rom sig spring-boot-pay 支付服務:支付寶,微信,銀聯詳細代碼案例(除銀聯支付可以測試以外,支付寶和微信支付測試均需要企業認證,個人無法完成測試),項目啟動前請仔細閱讀 註意事項 。 友情
有了支付寶和微信為什麽要用聚合支付?
聚合支付 在街上 近期好多網友朋友咨詢聚合支付產品是什麽!我有支付寶跟微信了,要聚合支付有什麽用?今天這邊我們就針對這個問題做個闡述! 首先我們先來了解下什麽是聚合支付,聚合支付也稱第四方支付,它只是把支付寶、微信、銀行這些機構的資金通道做了集成,並
針對APP的後臺支付程式碼(微信和支付寶)
APP支付: 1.微信支付: 這是app支付時,一個完整的流程 1.1首先要去微信開放平臺註冊,並建立APP 1.2取得微信支付的許可權 1.3 商戶平臺有公眾號平臺和APP平臺兩種,一定要是APP平臺,可以在下面這個地方
一個二維碼支援支付寶和微信支付(上)
開發十年,就只剩下這套Java開發體系了 >>> 一個二維碼同時支援微信和支付寶掃描的原理很簡單,就是中間做了一個跳轉,判斷使用者用的是什麼瀏覽器請求的即可。 這裡首先要說清楚的是支
JS處理支付寶和微信(同步提交/非同步提交)方式
PHP交流群:294088839 Python交流群:652376983 GO交流群:874512552 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title&
React Native (IOS和Android) 支付寶和微信支付整合實戰(支付寶Android篇)
序言:React Native無論是在社群和應用程度上,在國內外是十分廣泛和普及的。而支付寶和微信在支付模組上都有或多或少的支援,雖然沒有完整的Demo,不過在我做過一個相關整合的專案後,在此我把相關的步驟和方法總結出來和大家分享,希望能夠幫助大家少走彎路,快速整合。 支付