原创:http://blog.youkuaiyun.com/pearlhuzhu/article/details/10583957
现在主流的支付接口,一是支付宝类的,一是银联。
官方DEMO下载地址:http://download.youkuaiyun.com/detail/pearlhuzhu/6037409,包括android,wp的domo。
移动支付就是随时随地通过各种通信终端,对所消费的商品和服务进行财务支付的一种生活方式。
流程图说明:
(1)用户在客户端中点击购买商品,客户端发起订单生成请求到商户后台;
(2)商户后台收到订单生成请求后,按照《UPMP商户接入接口规范》组织并推送
订单信息至银联后台;
(3)银联后台接收订单信息并检查通过后,生成对应交易流水号(即TN),并回复
交易流水号至商户后台(应答要素:交易流水号等);
(4)商户后台接收到交易流水号,将交易流水号返回给客户端;
(5)客户端通过交易流水号(TN)调用支付控件;
(6)用户在支付控件中输入相关支付信息后,由支付控件向银联后台发起支付请求;
(7)支付成功后,银联后台将支付结果通知给商户后台;(8)银联将支付结果通知支付控件;(9)支付控件显示支付结果并将支付结果返回给客户端;
应用步骤:
- 新建工程
- 将文件:UPPayPlugin.h,UPPayPluginDelegate.h,静态库文件:libUPPayPlugin.a,拖入工程中。
- 参照demo中的UPViewController文件,添加对应的头文件,协议。注意:把.m文件改成.mm文件。
- 设置静态库路径,在 Library Seach Paths中,添加静态库的路径。具体参考demo。
- 调用方法
应用
• 新建工程
• 将文件:UPPayPlugin.h,UPPayPluginDelegate.h,静态库文件:libUPPayPlugin.a,拖入工程中。
• 参照demo中的UPViewController文件,添加对应的头文件,协议。注意:把.m文件改成.mm文件。
• 设置静态库路径,在Library Seach Paths中,添加静态库的路径。具体参考demo。
• 调用方法
[plain]view plaincopy
1 + (BOOL)startPay:(NSString *)payData sysProvide:(NSString*) sysProvide spId:(NSString*)spId mode:(NSString*)mode viewController:(UIViewController *)viewController delegate:(id<UPPayPluginDelegate>)delegate;
对应的参数,文档有详细的说明。
IOS银联支付的流程
流程图说明:
(1)用户在客户端中点击购买商品,客户端发起订单生成请求到商户后台;
(2)商户后台收到订单生成请求后,按照《UPMP 商户接入接口规范》组织并推送订单信息至银联后台;
(3)银联后台接收订单信息并检查通过后,生成对应交易流水号(即 TN),并回复交易流水号至商户后台(应答要素:交易流水号等);
(4)商户后台接收到交易流水号,将交易流水号返回给客户端;
(5)客户端通过交易流水号(TN)调用支付控件;
(6)用户在支付控件中输入相关支付信息后,由支付控件向银联后台发起支付请求;
(7)支付成功后,银联后台将支付结果通知给商户后台;
(8)银联将支付结果通知支付控件;
(9)支付控件显示支付结果并将支付结果返回给客户端;
二,银联支付集成
a) 根据商户选择的SDK版本,将sdk/inc目录和sdk/libs目录下对应版本的三个文件添加到 UPPayDemo 工程中
b) 如 果 你 选 择 的 是 UPPayPlugin 版 本 , 添 加 QuartzCore.framework 、Security.framework 到工程中;
c) 如 果 你 选 择 的 是 UPPayPluginPro 版 本 , 添 加 QuartzCore.framework 、AudioToolbox.framework, CoreAudio.framework 、 MediaPlayer.framework,AVFoundation.framework 和 Security.framework 到工程中;
d) 在工程的 Build Settings 中找到 Other Linker Flags 中添加-ObjC 宏;
三,接口说明
+ (BOOL)startPay:(NSString*)tn
mode:(NSString*)mode
viewController:(UIViewController*)viewController
delegate:(id<UPPayPluginDelegate>)delegate;
四, 调用插件
a) 在需要调用支付控件的源文件内引用头文件 UPPayPlugin.h 或 UPPayPluginPro.h(注意:如果工程的 compile source as 选项的值不是 Objective–C++,则引用此头文件的文件类型都要改为.mm)
b) 通过调用
+ (BOOL)startPay:(NSString*)tn
mode:(NSString*)mode
viewController:(UIViewController*)viewController
delegate:(id<UPPayPluginDelegate>)delegate
实现控件的调用
c) 处理支付结果
银联手机支付控件有三个支付状态返回值:success、fail、cancel,分别代表:支付成功、支付失败、用户取消支付。这三个返回状态值以字符串的形式作为回调函数参数(NSString*)result 返回。通过在工程中添加头文件“UPPayPluginDelegate.h”,在处理交易结果的界面,实现 UPPayPluginDelegate接口,根据该头文件中的回调函数:-(void)UPPayPluginResult:(NSString*)result来实现回调方法,从而可以根据支付结果的不同进行相关的处理。
《Objective-C的单例模式(singleton)》
+(instantClass *)sharedClient {
static instantClass *_sharedClient = nil;
static dispatch_once_tonceToken;
dispatch_once(&onceToken, ^{
_sharedClient= [[instantClass alloc] init];
});
return _sharedClient;
}