-
入網簽約
-
導入支付需要的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”調用支付控件崩潰