微信支付服务器demo,集成微信支付(附带demo)

首先忽略掉申请AppKey的步骤,直接从集成开始

1、cocopods集成SDK

pod 'WechatOpenSDK'

2、添加依赖库

SystemConfiguration.framework, libz.tbd, libsqlite3.0.tbd, libc++.tbd, Security.framework, CoreTelephony.framework, CFNetwork.framework.

3、设置URL Schemes为您的APPID

15fb9798f514

image.png

4、在Info.plist里面添加白名单

LSApplicationQueriesSchemes

15fb9798f514

image.png

5、在APPdelegate里面注册APPID

/** 微信支付 */

[WXApi startLogByLevel:WXLogLevelNormal logBlock:^(NSString *log) {

NSLog(@"log : %@", log);

}];

//向微信注册,发起支付必须注册

[WXApi registerApp:@"wxb4ba3c02aa476ea1" enableMTA:YES];

6、调起支付

+ (void)jumpToBizPay {

//============================================================

// V3&V4支付流程实现

// 注意:参数配置请查看服务器端Demo

// 更新时间:2015年11月20日

//--->实际项目代码

NSString *urlString = @"https://wxpay.wxutil.com/pub_v2/app/app_pay.php?plat=ios";

NSString *url =[NSString stringWithFormat:@"%@%@", @"Base_URL",urlString];

// NSLog(@"微信支付___URL=== %@,%@", url,self.orderId);

[DCServiceTool postWithUrl:url params:@{@"orderID":@"orderId"} success:^(id _Nonnull responseObject) {

if ([[responseObject objectForKey:@"code"] intValue] == 0) {

// 调起微信支付

PayReq *req = [[PayReq alloc] init];

// id dic = [responseObject objectForKey:@"data"];

// if ([dic isKindOfClass:[NSString class]]) {

// NSString *str = [NSString stringWithFormat:@"%@",dic];

// if ([str isEqualToString:@"PAY_SUCCESS"]) {

// /** 支付成功 处理 */

// // [weakself goToOrderDetailVC];

// DCLog(@"支付成功 处理 ---");

// return ;

// }

// return ;

// }

/** 微信分配的公众账号ID -> APPID */

req.openID = [responseObject objectForKey:@"appid"];

/** 商家向财付通申请的商家id */

req.partnerId = [responseObject objectForKey:@"partnerid"];

/** 预支付订单 从服务器获取 */

req.prepayId = [responseObject objectForKey:@"prepayid"];

/** 随机串,防重发 */

req.nonceStr = [responseObject objectForKey:@"noncestr"];

/** 时间戳,防重发 */

req.timeStamp = [[responseObject objectForKey:@"timestamp"] intValue];

/** 商家根据财付通文档填写的数据和签名 */

req.package = [responseObject objectForKey:@"package_"];

/** 商家根据微信开放平台文档对数据做的签名, 可从服务器获取,也可本地生成*/

req.sign = [responseObject objectForKey:@"sign"];

//日志输出

DCLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",[responseObject objectForKey:@"appid"],req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign );

if ([WXApi isWXAppInstalled] == YES) {

BOOL sss = [WXApi sendReq:req];

if (!sss ) {

[SVProgressHUD showWithStatus:@"微信sdk错误"];

[SVProgressHUD dismissWithDelay:1.0];

}

} else {

//微信未安装

[SVProgressHUD showWithStatus:@"您没有安装微信"];

[SVProgressHUD dismissWithDelay:1.0];

}

}else {

[SVProgressHUD showWithStatus:responseObject[@"msg"]];

[SVProgressHUD dismissWithDelay:1.0];

}

} failure:^(NSError * _Nonnull error) {

}];

}

7、支付结果回调

#pragma mark - WXApiDelegate

- (void)onResp:(BaseResp *)resp {

if([resp isKindOfClass:[PayResp class]]){

//支付返回结果,实际支付结果需要去微信服务器端查询

NSString *strMsg,*strTitle = [NSString stringWithFormat:@"支付结果"];

switch (resp.errCode) {

case WXSuccess:

strMsg = @"支付结果:成功!";

NSLog(@"支付成功-PaySuccess,retcode = %d", resp.errCode);

break;

default:

strMsg = [NSString stringWithFormat:@"支付结果:失败!retcode = %d, retstr = %@", resp.errCode,resp.errStr];

NSLog(@"错误,retcode = %d, retstr = %@", resp.errCode,resp.errStr);

break;

}

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

[alert show];

}else {

}

}

- (void)onReq:(BaseReq *)req {

}

8、在appDelegate.m中整理判断回调

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {

[WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];

return YES;

}

/**

这里处理微信支付完成之后跳转回来

*/

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

/** 微信支付回调 */

if ([url.host isEqualToString:@"pay"]) {

return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];

}

return YES;

}

// NOTE: 9.0以后使用新API接口

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options {

/** 微信的支付回调 */

if ([url.host isEqualToString:@"pay"]) {

return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];

}

return YES;

}

最后附上demo,写文章不易,希望能给个star哦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值