<一>、添加微信sdk
把微信sdk下载下来,然后会报错,这时需要去Target中的Link Binary With Libraries手动添加
首先点击 “+”,搜索不出来就可以去点击 Add Other,出现文件目录页面,正常情况这里去通过Finder也是找不到老的libsqlite3.dylib文件的,因为这个文件是隐藏掉的。所以需要按
快捷键 CMD+Shift+G (Go to the folder),输入/usr/lib后,进入隐藏的界面,然后添加你需要的 *.dylib,如libsqlite3.dylib文件
<二>、微信、支付宝添加白名单
去Target中的info,点击URL Types中添加Identifier,测试时可用weixin,URL Schemes可用payDemo(支付宝),wxb4ba3c02aa476ea1(微信),支付宝的可以自己定义,微信不行。
<三>、支付宝支付
//支付宝支付需要在info中的url types中自己随便写一个scheme,跟下面的scheme保持一致即可,不用去支付宝注册app,payOrder一般由后台返回,是一些订单信息,时间之类的东西,AppDelegate中需要对支付宝的回调进行一些处理,支付宝支付不需要判断是否安装支付宝,如果有安装支付宝,就跳入支付宝,没有自动会跳入支付宝网页版
NSString *payOrder=@"";
NSString *scheme=@"payDemo";
[[AlipaySDK defaultService]payOrder:payOrder fromScheme:scheme callback:^(NSDictionary *resultDic) {
//支付结果回调
}];
payOrder的格式sign=\"GCsTIzjjES4Uky2hrW22G6voqogk5DgjnrrSLzysREPOoVE6TzKztU%2FEDDYdH9UCcbNE9fiT60cYWidjlq8JYzKLMVlkSV4ovIE5j%2Bl75bDO8yQFV5Keqk43JRy7G7oYB0tPe4GQlbtvIx1yRE9C8I971qxZwnSWpAUBXGUjAY8%3D\"&sign_type=\"RSA\"&_input_charset=\"UTF-8\"&subject=\"2015年12月9日---3 10g\"¬ify_url=\"http://113.108.232.136/alipay/notify/mobile/securitypay/pay\"&body=\"2015年12月9日---3 10g\"&payment_type=\"1\"&out_trade_no=\"M1714510263976408356\"&partner=\"2088711437104563\"&service=\"mobile.securitypay.pay\"&total_fee=\"0.01\"&seller_id=\"zhifubao2@biostime.com.cn\"
<四>、微信支付
// 微信支付需要去微信注册一个appID,然后在info的url types中加入这些信息,微信支付没有网页版,所以支付之前需要判断有没有安装微信。
// 微信支付时,首先在AppDelegate中注册微信,然后,支付的数据一般从后台返回,后台返回的partnerId与工程中的appID必须是当初注册时的一套,(本工程为了能顺利的支付成功,使用的是微信demo所使用的一套id)否则跳转微信支付,会出现只有一个确定按钮的界面,不能支付成功
// 微信引入最新demo时会报错,需要引入libsqlite3.dylib、libc++.1.dylib这两个库即可
if(![WXApi isWXAppInstalled]) // 判断 用户是否安装微信
{
//没有安装微信
}
else{
if ( response != nil) {
//从后台返回所有数据
if(dict != nil){
NSMutableString *retcode = [dict objectForKey:@"retcode"];
if (retcode.intValue == 0){
NSMutableString *stamp = [dict objectForKey:@"timestamp"];
//调起微信支付(一般在这里组织好数据,然后传给微信)
PayReq* req = [[PayReq alloc] init];
req.partnerId = [dict objectForKey:@"partnerid"];
req.prepayId = [dict objectForKey:@"prepayid"];
req.nonceStr = [dict objectForKey:@"noncestr"];
req.timeStamp = stamp.intValue;
req.package = [dict objectForKey:@"package"];
req.sign = [dict objectForKey:@"sign"];
[WXApi sendReq:req];
}
}
}
}
<五>、微信分享
1、微信好友分享文字(仅文字)
SendMessageToWXReq* req = [[SendMessageToWXReq alloc] init];
req.text = @"分享好友string的内容";
req.bText = YES;
req.scene = WXSceneSession;
[WXApi sendReq:req];
2、微信好友分享图片(仅图片,文字设置了也没用)
WXMediaMessage *message = [WXMediaMessage message];
[message setThumbImage:[self setThumbImage:[UIImage imageNamed:@"1.jpg"]]];//消息缩略图
WXImageObject *ext = [WXImageObject object];
ext.imageData = UIImagePNGRepresentation([UIImage imageNamed:@"1.jpg"]);//图片真实数据内容
message.mediaObject = ext;
message.title = @"分享图片";//标题
message.description = @"分享朋友图片内容";//内容
SendMessageToWXReq* req = [[SendMessageToWXReq alloc] init];
req = [[SendMessageToWXReq alloc] init];
req.bText = NO;
req.message = message;
req.scene = WXSceneSession;
[WXApi sendReq:req];
3、分享朋友圈string
SendMessageToWXReq* req = [[SendMessageToWXReq alloc] init];
req.text = @"分享朋友圈string的内容";
req.bText = YES;//文本消息
req.scene = WXSceneTimeline;//发送的目标场景
[WXApi sendReq:req];
4、微信朋友圈分享图片
UIImage *shareImage=[UIImage imageNamed:@"1.jpg"];
WXMediaMessage *message = [WXMediaMessage message];
[message setThumbImage:[self setThumbImage:[UIImage imageNamed:@"1.jpg"]]];//消息缩略图
WXImageObject *ext = [WXImageObject object];
ext.imageData = UIImagePNGRepresentation(shareImage);
message.mediaObject = ext;
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.bText = NO;//媒体消息
req.message = message;//发送消息的多媒体内容
req.scene = WXSceneTimeline;//发送的目标场景
[WXApi sendReq:req];
5、微信好友分享图文(可以设置标题跟内容,url链接必须加上)
WXMediaMessage *message = [WXMediaMessage message];
message.title = @"微信好友分享标题"; //标题
message.description = @"微信好友分享内容"; //描述
[message setThumbImage:[self setThumbImage:[UIImage imageNamed:@"1.jpg"]]];//消息缩略图
WXWebpageObject *ext = [WXWebpageObject object];
ext.webpageUrl = @"www.baidu.com"; //url链接
message.mediaObject = ext;
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.message = message;
req.bText = NO;
req.scene = WXSceneSession; //分享类型
[WXApi sendReq:req]; //发送
6、微信朋友圈分享图文(只能设置标题,内容设置,分享看不到,必须设置url链接)
WXMediaMessage *message = [WXMediaMessage message];
message.title = @"微信朋友圈分享标题"; //标题
[message setThumbImage:[self setThumbImage:[UIImage imageNamed:@"1.jpg"]]];//消息缩略图
WXWebpageObject *ext = [WXWebpageObject object];
ext.webpageUrl = @"www.baidu.com"; //url链接
message.mediaObject = ext;
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.message = message;
req.bText = NO;
req.scene = WXSceneTimeline; //分享类型
[WXApi sendReq:req]; //发送
//缩略图
- (UIImage *)setThumbImage:(UIImage *)image
{
if (image) {
CGFloat width = 50;
CGFloat height = image.size.height * 50 / image.size.width;
UIGraphicsBeginImageContext(CGSizeMake(width, height));
[image drawInRect:CGRectMake(0, 0, width, height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
return nil;
}