微信开发-微信支付

微信的开发文档非常清晰明了,所以一些简单的东西咱们就简单说了,这就进入正文。
准备阶段:

a. 集成SDK 包括libWeChatSDK.a WXApi.h WXApiObject.h 三个文件

b. SystemConfiguration.framework libz.dylib libsqlite3.0.dylib libc++.dylib (Security.framework CoreTelephony.framework UIKit.framework Foundation.framework)

c. TARGETS 一栏, 在 “info” 标签栏的 “URL type” 添加 “URL scheme” 写APP_ID

开发阶段:
a. 首先导入#import “WXApi.h”, 继承WXApiDelegate协议, 向微信注册应用[WXApi registerApp:APP_ID_WECHAT withDescription:@“my_demo”], 重写两个方法application:openURL:sourceApplication:annotation: 和application:handleOpenURL:
b. 然后实现两个WXApiDelegate协议的方法。这里是重点。因为咱们自己的应用(下文称作第三方应用)和微信交流就在这里了。那两个方法呢, 下面细说:
//**因为做的是微信支付, 所以在讲这两个方法之前, 我们先了解一下支付的流程**//
步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。
步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。
步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay
重点是这里, 步骤2和3:
这里的签名其实就是一个[第三方向微信终端发起支付的消息结构体], 也就是类PayReq. 一句话:调起支付,也就是第三方应用向微信发起一个请求。这个请求和向微信分享文本、照片、链接、音乐、视频一样都是继承自[请求基类]BaseReq。
这个支付请求有如下几个属性:
partnerId; 商家向财付通申请的商家id
prepayId; 预支付订单
nonceStr; 随机串,防重发
timeStamp; 时间戳,防重发
package; 商家根据财付通文档填写的数据和签名
sign; 商家根据微信开放平台文档对数据做的签名
步骤4:商户APP调起微信支付。
[WXApi sendReq:payRequest];
步骤5:商户后台接收支付通知。
onResp:
步骤6:商户后台查询支付结果。

//**==========================================================//

回来继续说两个非常重要的协议方法

第一个: -(void) onResp:(BaseResp *)resp;
这个方法是第三方应用发送一个sendReq(步骤4)后, 收到微信的回应(步骤5)。 这里resp就是我们收到的回应。回应有很多中, 可能是我们向微信分享了图片、文字等, 也有可能是我们发起了支付。所以这里需要判断一下, 如果resp是类PayResp的对象([resp isKindOfClass:[PayResp class]]),说明是返回了一个支付结果。 这时候我们就要判断一下是否支付成功了。resp有一个属性errCode(BaseResp的属性), 它的值是一个枚举WXErrCode. 如果值是WXSuccess则表示支付成功,不是的话就是支付失败。
注: PayResp 是微信终端返回给第三方的关于支付结果的结构体。它继承自[回应基类]BaseResp.
第二个: -(void) onReq:(BaseReq *)req;
这个方法是收到一个来自微信的请求,第三方应用程序处理完后调用sendResp向微信发送结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值