微信支付、分享、支付宝支付

<一>、添加微信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(微信),支付宝的可以自己定义,微信不行。

微信支付、分享、支付宝支付_第1张图片

<三>、支付宝支付

//支付宝支付需要在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=\"[email protected]\"


<四>、微信支付

//    微信支付需要去微信注册一个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;

}

你可能感兴趣的:(微信支付、分享、支付宝支付)