IOS-发起微信支付方法
来源:互联网 发布:cnc角度头编程 编辑:程序博客网 时间:2024/06/05 09:47
WXPay+MD5.h
//// NSObject+MD5.h// NEWDLD//// Created by zz on 16/7/28.// Copyright © 2016年 dld. All rights reserved.//#import <Foundation/Foundation.h>#import "WXApi.h"@interface MD5 : NSObject+ (NSString *)getMd5_32Bit_String:(NSString *)srcString;//创建发起支付时的sign签名+(NSString *)createMD5SingForPayWithAppID:(PayReq *)req;@end
WXPay+MD5.m
//// NSObject+MD5.m// NEWDLD//// Created by zz on 16/7/28.// Copyright © 2016年 dld. All rights reserved.//#import "WXPay+MD5.h"#import <CommonCrypto/CommonDigest.h>@implementation MD5+ (NSString *)getMd5_32Bit_String:(NSString *)srcString{ const char *cStr = [srcString UTF8String]; unsigned char digest[CC_MD5_DIGEST_LENGTH]; CC_MD5( cStr, strlen(cStr), digest ); NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) [result appendFormat:@"%02x", digest[i]]; return result;}//创建发起支付时的sign签名+(NSString *)createMD5SingForPayWithAppID:(PayReq *)req{ NSString *parter_key = @"dld123******************"; NSMutableDictionary *signParams = [NSMutableDictionary dictionary]; [signParams setObject:req.openID forKey:@"appid"];//微信appid [signParams setObject:req.nonceStr forKey:@"noncestr"];//随机字符串 [signParams setObject:req.package forKey:@"package"];//扩展字段 参数为 Sign=WXPay [signParams setObject:req.partnerId forKey:@"partnerid"];//商户账号 [signParams setObject:req.prepayId forKey:@"prepayid"];//此处为统一下单接口返回的预支付订单号 [signParams setObject:[NSString stringWithFormat:@"%ld",req.timeStamp] forKey:@"timestamp"];//时间戳 NSMutableString *contentString =[NSMutableString string]; NSArray *keys = [signParams allKeys]; //按字母顺序排序 NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { return [obj1 compare:obj2 options:NSNumericSearch]; }]; //拼接字符串 for (NSString *categoryId in sortedArray) { if ( ![[signParams objectForKey:categoryId] isEqualToString:@""] && ![[signParams objectForKey:categoryId] isEqualToString:@"sign"] && ![[signParams objectForKey:categoryId] isEqualToString:@"key"] ) { [contentString appendFormat:@"%@=%@&", categoryId, [signParams objectForKey:categoryId]]; } } //添加商户密钥key字段 API 密钥 [contentString appendFormat:@"key=%@", parter_key]; NSString *result = [MD5 getMd5_32Bit_String:contentString];//md5加密 return result;}@end
发起支付
PayReq *req = [[PayReq alloc]init]; req.openID = [[NSString alloc]initWithFormat:@"%@",payUrl[@"appid"]]; req.partnerId = payUrl[@"partnerid"]; req.prepayId = payUrl[@"prepayid"]; req.nonceStr = payUrl[@"noncestr"]; req.timeStamp = (UInt32)[payUrl[@"timestamp"]integerValue]; req.package = @"Sign=WXPay"; req.sign = [MD5 createMD5SingForPayWithAppID:req];//payUrl[@"sign"]; BOOL flag = [WXApi sendReq:req];
0 0
- IOS-发起微信支付方法
- js 调用 oc 方法来发起微信支付
- Payment:微信支付发起支付请求文档
- 微信公众号发起微信支付 c#
- Android webview 里面发起的微信支付
- iOS微信支付
- IOS:微信支付
- iOS微信支付
- IOS-微信支付
- ios -- 微信 支付
- 微信支付iOS
- iOS 微信支付
- iOS微信支付
- iOS--微信支付
- iOS 微信支付
- ios微信支付
- iOS 微信支付
- iOS微信支付
- spring中IOC和AOP原理分析
- Unity5的AssetBundle
- ipv4-only网络环境下访问ipv6站点的三种方式
- 手动设置jdbctemplate的一种方法
- PAT L3-006 迎风一刀斩 计算几何
- IOS-发起微信支付方法
- 程序员资料,附下载地址,持续更新中!
- Github上Stars最多的53个深度学习项目
- BZOJ2708 [Violet 1]木偶
- Windows 消息机制浅析
- 【完整的App项目】颖火虫笔记
- HDU 2602 Bone Collector (01背包)
- jdbctemplate的读写clob
- 概率图模型(02)下: 贝叶斯网两等价观点(条件独立和因子分解)