再看看支付宝的
点击支付会跳转到你手机上的支付宝APP,如果手机上没有下载也是可以用的,不过用的不在一个真正的支付宝APP中
但是这么简单的东西,楼主的确智商捉急,都弄了半天。
首先是导入微信的Demo,去官方下载了SimpleDemo后,发现一堆错误,好吧,首先是SDK的问题,这个就不多做赘述了。
然后修改后Try Again oh,no,又来一个什么鬼。
什么鬼,仔细一看,是drawable里面有不是png的文件命名成了png文件。
好吧,如果你足够的耐心,那么几十张图片,你还是可以直接一张一张的检查后缀的,看看有不是png作为后缀的,另存一下,或者修改你的文件名使其和后缀名一致。
然而程序员的能力应该体现在偷懒的程度上,所以容我偷懒啦。
compileSdkVersion 23 buildToolsVersion "24.0.0" aaptOptions.cruncherEnabled = false aaptOptions.useNewCruncher = false defaultConfig {applicationId "net.sourceforge.simcpux"minSdkVersion 4targetSdkVersion 23}只需要在对应的gradle文件中加上两句话 ,并把值至为false即可。
哦,原来是因为6.0以后官方隐藏的HttpClient的相关API,然而大多数导入的代码都还用着这个强大的框架,那怎么弄呢?
好的,只需要再在Gradle文件中添加这样的一句话就好
android {useLibrary "org.apache.http.legacy" }dependencies { compile files("libs/libammsdk.jar") android {useLibrary "org.apache.http.legacy" }}再来看看支付宝的,就简单多了。我遇到的第一个问题是,没有指定APPID,公钥那些东西,好的,这个肯定是得弄得,把自己申请的一系列东西装进去。
嘿嘿,有界面,应该可以吧,点击一下支付。
Oh on,直接崩溃
错也总得有原因哈,看看日志。
空指针异常?进去一看
sign = URLEncoder.encode(sign, "UTF-8");
是这样一句话出现了问题,这句话什么问题呢。
/*** sign the order info. 对订单信息进行签名* * @param content* 待签名订单信息*/ private String sign(String content) {return SignUtils.sign(content, RSA_PRIVATE); }这个方法的问题,这样返回的是一个空的。
public static String sign(String content, String privateKey) {try { PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec( Base64.decode(privateKey)); KeyFactory keyf = KeyFactory.getInstance(ALGORITHM); PrivateKey priKey = keyf.generatePrivate(priPKCS8); java.security.Signature signature = java.security.Signature .getInstance(SIGN_ALGORITHMS); signature.initSign(priKey); signature.update(content.getBytes(DEFAULT_CHARSET)); byte[] signed = signature.sign(); return Base64.encode(signed);} catch (Exception e) { e.printStackTrace();}return null; }是这样的一串代码,原来这个方法是把私钥转换成应该有的格式,而我公司给的意见转换好了,好吧。
/*** sign the order info. 对订单信息进行签名* * @param content* 待签名订单信息*/ private String sign(String content) {//return SignUtils.sign(content, RSA_PRIVATE);return RSA_PRIVATE;}修改一下,再次运行。Oh yeah,成功!