关于银联、微信、支付宝支付的相关信息

一、 银联支付 本地没有其他的环境配置,只需要在支付时从服务器获取交易流水号(TN),然后调取支付控件,支付完成之后会通知商户后台以及客户端,,相关demo和SDK见官网。银联支付

二、 微信支付 微信支付需要配置appkey,在app启动时注册appkey,例如(ios):BOOL value = [WXApi registerApp:@"wxxxxxxxx" withDescription:@"demo 2.0"]; 为了能够正常的调取微信客户端还需要在plist文件中将微信加入白名单,调取微信客户端还需要配置URL Schemse ,将申请的key值直接填写到URL Schemse中。 支付文档详见官网。 支付时需要注意几个问题: 1、 参数配置按demo中的例子配置就好。其中prepayid是从服务器获取的,包名直接用demo中的名字,时间戳本地生成,以及防重发随机串。 2、 创建发起支付是的签名很容易出错,这个签名是本地生成的,签名的具体格式见官网,对参数按照key=value的格式,并按照参数名ASCII字典序排序。

具体生成签名代码:

//创建发起支付时的sige签名
+(NSString *)createMD5SingForPay:(NSString *)appid_key partnerid:(NSString *)partnerid_key prepayid:(NSString *)prepayid_key package:(NSString *)package_key noncestr:(NSString *)noncestr_key timestamp:(UInt32)timestamp_key{
    NSMutableDictionary *signParams = [NSMutableDictionary dictionary];
    [signParams setObject:appid_key forKey:@"appid"];
    [signParams setObject:noncestr_key forKey:@"noncestr"];
    [signParams setObject:package_key forKey:@"package"];
    [signParams setObject:partnerid_key forKey:@"partnerid"];
    [signParams setObject:prepayid_key forKey:@"prepayid"];
    [signParams setObject:[NSString stringWithFormat:@"%u",(unsigned int)timestamp_key] 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字段
    [contentString appendFormat:@"key=%@", @"6627f964e6e008c36fb7346aa1xxxxx"];
    NSString *result = [BaseMethod MD5:contentString];
    return result;
}

 

三、 支付宝支付 支付宝支付类似于微信支付,需要配置白名单、URL Schemes。本地需要配置的主要参数有partner一个以2088开头的纯数字,对应着签约的支付宝账号,seller_id卖家支付宝账号,privateKey私钥,以上三个参数是固定的,申请支付宝开发是所获取的。其他的一些描述商品的参数动态配置。完成支付根据状态码判断支付信息。具体参考信息见alipay

posted @ 2016-07-18 16:07  MaricoSun  阅读(358)  评论(0)    收藏  举报