记录ANE接入之支付宝
首先需要去https://b.alipay.com/order/serviceIndex.htm进行与阿里的签约。审核成功之后如下
点击查询PID、Key 进入下面的界面
输入支付宝密码点击确认便可查询到当前一些相关信息
这里需要用到的就是合作者身份PID,以及在合作伙伴加密管理栏目中 要提交的RSA密钥,由于我这里已经提交过了,所以RSA密钥项是查看密钥,如果没有提交 则是添加密钥。
下面的无线产品密钥可以不用管
接下来就是生成RSA公钥即要提交给支付宝的。
下载openssl密钥生成软件或者可以在当前界面 选择 技术支持 选项 下面的 快捷支付进行下载
解压压缩包 打开bin目录下面的openssl.exe得到下面的界面
1、首先生成RSA私钥
输入“genrsa -out rsa_private_key.pem 1024”命令,回车后,在当前bin文件目录中会新增一个rsa_private_key.pem文件(此处的rsa_private_key可以任意命名,只要记住自己命的名就好)
成功界面如下
2、然后生成RSA公钥
输入“rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem”命令回车后,在当前bin文件目录中会新增一个rsa_public_key.pem文件(此处的rsa_public_key可以任意命名,只要记住自己命的名就好)
此处生成的公钥将会用于提交给上面提到的密钥管理,注意的是不能出现空格 换行 必须是一行才能进行正确提交
成功界面如下
3、最后生成PKCS8编码的私钥
输入命令“pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt”并回车
成功界面如下
右键点击openssl窗口上边边缘,选择“编辑→标记”,选中要复制的文字此时继续右键点击openssl窗口上边边缘,选择“编辑→复制”,
把复制的内容粘贴进一个新的记事本中,可随意命名,只要知道这个是PKCS8格式的私钥即可
到此基本的密钥 已经全部制作好了。接着到bin目录下,用记事本打开rsa_public_key.pem公钥文件 将里面的密钥复制
然后到支付宝界面中 在RSA密钥旁 点击添加密钥 然后黏贴进去,点击确定。如无意外那么就提交成功啦。
如果提示格式错误那么可能是密钥中含有空格 或者是 换行。
接下来就是代码部分了。下载ANE 导入项目的工程就不说了
AlipayExtension.getInstance().AlipayInit( ) 将 第一个 和 第二个参数为商户的PID,第三个参数可以传入空字符串,然后第四个参数 则是上面最后一步生成的PKCS8格式
编码的私钥,第五个参数 是第二步生成的公钥。 后面的参数是定死的。在执行支付之前 先调用这个方法
AlipayExtension.getInstance().AlipayPay() 这个方法有三个参数 第一个为 消费名称/标题 将显示在支付界面 第二个是支付的金额 第三个则是对此次支付的描述
AlipayExtension.getInstance().AlipayExit();最后 退出
package { import com.alipay.ane.AlipayExtension; import flash.desktop.NativeApplication; import flash.events.InvokeEvent; import flash.events.StatusEvent; public class AlipayManager { public function AlipayManager() { AlipayExtension.getInstance().addEventListener(StatusEvent.STATUS,onStatusHandler); NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE,onURLHandler); } private function onStatusHandler( e:StatusEvent ):void { trace( "alipay: ","level:"+e.level,"code:"+e.code); } //针对IOS private function onURLHandler( e:InvokeEvent ):void { if(e.arguments.length>0){ trace(e.arguments[0]); var str:String = e.arguments[0] as String; AlipayExtension.getInstance().AlipayURLHandle_JustIOS(str); } } public function initAlipay( ):void { AlipayExtension.getInstance().AlipayInit( "2088800000000000", "2088800000000000", " ", "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKL3R+adoF382DpP"+ "MdN5JUfBYfwz8ZiEtDbP1++mPCpGlumi85xG3QwYRfVPDYqU2QsroF2mvJEoUQJb"+ "NBJqkazzh+Wyud30VZrjviMgVbjSBoCyqT35GBZZOw52nlAScE83l0NayozANN47"+ "UGHFDMCvb6qEWYByzWQylIy75uypAgMBAAECgYAqRcq435qBxtywA2sBWCN7gYZR"+ "TYgV8BZvQWraF1zz+mubH1Hh79/XC1TaVS9GC2Zhp2dp4552aObanZ3cSRiQQnNE"+ "dhhD/ocCQ71oeLypPLB2w6U3Qjflds/bfNCW6QB3rU9CNR4xL9H/JUvzvTIcEap"+ "m40lhYOlxSMDkohagQJBANOiSXp1ePERReA4zxkk9olEL1VQZc5zQkTssRcquscx"+ "Sf93HUh5e2poxOaR9OFzIwQ/DetpI9/KA7FnyEniUs0CQQDFISObtGaY2J6Uc60V"+ "cvzu3MT0W3N9rP42+YQxB6MLTQhPgqMmK/BOzyjvG/cBpgiSBmsrz7KrsSqkdgC3"+ "thlNAkB6tsJmeJFNLxfWYPps+QrfIyNTE9BEen61mo1BAqzU7ZabxAS9znsqg1+Q"+ "1pco1us5/hnjI88CZ4/moWf4t3wNAkADYYIe1YU88domaaV6TLKR1i96kWb1rNXf"+ "U4A05xCgzP1rf64UpYRFlb/5+dzOpm5XMsz7v2AtGajFkVCJ1hGxAkBzrHIRFM7n"+ "U6jAh68rfAEnMi2ctb/RSQ3yh7UrORGMeLAz4/tt2OCNw5yNr0B+Ily6/1LzBFBD"+ "2x+y9cFpj2rL", "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCi90fmnaBd/Ng6TzHTeSVHwWH8"+ "M/GYhLQ2z9fvpjwqRpbpovOcRfdsGEX1Tw2KlNkLK6BdpryRKFECWzQSapGs84fl"+ "srnd9FWa474jIFW40gaAsqk9+RgWWTsOdp5QEnBPN5dDWsqMwDTeO1BhxQzAr2+q"+ "hFmAcs1kMpSMu+bsqQIDAQAB", "http://notify.java.jpxx.org/index.jsp", "mobile.securitypay.pay", "http://m.alipay.com"); } /** *进行支付 * @param title 消费名称/标题 将显示在支付界面 * @param price 价格 * @param discribe 消费描述 * */ public function doPayAction( title:String,price:Number,discribe:String ):void { AlipayExtension.getInstance().AlipayPay(title,price,discribe); } /** *退出支付 * */ public function exitPay( ):void { AlipayExtension.getInstance().AlipayExit(); } private static var _instance:AlipayManager; public static function get alipay( ):AlipayManager { if( _instance == null ) _instance = new AlipayManager( ); return _instance; } } }