最近在做商城APP,支付方式有货到付款和在线支付,在线支付用到了支付宝的快捷支付。下面先说流程:
首先是申请合作商家帐号什么的,这些一般不用我们程序员亲自动手,需要的请自行上 https://b.alipay.com/order/serviceIndex.htm查看。
合作商家帐号申请下来之后,到商家服务平台,我的商家服务,下载SDK,demo,文档。
我用到的是快捷支付,所以选择快捷支付(无线)这项。
解压之后,有三个文件夹,我们进移动支付接口SDK2.0标准版(20141208),里面有文档和使用规则,还有个demo,更新日志,文档和使用规则还是要稍微看下。
文档里写了接口错误代码等等,使用规则则是介绍了demo。
看完了之后,可以开始玩demo了,我做IOS的,直奔IOS的demo。
开打demo一看,尼玛,真是简陋,简单说下结构:
AlipaySDK.bundle里面放一些支付宝自己的资源文件,openssl跟util里面放加密所需要的文件,order两个文件是订单的数据模型,APViewController两个文件则是重头戏,里面有订单的生成,加密,签名,拼接,以及支付的调用。
具体里面内容就不介绍了,注释写得很清楚了。直接说下需要哪些东西才能让demo运行起来。
需要填的有partner合作商家ID,seller卖家帐号,privateKey私钥,用于生成签名用的。这些都可以在商家服务后台找到。公钥需要上传,但是客户端没啥用。
下面说一些demo里的坑:
RSADataSigner的实现文件里,需要改-----BEGIN PRIVATE KEY-----\n 为-----BEGIN RSA PRIVATE KEY-----\n 不然的话签名会出错。这个主要是看你拿到的私钥,上面有没有带这个RSA了。具体使用的时候要和服务器商量,加密是服务器在处理了,demo是同时干了服务器的事。
还有遇到一个问题,就是金额,12.01跟12.0100是不一样的,这个让服务器加密完,返回来的时候要特别注意看下。
还有个问题,是多订单支付的时候,分隔符不能用"|",不然支付宝那边会老提示系统繁忙,就是密钥出问题了。后来换成了"_"才正常。
暂时只有这些了,以后后续开发如果有遇到新的问题再补充