最近的一个项目涉及到付款。 先说微信支付。 相信大家对于微信开发者应用和APP应用都非常熟悉。 从设计到支付,还需要申请支付功能。 只需按照微信要求提供相关材料即可。 ,然后等待审核结果。
微信支付流程及注意事项:
1.需要导入的类库
1.导入微信SDK
只需将微信SDK拉入项目即可。 如果你使用友盟等其他第三方,可以忽略,因为友盟已经包含了微信支付所需的相关文件,如下图。
2.导入需要的类库:根据微信开发文档
。
。
。
libz。
.0。
。
。
// 微信官方库
。A
2、注意事项
1. 设置
2.添加微信白名单
如果APP只涉及支付,不涉及第三方登录和分享,不要忘记填写这两项
3.需要更改的文件
1..小时
当然还有导入#“.h”
方法中初始化微信支付
[ :@"您已注册微信开发者平台"];
在以下方法中回调:
- (BOOL):( *) :( *)url {
[:网址:[]];
- (BOOL):( *) :( *)url :( *) :(id) {
[:网址:[]];
#标记-
-(void):( *)resp {
if ([resp :[ ]]) {
*=(*)分别; // 微信终端返回给第三方的支付结果结构体
(.) {
案件:
{// 支付成功,发送消息到后台
(@“支付成功”);
[[ ] :@"" :nil :nil];
;
案件:
{ //签名错误、未注册、项目设置不正确、注册与设置不匹配、其他异常等
[ :@“支付失败”];
(@“支付失败”);
;
案件:
{ //用户点击取消并返回
(@“取消付款”);
[ :@"取消付款"];
;
案件:
{ //发送失败
(@“发送失败”);
[ :@“发送失败”];
;
案件:
{ //微信不支持
(@"微信不支持");
[ :@"微信不支持"];
;
案件:
{ //授权失败
(@“授权失败”);
[ :@“授权失败”];
;
:
;
2. 在支付页面
导入#".h"、#".h",注意代理
调用微信支付时,所需参数由服务器提供。
* = [[ ]初始化];
//商户id
。 = ;
。 = 自我。[@""];
//订单号
。 = 自我。[@""];
//扩展字段(官方文档:暂时填写固定值)
。 =@“签名=”;
//随机字符串
。 = 自我。[@""];
// 时间戳
。 = [自我。[@""] ];
//
//sign参数(很常见的问题:微信调用支付时,只会出现确认按钮,点击确认按钮直接返回app,这个问题100%是sign参数造成的)
//参数为:,,,固定值Sign=,预付款随机数(与上面获取的预付款订单随机数相同),付款时间(秒)
// .sign = self.[@"sign"];
.sign = self.[@"sign"];
(@"符号是%@",.sign);
//调用微信支付
[:];
无论是否支付,都会向服务器返回一条消息,具体可以在.m微信代理方法中查看。
回调中的值列表:
名称描述解决方案
成功
显示成功页面
-1
错误
可能原因:签名错误、未注册、项目设置不正确、注册与设置不匹配、其他异常等。
-2
用户取消
无需处理。 场景:用户未付款,点击取消,返回APP。
4、支付流程分析
商户系统与微信支付系统主要交互指令:
第一步:用户在商户APP中选择商品,提交订单,选择微信支付。
第二步:商户后台收到用户的支付订单,调用微信支付统一下单接口。 参见【统一订单API】。
第三步:统一点餐界面恢复正常,根据签名规范重新生成签名,然后将数据传输给APP。 参与签名的字段名称为,,,,,。 注:数值格式为Sign=
第四步:商户APP激活微信支付。 api请参考本章【App开发步骤说明】
第五步:商户后台收到支付通知。 API请参考【支付结果通知API】
第六步:在商户后台查看支付结果。 ,API请参考【查询订单API】
交互顺序图