微信支付回调页面怎么写 - android微信支付回调接口怎么写

来源:趣味经验馆 2.83W
1.android 微信支付回调接口怎么写

之前搞微信支付一直不能够回调支付结果的回调页面,现在来说一下怎么成功回调页面

微信支付回调页面怎么写 android微信支付回调接口怎么写

参照文档:调起支付的代码:

[java] view plain copy

private void sendPayReq(String appid, String partnerid, String prepayid, String packageValue, String noncestr, int timestamp, String sign) {

//微信注册APPID

IWXAPI api = WXAPIFactory.createWXAPI(this,null);

api.registerApp(appid);

PayReq request = new PayReq();

request.appId = appid;

request.partnerId = partnerid;

request.prepayId = prep

2.用urlscheme打开微信支付,回调怎么做

微信支付的回调首先,支付回调API的方法,这个方法中完全是按照官方文档写的,自己基本上不需要操作- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *):(id)annotation{//如果极简开发包不可用,会跳转支付宝钱包进行支付,需要将支付宝钱包的支付结果回传给开发包if ([url.host isEqualToString:@"safepay"]) {[[AlipaySDK defaultService] :url standbyCallback:^(NSDictionary *resultDic) {//【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】}[[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {//【由于在跳转支付宝客户端支付的过程中,商户app在后台很可能被系统kill了,所以pay接口的callback就会失效,请商户对standbyCallback返回的回调结果进行处理,就是在这个方法里面处理跟callback一样的逻辑】}];}if ([sourceApplication isEqualToString:@"com.tencent.xin"]) {//微信支付回调return [WXApi handleOpenURL:url delegate:self];}//跳转处理BOOL result = [UMSocialSnsService handleOpenURL:url];if (result == FALSE) {//调用其他SDK,例如支付宝SDK等}return result;}最后微信会调用下面这个方法,我是在这个方法中做的操作,由于这个方法是在AppDelegate中,如果在这里跳转到自己指定的页面,有些困难,于是就在这个方法中发通知到调起支付的页面,再进行页面跳转操作。

//回调方法-(void) onResp:(BaseResp*)resp{NSString *strMsg = [NSString stringWithFormat:@"errcode:%d", resp.errCode];NSString *strTitle;if([resp isKindOfClass:[SendMessageToWXResp class]]){strTitle = @"发送媒体消息结果";}if([resp isKindOfClass:[PayResp class]]){//支付返回结果,实际支付结果需要去微信服务器端查询strTitle = [NSString stringWithFormat:@"支付结果"];switch (resp.errCode) {case WXSuccess:{strMsg = @"恭喜您,支付成功!";[MYNotificationCenter postNotificationName:@"" object:nil userInfo:@{@"status":@"success"}];break;}case WXErrCodeUserCancel:{strMsg = @"已取消支付!";[MYNotificationCenter postNotificationName:@"" object:nil userInfo:@{@"status":@"cancle"}];break;}default:{strMsg = [NSString stringWithFormat:@"支付失败 !"];[MYNotificationCenter postNotificationName:@"" object:nil userInfo:@{@"status":@"cancle"}];break;}}UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];[alert show];}}由于我们的取消和失败,2种状态的处理结果都是一样的,所以就用了相同的通知。由于在调起支付页面,在调起前就已经注册了通知,现在支付完后,就可以收到支付状态的通知了。

下面就很简单了吧最后在说一下,由于我们的付款性质不一样,所以就遇到了同样的支付成功状态,由于不同的支付类型要跳转的页面也是不同的,这就要求在AppDelegate中的那个处理方法中识别出,不同的支付类型,(如充值,购物等)但是这个方法是微信api回调的方法,它只返回成功,取消,失败等状态。那就只能是支付前做个识别标示,但是由于支付跳到api了,脱离了应用,这个识别标示又无法直接传过来。

我想的方法就是保存一个支付标示:[[NSUserDefaults standardUserDefaults] setObject:@"CHONGZHI" forKey:@"PAYTYPE"];在每个类型的支付调起方法中,保存一下不同的key,然后再那个-(void) onResp:(BaseResp*)resp。

热门标签