您的位置:首页 > 移动开发 > 微信开发

集成微信支付详细步骤及说明——解决点击微信支付只有一个确定按钮的情况

2015-12-07 19:37 706 查看



集成微信支付详细步骤及说明——解决点击微信支付只有一个确定按钮的情况

最近做了微信支付的功能,有比较坑的地方,在这里写出来和大家分享下,避免大家多走弯路,浪费时间。

本文详细介绍了微信支付的每一步,并且可以解决点击跳转到微信客户端只有一个确定按钮的情况,请仔细往下看吧

注:来看“解决点击微信支付只有一个确定按钮的情况”的同学直接看最下面,(四)即可解决该情况,若还未解决,欢迎加群

(一)准备工作

    1、首先要去微信的开放平台(http://open.weixin.qq.com)进行开发者账号的注册

    2、在开发者账号里创建一个APP应用,然后填写必填信息提交审核

    3、进入APP应用,在接口信息中,进行申请“获得微信支付能力”的功能,期间会提交相关的公司营业信息证明等

说明:(1)说实话,不是我吐槽,他这个审核也太慢了

           (2)以上3步有的公司已经给弄好了,码农们直接向上级要所需的参数就可以了,包括:商户号、商户密钥、AppID

一般第一步不用看啦 ,那么开始第二步  >_<
(二)导入相应的文件,配置环境

    微信官方文档一份:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417694084&token=36432ad73d9973c2604798c8d42f5b4c84b411ed&lang=zh_CN

>>>>>>>>>>>先看1、2、下面说明<<<<<<<<<<<

1、首先到微信开放平台——>登录——>资源中心——>资源下载

2、step1:在你的工程里面,建议新建一个文件夹“微信支付”,其下新建两个子文件夹:一个WeiXinSDK,一个WeiXinFiles

    step2:把解压之后的文件全放进<WeiXinSDK>里面

    step3:把我demo里面集成的微信支付的文件放在<WeiXinFiles>里面

>>>>>>>>>>>>>>>重要说明<<<<<<<<<<<<<<<<<<

可以省略1、2、两步,直接把demo里面有一个<微信支付>的文件夹拖到你工程的根目录即可,如果你那么做了,那么配置路径可以直接写此路径:$(SRCROOT)/你的项目工程名/微信支付/WeixinSDK
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3、在你的工程文件中选择Build Setting,在Search Paths中添加 libWeChatSDK.a ,WXApi.h,WXApiObject.h 三个文件所在位置

(1)选择Build Setting —> 输入search —>找到Search Paths
(2)配置Header这一项的路径,你的微信SDK存放在什么文件夹就写哪个文件夹的路径,一般为:$(SRCROOT)/你的项目工程名/微信支付/WeixinSDK

【路径这个比较爱出错,如果你配置出了问题,欢迎加群:171907129,本人会耐心解答的】

4、在TARGETS下,选择info,在URLTypes里面添加一项



>>>>>>SDK包里的重要说明<<<<<<<

1、iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。

受此影响,当你的应用在iOS 9中需要使用微信SDK的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码:

<key>LSApplicationQueriesSchemes</key>

<array>

    <string>weixin</string>

</array>

<key>NSAppTransportSecurity</key>

<dict>

    <key>NSAllowsArbitraryLoads</key>

    <true/>

</dict>



或者配置白名单域名pingma.qq.com

2、开发者需要在工程中链接上 CoreTelephony.framework、sqlib3.tbb、libz.tbd、libc++.tbd
3、解决bitcode编译不过问题,设置bit code为NO

4、AFNetworking也有用到,如果有不用重复导入

(三)开始写代码

1、在APPdelegate.h中导入头文件,遵守微信的delegate
#import "WXApi.h"

@interface AppDelegate : UIResponder <WXApiDelegate>


    
2、在didFinishLaunchingWithOptions:方法中注册你的appId;

//注册微信appId
[WXApi registerApp:@"填写你的appId"]


3、openURL:方法

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

if(url != nil && [[url host] isEqualToString:@"pay"]){
//微信支付
NSLog(@"open:微信支付");
return [WXApi handleOpenURL:url delegate:self];
}
else{
//其他
return YES;
}
}


4、handleOpenURL:方法

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
NSLog(@"1url = %@   [url host] = %@",url,[url host]);

if(url != nil && [[url host] isEqualToString:@"pay"]){
//微信支付
NSLog(@"handle:微信支付");
return [WXApi handleOpenURL:url delegate:self];
}
else{
//其他
return YES;
}
}


5、实现WXApiDelegate协议的两个方法(demo中含详细代码及说明)
-(void)onReq:(BaseReq *)req{

}

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

}


(四)>>>>>>>>>>>>>需要你修改的信息<<<<<<<<<<<<<<<<
>>> 打开LVWxPay.m文件
1、应用APPID appid = @"填写你的appId";

2、微信支付商户号 mch_id = @"填写你的商户号";

3、支付结果异步通知的网站 notify_url =@"填写通知的网址”;

4、商户密钥 partner = @"填写你的商户密钥";

5、request.sign = [md5 createMD5SingForPay:@"填写你的appId" partnerid:request.partnerId prepayid:r
4000
equest.prepayId package:request.package noncestr:request.nonceStr timestamp:request.timeStamp];

>>> 打开DataMD5.m文件

1、添加商户密钥key字段
    [contentString appendFormat:@"key=%@", @"填写你的商户密钥"];

>>>>>>【注意】:除了上面所写参数外,其他参数不需要修改,也不要修改,否则可能引起签名错误 <<<<<<<

那么做完上面的工作之后,我们就可以愉快的支付啦.......
//>>>>>>>>>>>>>微信支付<<<<<<<<<<<<<<<<

1、在你需要去支付这个功能的文件里面,导入头文件

    #import "LVWxPay.h"

2、在你点击去微信支付的时候实现下面方法(详细说明请看demo)
[LVWxPay WXPayWithbody:productDes andtrade_no:trade_no andPrice:total_fee];

本人是一名码农女,最近刚开通的博客,想和大家分享自己的经验,也在向大神们学习,如果对以上内容有什么疑问或者想要相互交流的,欢迎进群:171907129交流学习;

另外说明:本文涉及到的demo我放在群共享里面,有需要的加下群去拿吧(因为刚开通,不知道把文件添加到哪里),陆续还会在群共享里面添加其他资料,欢迎下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  支付 微信 集成