Commit 565bc7897fb7fc281ab0ad16c677b92ab1c7fe04

Authored by 李毅
1 parent 45b84a46

update

Showing 1 changed file with 72 additions and 1 deletions
06.支付云/4.2app.md
@@ -58,8 +58,10 @@ NSString *string = [NSString stringWithFormat:@"%@&key=%@", [self signvalue:para @@ -58,8 +58,10 @@ NSString *string = [NSString stringWithFormat:@"%@&key=%@", [self signvalue:para
58 58
59 ``` 59 ```
60 60
61 -2)将步骤1中得到的string进行SHA1加密并全部大写即得到sign签名字符串,需要导入文件#import<CommonCrypto/CommonDigest.h> 61 +2)将步骤1中得到的string进行SHA1加密并全部大写即得到sign签名字符串,需要导入文件
62 ```object-c 62 ```object-c
  63 +#import<CommonCrypto/CommonDigest.h>
  64 +
63 NSString *signString = [[self sha1:string] uppercaseString]; 65 NSString *signString = [[self sha1:string] uppercaseString];
64 66
65 - (NSString*)sha1:(NSString *)string 67 - (NSString*)sha1:(NSString *)string
@@ -77,6 +79,75 @@ NSString *signString = [[self sha1:string] uppercaseString]; @@ -77,6 +79,75 @@ NSString *signString = [[self sha1:string] uppercaseString];
77 } 79 }
78 ``` 80 ```
79 sign样例: 7656A9FEFB5D8A08AB41723A843FC3C0B3818A0A 81 sign样例: 7656A9FEFB5D8A08AB41723A843FC3C0B3818A0A
  82 +
  83 +3)请求支付云预支付订单接口
  84 +预支付订单的参数列表中必传参数(包括生成的sign)和非必传参数(根据业务需求自行判断需传哪些参数)拼接成参数字典,请求预支付订单接口https://api.cnlive.com/open/api2/unifypay/prepay
  85 +将支付云返回数据解析(支付宝为例),需导入头文件
  86 +
  87 +```object-c
  88 +#import<AlipaySDK/AlipaySDK.h>
  89 +
  90 +NSDictionary *parameters = @{@"account":account, //和支付云对接app支付对应的命名一致 如: @"testDemoAlipay"
  91 + @"type":@"3",//以支付宝为例
  92 + @"appId":AppId, //AppID
  93 + @"out_trade_no":outTradeNo, //唯一订单号
  94 + @"total_fee":totalFee, //订单总价
  95 + @"notify_url":notifyUrl, //回调地址(用户付款通知业务系统接收地址)
  96 + @"body":body, //订单信息
  97 +@"user_id":userId, //用户id
  98 + @"attach.sid":userId, //用户id
  99 +@"attach.orderId":outTradeNo, //唯一订单号
  100 +@"attach.value":descript,//商品描述
  101 + @"sign":signString//RSA加密签名串
  102 + };
  103 +
  104 +__block NSString *signedString = @"";
  105 +[[AFHTTPRequestOperationManager manager] POST:prepay parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
  106 + if ([[NSString stringWithFormat:@"%@", responseObject[@"errorCode"]] isEqualToString:@"0"])
  107 + {
  108 + signedString=responseObject[@"data"][@"alipay_app"];
  109 + NSString *orderString = nil;
  110 + NSString *appScheme = @"testDemo您的app包名";
  111 + if (signedString != nil) {
  112 + orderString = signedString;
  113 +
  114 + [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
  115 + NSString *resultStr = [resultDic objectForKey:@"resultStatus"];
  116 + if ([resultStr isEqualToString:@"9000"]) {
  117 + //PaySuccess支付成功
  118 + }
  119 + else if ([resultStr isEqualToString:@"6001"]) {
  120 + //UserCancel用户取消
  121 + }
  122 + else {//PayFailure支付失败
  123 + }
  124 + }];
  125 + } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  126 +}];
  127 +
  128 +```
  129 +```object-c
  130 +4) AppDelegate.m中添加支付结果客户端回调判断
  131 +- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
  132 + if ([url.host isEqualToString:@"safepay"]) {//支付宝支付结果
  133 + [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
  134 + NSLog(@"result = %@",resultDic);
  135 + NSString *resultStr = [resultDic objectForKey:@"resultStatus"];
  136 +if ([resultStr isEqualToString:@"9000"]) {
  137 +//PaySuccess
  138 + }
  139 +else if ([resultStr isEqualToString:@"6001"])
  140 +{//UserCancel
  141 + }
  142 +else {
  143 +//PayFailure
  144 + }
  145 + }];
  146 + return YES;
  147 + }
  148 + return NO;
  149 +}
  150 +```
80 ##### Android 151 ##### Android
81 152
82 ### 支付宝接入 153 ### 支付宝接入