1.从账号和开放平台开始的旅程
当然,支付逻辑接入的最重要的也是必须的一步,就是去各个开发平台上申请开发账号了,笔者一开始被微信和支付宝各种账号搞得头很大,所以决定先从这里入手分析一下.
支付宝:
登录支付宝,首先需要的是一个支付宝账号,这个支付宝可以是个人账户也可以是公司账户,个人账户相信每个人都会有,但是支付需要各种业务的申请的大部分逻辑都是需要公司账户才可以(笔者估计、未亲自验证)。所以建议使用公司的资料去申请一个支付宝商家账号,以方便将来各种业务的开启,申请所需要的公司材料在注册界面就会有提示,这里不再赘述。
1.支付宝开放平台 :http://open.alipay.com/platform/home.htm
这个通往支付宝开发的第一步,接入支付宝的各种技术文档都得从这里查阅,作为一个iOS开发者,最重要的也是阅读最多的当然是‘支付宝移动支付’的文档了 ~阅读文档请戳这里,你需要仔细的阅读文档并且下载一个Demo查看一下源代码。
2.支付宝商家账户:https://b.alipay.com/newIndex.htm
这是获取支付宝支付能力的最总要的一个网站,你必须在该网站签约了各种产品之后才能获取开发能力,查看接入指南请猛戳
- 签约产品中的坑
1.在申请签约即时到账产品的时候必填资料中会有一个申请网址,只要保证该网址可以访问,是一个电商平台就可以,笔者发现的坑有:请不要填写任何知名电商网站的网店链接,填写的网址中不要有烟草类商品,笔者就是出现了上述的错误,导致申请被驳回;
2.申请签约移动支付产品的时候,申请网址不是必填的;
3.申请签约产品的时候,官方提示为五到七个工作日,但是一般来说3个工作日内就会通过,所以申请签约之后耐心等待吧。
签约完成之后,就是获取到PID和秘钥了。在上述的接入指南中的‘PID和秘钥管理’已经描述的很清晰,这里我在说明一下我开发中遇到的坑
- 关于PKCS8编码的问题,在接入指南关于RSA公私钥生成中会有这句话
生成的私钥文件.pem打开时候是这个样子的
但是如果你在Demo中将上述私钥(注意拷贝进Demo时不要带着“-----BEGIN RSA PRIVATE KEY-----”、“-----END RSA PRIVATE KEY-----”以及私钥中不能带有换行符以及空格)赋值给NSString *privateKey
,你会发现支付是不能成功的。因为在iOSDemo中的RSADataSigner
类中有如下方法
- (NSString )formatPrivateKey:(NSString )privateKey {
const char pstr = [privateKey UTF8String];
int len = (int)[privateKey length];
NSMutableString result = [NSMutableString string];
[result appendString:@"-----BEGIN PRIVATE KEY-----\n"];
int index = 0;
int count = 0;
while (index < len) {
char ch = pstr[index];
if (ch == '\r' || ch == '\n') {
++index;
continue;
}
[result appendFormat:@"%c", ch];
if (++count == 79)
{
[result appendString:@"\n"];
count = 0;
}
index++;
}
[result appendString:@"\n-----END PRIVATE KEY-----"];
return result;
}
这个方法是将privateKey装换为图2中pem文件中秘钥的格式,而[result appendString:@"-----BEGIN PRIVATE KEY-----\n"];
和[result appendString:@"\n-----END PRIVATE KEY-----"];
这两句代码标志着PKCS8编码之后的私钥的开始和结束,所以结论就是在Demo中使用的私钥是需要对需要对私钥文件进行PKCS8编码的
- 关于PKCS8编码的问题,在接入指南关于RSA公私钥生成中会有这句话
微信:
1.微信开放平台 :https://open.weixin.qq.com
当然第一步是先阅读微信开发文档,里边对微信接入的各种逻辑都已比较详细的解释;
对比与支付宝,接入微信是一个比较痛苦的过程。首先你要在微信开放平台中认证开发者资质,因为没有开发者资质除了看开发文档是无法做任何事情的。认证开发者资质需要RMB300大洋,只支持微信支付,而且需要准备注册材料,什么业务资料啊,运营者信息啊等等一大堆,然后你就要开始漫长的等待(微信宣称是五到七个工作日,但实际上需要一到三个工作日,微信将这个审核业务外包给了其他公司,如果你分配到了一个不太靠谱的公司,可能需要三个工作日或更多)。终于认证通过并验证通过,兴冲冲的去创建了一个应用,结果你发现,你的应用并没有获得微信支付的能力,需要申请开通微信支付能力,,,,申请微信支付能力也需要很多资料并且验证,最后你会收到验证邮件并在微信开放平台的应用下看到
点击查看详情
点击验证之后就进入了下面这个个网站
2.微信支付商户平台:https://pay.weixin.qq.com/index.php/account
这个平台主要是处理查询订单,退款,充值提现等等操作,各种敏感操作都是需要安装安全证书之后才可以进行操作;里边的具体功能这里不再赘述
其实笔者看完微信与支付宝的开发文档之后其实是一脸懵逼的,因为在没有接触过支付之前,对开发文档中的各种新名词毫无反应,什么叫签名?为什么这么多参数都是干嘛用的?notify和return有什么区别?别着急,接下来就是分析支付宝和微信的Demo了。
下一篇小弟准备分析一下支付宝和微信支付demo中的代码,今天先到这里