-
入网签约
-
导入支付需要的SDK相关文件
-
配置App跳转的白名单。
LSApplicationQueriesSchemes Array并加入uppaysdk、uppaywallet、uppayx1、uppayx2、uppayx3五个item
-
添加URL Schemes
-
配置代码
- 支付控件调起
支付信息都在<tn>中,后台提供即可
"00"代表接入生产环境(正式版本需要);
"01"代表接入开发测试环境(测试版本需要);
if (tn == nil || tn.length == 0) return;
[[UPPaymentControl defaultControl] startPay:tn fromScheme:@"Demo" mode:@"00" viewController:self];
-
支付回调处理
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
[self handlePaymentResult:url];
return YES;
}- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{ [self handlePaymentResult:url]; return YES; } - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{ [self handlePaymentResult:url]; return YES; } - (void)handlePaymentResult:(NSURL *)url{ [[UPPaymentControl defaultControl] handlePaymentResult:url completeBlock:^(NSString *code, NSDictionary *data) { //结果code为成功时,先校验签名,校验成功后做后续处理 if([code isEqualToString:@"success"]) { //判断签名数据是否存在 if(data == nil){ //如果没有签名数据,建议商户app后台查询交易结果 return; } //数据从NSDictionary转换为NSString NSData *signData = [NSJSONSerialization dataWithJSONObject:data options:0 error:nil]; NSString *sign = [[NSString alloc] initWithData:signData encoding:NSUTF8StringEncoding]; //验签证书同后台验签证书 //此处的verify,商户需送去商户后台做验签 if([self verify:sign]) { //支付成功且验签成功,展示支付成功提示 }else { //验签失败,交易结果数据被篡改,商户app后台查询交易结果 } }else if([code isEqualToString:@"fail"]) { //交易失败 }else if([code isEqualToString:@"cancel"]) { //交易取消 } }]; } -(BOOL) verify:(NSString *) resultStr { //验签证书同后台验签证书 //此处的verify,商户需送去商户后台做验签 return NO; }
- 支付控件调起
-
注意事项:
- 支付金额必须大于1分钱,否则会报错
-
如果出现@“网络错误,请重试”提示
请确认是否有网络,以及是否进行过HTTP请求设置
-
出现@“-[__NSCFString
newSizeWithFont:forWidth:lineBreakMode:]: unrecognized selector sent to
instance 0x7fd99bfa3480”调用支付控件崩溃
网友评论