// // 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