关于ios支付(阿里,微信)
2015-01-26 14:47
190 查看
1,阿里支付
阿里支付的文档写的很清楚,对于一些参数应该没有问题
关注的应该是有无客户端走的回调方法
装了客户端回调
AppDelegate
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString
*)sourceApplication annotation:(id)annotation
{
if ([url.host
isEqualToString:@"safepay"]) {
[[AlipaySDK
defaultService]
processOrderWithPaymentResult:url
standbyCallback:^(NSDictionary *resultDic) {
NSString * query = [[url
query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
AlixPayResult *result = [[AlixPayResult
alloc] initWithString:query];
if (result.statusCode ==
9000) {
id<DataVerifier> verifier =
CreateRSADataVerifier([RPDataShare
sharedService].publicKey);
if ([verifier verifyString:result.resultString
withSign:result.signString]){
//交易成功
}else {
//交易失败
}
}else
if (result.statusCode ==
4000){
//订单已支付
}else
if (result.statusCode ==
6001){
//取消支付
}
}];
}else
if ([url.host
isEqualToString:@"pay"]) {
return [WXApi
handleOpenURL:url delegate:self];
}
}
web端支付
+(void)initAlixPayOrder:(AliPayModel *)aliPayObj
{
[RPDataShare
sharedService].publicKey = aliPayObj.publicKey;
[RPDataShare
sharedService].privateKey = aliPayObj.privateKey;
aliPayObj.notifyURL =
@"";
aliPayObj.service =
@"";
aliPayObj.paymentType =
@"";
aliPayObj.inputCharset =
@"";
aliPayObj.itBPay =
@"";
aliPayObj.showUrl =
@"";
NSString *appScheme =
@"";
NSString *orderSpec = [aliPayObj
description];
id<DataSigner> signer =
CreateRSADataSigner(aliPayObj.privateKey);
NSString *signedString = [signer
signString:orderSpec];
NSString *orderString =
nil;
if (signedString !=
nil)
{
orderString = [NSString
stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
orderSpec, signedString,
@"RSA"];
[[AlipaySDK
defaultService] payOrder:orderString
fromScheme:appScheme
callback:^(NSDictionary *resultDic) {
DLog(@"reslut = %@",resultDic);
if ([[resultDic objectForKey:@"resultStatus"]integerValue]==6001) {
//取消付款
}else
if ([[resultDic objectForKey:@"resultStatus"]integerValue]==9000){
//交易成功
}
}else
if ([[resultDic objectForKey:@"resultStatus"]integerValue] ==
4000){
//订单已支付
}
}];
}
}
2,微信支付
申请开通微信支付后财付通会把一些参数以邮件形式发给你:商户号(PartnerID)、初始密钥(PartnerKey),同时会提醒你去财付通企业版修改32位的密钥,修改后对应的PartnerKey也要修改,微信的支付密钥要自己发邮件去申请,反正我们是这么弄来的
接下来就是生成package和签名,生成package注意access token的时长和次数限制
签名微信分app签名和后台签名,拿到签名生成调微信接口生成预支付订单id
拿预支付订单id调微信支付
微信注意的就是刚开的几个参数要邮件去拿
阿里支付的文档写的很清楚,对于一些参数应该没有问题
关注的应该是有无客户端走的回调方法
装了客户端回调
AppDelegate
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString
*)sourceApplication annotation:(id)annotation
{
if ([url.host
isEqualToString:@"safepay"]) {
[[AlipaySDK
defaultService]
processOrderWithPaymentResult:url
standbyCallback:^(NSDictionary *resultDic) {
NSString * query = [[url
query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
AlixPayResult *result = [[AlixPayResult
alloc] initWithString:query];
if (result.statusCode ==
9000) {
id<DataVerifier> verifier =
CreateRSADataVerifier([RPDataShare
sharedService].publicKey);
if ([verifier verifyString:result.resultString
withSign:result.signString]){
//交易成功
}else {
//交易失败
}
}else
if (result.statusCode ==
4000){
//订单已支付
}else
if (result.statusCode ==
6001){
//取消支付
}
}];
}else
if ([url.host
isEqualToString:@"pay"]) {
return [WXApi
handleOpenURL:url delegate:self];
}
}
web端支付
+(void)initAlixPayOrder:(AliPayModel *)aliPayObj
{
[RPDataShare
sharedService].publicKey = aliPayObj.publicKey;
[RPDataShare
sharedService].privateKey = aliPayObj.privateKey;
aliPayObj.notifyURL =
@"";
aliPayObj.service =
@"";
aliPayObj.paymentType =
@"";
aliPayObj.inputCharset =
@"";
aliPayObj.itBPay =
@"";
aliPayObj.showUrl =
@"";
NSString *appScheme =
@"";
NSString *orderSpec = [aliPayObj
description];
id<DataSigner> signer =
CreateRSADataSigner(aliPayObj.privateKey);
NSString *signedString = [signer
signString:orderSpec];
NSString *orderString =
nil;
if (signedString !=
nil)
{
orderString = [NSString
stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
orderSpec, signedString,
@"RSA"];
[[AlipaySDK
defaultService] payOrder:orderString
fromScheme:appScheme
callback:^(NSDictionary *resultDic) {
DLog(@"reslut = %@",resultDic);
if ([[resultDic objectForKey:@"resultStatus"]integerValue]==6001) {
//取消付款
}else
if ([[resultDic objectForKey:@"resultStatus"]integerValue]==9000){
//交易成功
}
}else
if ([[resultDic objectForKey:@"resultStatus"]integerValue] ==
4000){
//订单已支付
}
}];
}
}
2,微信支付
申请开通微信支付后财付通会把一些参数以邮件形式发给你:商户号(PartnerID)、初始密钥(PartnerKey),同时会提醒你去财付通企业版修改32位的密钥,修改后对应的PartnerKey也要修改,微信的支付密钥要自己发邮件去申请,反正我们是这么弄来的
接下来就是生成package和签名,生成package注意access token的时长和次数限制
签名微信分app签名和后台签名,拿到签名生成调微信接口生成预支付订单id
拿预支付订单id调微信支付
微信注意的就是刚开的几个参数要邮件去拿
相关文章推荐
- ios 关于微信获取手机里边分享过微信的app的想法
- 关于微信检测SDK应用的原理浅析(iOS)
- iOS 支付 [支付宝、银联、微信]
- iOS 支付 [支付宝、银联、微信]
- 关于微信检测SDK应用的原理浅析(iOS)
- ios 关于cocos2dx 3.2微信分享好友成功返回游戏卡死的情况处理
- iOS支付[支付宝、银联、微信]
- iOS支付[支付宝、银联、微信]
- 实现微信App支付---关于Android实现App支付时的注意事项(或者叫坑)
- 关于微信检测SDK应用的原理浅析(iOS)
- 微信红包冲击阿里:面临支付场景有限问题
- 关于微信检测SDK应用的原理浅析(iOS)
- IOS 9 关于微信,QQ三方登陆的https适配结局方案,XCODE配置
- 关于移动端input框 在微信中 和ios中无法输入文字的问题
- ios关于微信分享图片失效的问题
- 关于阿里声波支付(当面付)的一些知识
- 支付接口大开放:微信攻到阿里腹地
- iOS 支付 [支付宝、银联、微信]
- iOS 关于银联支付问题