美文网首页
微信支付

微信支付

作者: 贺乾龙 | 来源:发表于2016-05-04 14:31 被阅读316次

开发步骤

1:去微信开放平台注册应用

https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN&token=2c0fee9c43e1eb8f9febcc7cb73abf598e2d4011

创建移动应用并成功之后会收到腾讯发来的邮件


通过邮件我们能获得重要的参数:

(1):AppID

(2):微信支付商户号

(4):前往商户平台完成入驻

(4):API秘钥(自己设置即可,注意一定要32位字母加数字的组合)记得保存好秘钥,以后要使用


有了这些参数后,我们就可以开发自己的项目了.

接下来, 我们就新建一个微信工程吧.

创建好工程以后呢, 我们去微信平台下载sdk

链接:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5#

下载好以后呢, 我们就开始集成SDK了


把左边的SDK拉到工程里面哦.

大家会看到文件夹里面有集成SDK的步骤.


第一步: 在info.plist添加如下代码


第二步:

添加需要的框架和依赖库 (ps: 官方文档没让添加libc++.tbd, 这点也是工程报错的时候发现的...)


剩下的事情, 我们只需要按照官方文档来做就行了, 亲们.

我们还回到上个页面.

微信:APPID:wx920fde9f97d60569


1、项目设置APPID

商户在微信开放平台申请开发APP应用后,微信开放平台会生成APP的唯一标识APPID。在Xcode中打开项目,设置项目属性中的URL Schemes为您的APPID。

这个我们按照文档做一下就可以了.


2、注册APPID

商户APP工程中引入微信lib库和头文件,调用API前,需要先向微信注册您的APPID,代码如下:

[WXApi registerApp:@"wxd930ea5d5a258f4f];

3、调起支付

商户服务器生成支付订单,先调用【统一下单API】生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付。以下是调起微信支付的关键代码:

现在我们只需要在控制器上添加一个button, 名字改成微信支付就可以了

button事件:

-(void)WXPay{

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

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

request.partnerId = @"1220277201";

/** 预支付订单 */

request.prepayId= @"82010380001603250865be9c4c063c30";

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

request.package = @"Sign=WXPay";

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

request.nonceStr= @"lUu5qloVJV7rrJlr";

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

request.timeStamp= 1458893985;

/** 商家根据微信开放平台文档对数据做的签名 */

request.sign= @"b640c1a4565b476db096f4d34b8a9e71960b0123";

/*! @brief 发送请求到微信,等待微信返回onResp

*

* 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持以下类型

* SendAuthReq、SendMessageToWXReq、PayReq等。

* @param req 具体的发送请求,在调用函数后,请自己释放。

* @return 成功返回YES,失败返回NO。

*/

[WXApi sendReq: request];

}

APPdelegate实现

@interface AppDelegate ()<WXApiDelegate>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

[WXApi registerApp:@"wx920fde9f97d60569"];

}

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

/*! @brief 处理微信通过URL启动App时传递的数据

*

* 需要在 application:openURL:sourceApplication:annotation:或者application:handleOpenURL中调用。

* @param url 微信启动第三方应用时传递过来的URL

* @param delegate  WXApiDelegate对象,用来接收微信触发的消息。

* @return 成功返回YES,失败返回NO。

*/

return [WXApi handleOpenURL:url delegate:self];

}

/*! @brief 发送一个sendReq后,收到微信的回应

*

* 收到一个来自微信的处理结果。调用一次sendReq后会收到onResp。

* 可能收到的处理结果有SendMessageToWXResp、SendAuthResp等。

* @param resp具体的回应内容,是自动释放的

*/

- (void)onResp:(BaseResp *)resp

{

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

NSString *strMsg = [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;

}

}

相关文章

网友评论

      本文标题:微信支付

      本文链接:https://www.haomeiwen.com/subject/jnghrttx.html