1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
//
// KWMPayUtil.m
// iCemarose
//
// Created by HouWeiBin on 2017/6/15.
// Copyright © 2017年 kollway. All rights reserved.
//
#import "KWMPayUtil.h"
#import "KWMStringUtil.h"
@implementation KWMPayUtil
+(NSString *)payTypeString:(KWMPayType)payType{
NSString *payTypeString = @"";
switch (payType) {
case TypeNone:
payTypeString = @"请选择一种付款方式";
break;
case TypeCredit:
payTypeString = @"信用卡支付";
break;
case TypeWechatPay:
payTypeString = @"微信支付";
break;
case TypeAlipay:
payTypeString = @"支付宝支付";
break;
case TypeWebpay:
payTypeString = @"网页支付";
}
return payTypeString;
}
+(NSDictionary *)wechatPayParameters:(BUYCheckout *)checkout{
//这是测试商店的单,先用来测试
#if DEBUG
NSString *checkout_token = checkout.token;
NSString *total_price = [NSString stringWithFormat:@"%.2f",checkout.totalPrice.floatValue];
//先写test,后面改成正式的订单描述
#else
NSString *checkout_token = checkout.token;
//需要保留小数点后两位(包括小数点后的.00),以保持与后台一致,从而验证通过
NSString *total_price = [NSString stringWithFormat:@"%.2f",checkout.totalPrice.floatValue];
#endif
NSString *ip_address = @"127.0.0.1";
NSString *before_sign = [NSString stringWithFormat:@"checkout_token=%@&ip_address=%@&total_price=%@&key=%@",
checkout_token,ip_address,total_price,User_Pay_KEY];
NSString *base64String = [KWMStringUtil BASE64:before_sign];
NSString *sign = [KWMStringUtil MD5:base64String];
NSDictionary *parameters = @{
@"ip_address":ip_address,
@"checkout_token":checkout_token,
@"total_price":total_price,
@"sign":sign
};
return parameters;
}
+(NSDictionary *)aliPayParameters:(BUYCheckout *)checkout{
//这是测试商店的单,先用来测试
#if DEBUG
NSString *checkout_token = checkout.token;
NSString *total_price = [NSString stringWithFormat:@"%.2f",checkout.totalPrice.floatValue];
#else
NSString *checkout_token = checkout.token;
//需要保留小数点后两位(包括小数点后的.00),以保持与后台一致,从而验证通过
NSString *total_price = [NSString stringWithFormat:@"%.2f",checkout.totalPrice.floatValue];
#endif
NSString *before_sign = [NSString stringWithFormat:@"checkout_token=%@&total_price=%@&key=%@",
checkout_token,total_price,User_Pay_KEY];
NSString *base64String = [KWMStringUtil BASE64:before_sign];
NSString *sign = [KWMStringUtil MD5:base64String];
NSDictionary *parameters = @{
@"checkout_token":checkout_token,
@"total_price":total_price,
@"sign":sign
};
return parameters;
}
//微信支付后直接切换回到APP会调用此方法
+(NSDictionary *)payResultParameters:(BUYCheckout *)checkout tradeNo:(NSString *)tradeNo{
#if DEBUG
NSString *checkout_token = checkout.token;
#else
NSString *checkout_token = checkout.token;
#endif
NSString *out_trade_no = tradeNo?:@"";
NSString *before_sign = [NSString stringWithFormat:@"checkout_token=%@&out_trade_no=%@&key=%@",
checkout_token,out_trade_no,User_Pay_KEY];
NSString *base64String = [KWMStringUtil BASE64:before_sign];
NSString *sign = [KWMStringUtil MD5:base64String];
NSDictionary *parameters = @{
@"checkout_token":checkout_token,
@"out_trade_no":out_trade_no,
@"sign":sign
};
return parameters;
}
+(void)weChatPay:(KWMWechatPayData *)wechatData{
if(wechatData){
PayReq *request = [[PayReq alloc] init];
request.openID = wechatData.appid;
request.partnerId = wechatData.partnerid;
request.prepayId= wechatData.prepayid;
request.package = wechatData.package;
request.nonceStr= wechatData.noncestr;
request.timeStamp= (UInt32)wechatData.timestamp;
request.sign= wechatData.sign;
[WXApi sendReq:request];
}
}
+(void)aliPay:(NSString *)alipayData callback:(CompletionBlock)callback{
if(![KWMStringUtil isEmpty:alipayData]){
NSString *appScheme = @"iCemarose";
[[AlipaySDK defaultService] payOrder:alipayData fromScheme:appScheme callback:callback];
}
}
/*
|code|int|1000|正常响应|
|code|int|1001|订单检索失败,未找到相应的订单数据|
|code|int|1002|请求的总金额与订单中不一致|
|code|int|1003|货币转换失败|
|code|int|1004|服务器端未开通店铺|
|code|int|1005|支付网关参数未设置|
|code|int|1006|订单已支付完成|
|code|int|1007|签名验证失败|
|code|int|1008|订单查询失败|
|code|int|1009|订单创建失败|
|code|int|1010|必要参数缺失|
|code|int|1012|商品数量不足|
*/
+(NSString *)payErrorMessage:(BUYCheckout *)checkout errorResult:(KWMCheckoutPayResult *)errorResult{
if(!errorResult){
return @"";
}
if(errorResult.code){
switch (errorResult.code.integerValue) {
case 1000:
return @"";
case 1001:
return @"订单检索失败,未找到相应的订单数据";
case 1002:
return @"请求的总金额与订单中不一致";
case 1003:
return @"货币转换失败";
case 1004:
return @"服务器端未开通店铺";
case 1005:
return @"支付网关参数未设置";
case 1006:
return @"订单已支付完成";
case 1007:
return @"签名验证失败";
case 1008:
return @"订单查询失败";
case 1009:
return @"订单创建失败";
case 1010:
return @"必要参数缺失";
case 1012:
if(!(checkout && errorResult.variantId) ){
return @"";
}
for(BUYCartLineItem *item in checkout.lineItemsArray){
if([item.variantId isEqualToNumber:errorResult.variantId]){
NSString *message = [NSString stringWithFormat:@"商品“%@/%@”数量不足",item.title,item.variantTitle];
return message;
}
}
return @"商品数量不足";
}
}
return @"";
}
@end