重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

android支付集成,安卓接入支付宝支付

android开发微信支付集成客户端二次签名怎么做

1.客户端代码得到用户购买的商品信息,将之传给自己公司app服务器,参数包含但不限于以下:

站在用户的角度思考问题,与客户深入沟通,找到龙岩网站设计与龙岩网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广、域名与空间、网站空间、企业邮箱。业务覆盖龙岩地区。

params.put("appid", appID);// 微信appid,选择性上传,服务器写死亦可

params.put("money", money);// 支付金额,单位:分

params.put("name", goodsName);// 商品名称

params.put("currencytype", "CNY");// 支付币种,只能填CNY,代表人民币12341234

备注:以上是参数字段是我们公司服务器定义,给服务器用以获取预支付订单号prePayId用。

备注2:详细字段请参考:

2.app服务器调用微信“统一下单”接口,得到prePayId订单号并返回prePayId给手机客户端;

3.手机客户端使用prePayId及商品信息调起微信客户端进行支付;

3.1用户操作:输入密码进行支付;返回键取消支付;网络无连接支付失败等;

4.微信客户端回调支付结果给咱们的APP客户端;

5.微信服务器异步通知咱们公司app服务器支付结果(服务器的工作,与客户端无关)

这个其实很简单的,demo文档写得很详细,直接上代码吧:

/**

* 获取sign签名

*

* @return

*/

private String genPayReq() {

// 获取参数的值

PayReq request = new PayReq();

request.appId = ConstantsMember.APP_ID;

request.partnerId = ConstantsMember.MCHID;

request.prepayId = mPrepayId;

request.packageValue = "Sign=WXPay";

request.nonceStr = DataUtil.getGuid();

request.timeStamp = DataUtil.getTimeStamp();

// 把参数的值传进去SortedMap集合里面

SortedMapObject, Object parameters = new TreeMapObject, Object();

// {appid=wx34df375d7dae8c90, noncestr=3BF34EF2CA4A462DB8D4EA48E785CDC3,

// package=Sign=WXPay, partnerid=1349967601,

// prepayid=wx2016070910354542c7155d4e0846850809, timestamp=1468031760}

parameters.put("appid", request.appId);

parameters.put("noncestr", request.nonceStr);

parameters.put("package", request.packageValue);

parameters.put("partnerid", request.partnerId);

parameters.put("prepayid", request.prepayId);

parameters.put("timestamp", request.timeStamp);

String characterEncoding = "UTF-8";

String mySign = createSign(characterEncoding, parameters);

System.out.println("我的签名是:" + mySign);

return mySign;

}

/**

* 微信支付签名算法sign

*

* @param characterEncoding

* @param parameters

* @return

*/

public static String createSign(String characterEncoding,

SortedMapObject, Object parameters) {

StringBuffer sb = new StringBuffer();

Set es = parameters.entrySet();// 所有参与传参的参数按照accsii排序(升序)

Iterator it = es.iterator();

while (it.hasNext()) {

@SuppressWarnings("rawtypes")

Map.Entry entry = (Map.Entry) it.next();

String k = (String) entry.getKey();

Object v = entry.getValue();

if (null != v !"".equals(v) !"sign".equals(k)

!"key".equals(k)) {

sb.append(k + "=" + v + "");

}

}

sb.append("key=" + ConstantsMember.KEY); //KEY是商户秘钥

String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding)

.toUpperCase();

return sign; // D3A5D13E7838E1D453F4F2EA526C4766

// D3A5D13E7838E1D453F4F2EA526C4766

}

Unity-Android集成微信支付出现返回-1问题

前段时间出去玩了一段时间,回公司得知一个惊天消息——微信支付出问题了!!!这个问题比较奇怪,说是部分机型可以支付成功,部分机型如小米、三星无法调起支付,返回-1。

众所周知返回-1的话代表了各种各样的错误(坑),所以只好从头开始排查,首先排查 WXPayEntryActivity.java 这个文件是否放在了 .wxapi包 下,及 manifest里的注册是否为.wxapi.WXPayEntryActivity ,确定无误后检查后台返回的参数是否有误

至此如果都正确,可以开始着手检查在后台里的参数设置是否正确

这里需要注意的是应用签名和应用包名,因为出问题的包不是由我打包的,我怀疑问题在于应用签名对不上,最后发现果然如此。打包的同事使用了另一个keystore文件进行打包,导致应用签名与后台填写的不一致,于是重新生成了签名更新后台设置,问题解决。

至于为什么部分机型可以正常支付,而部分机型无法调起,我参照有些coder遇到的问题“微信支付只能成功调起一次”

因为成功支付的机型为公司测试机,而不成功的机型是用户机,猜测因为公司测试机里曾经调试过微信支付,有正确的包名和签名的缓存,微信在调起时直接读取缓存值,验证正确后直接调起,而当缓存值出错时微信才会再次去读取新的包名和签名重新验证,因此出现了部分机型可支付的问题。也因为这个原因, 修改完签名后再次调试,第一次返回的还是-1,但再次点击就可以成功调起,此后也没有再返回-1。 个人猜测,如有错误欢迎指出讨论。

微信支付的坑实在是太多了,还有OC编写的iOS的IAP也有很多藏起来的坑,一直想把Unity内调用Java集成的微信、支付宝支付,使用OC集成的iOS内购详细过程写上来,但是一直犯懒。。这段时间一定要写好,给自己做个记录,也给大家作为一个参考。

android集成支付宝sdk出现系统繁忙,请稍后再试是什么情况

这个我之前也遇到。确实是公钥出了问题。

在本地生成一份。

在官网获取一份。

一步步检查。会解决的。这个问题就是公钥或是密钥的问题。

Android之支付宝支付集成

支付宝集成流程

主要的回调返回类两个:PayResult与AuthResult

支付接口的调用:

支付结果的接收:

android开发,大神们知道app如何集成转账功能吗?支付宝api好像只有支付功能

Android开发集成转账功能,那么需要集成第三方支付平台,例如支付宝,微信等等。

集成方式:

到官网申请开发者帐号

登录开发者帐号,申请密钥

下载集成SDK

集成到Android Project中

按SDK说明文档调用支持即可


分享名称:android支付集成,安卓接入支付宝支付
本文网址:http://cqcxhl.com/article/dsgdcds.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP