支付宝 android SDK 如何获取支付订单? 支付宝android支付接口:new PayTask(act).pay(or);返回result为空,支付状态成功,但是reuslt数据为空。 请问如获取支付订单号?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在支付宝Android SDK中,获取支付订单号通常不是直接从支付结果的回调中获取的,而是在调用支付接口之前就需要你知道的。支付订单号(也称为交易号或者订单ID)是在你服务器端生成支付订单时,由你的系统生成并返回给客户端的。具体步骤如下:
服务器端:你需要先在你的服务器上通过调用支付宝的API(如统一下单API)来创建一个支付订单,这个过程会包含商品信息、金额、商户ID等必要参数。请求成功后,支付宝会返回一个包含订单信息的响应,其中就包括了out_trade_no
(外部交易号,即你自定义的订单号)和trade_no
(支付宝交易号)。你应该将这些信息记录在你的数据库中,并选择其中一个订单号(通常是out_trade_no
)传递给客户端。
客户端(Android应用):在你的Android应用中,调用支付接口前,你应该已经从服务器获取到了上述的订单号。然后,使用这个订单号和其他必要的支付参数(比如总金额、商品描述等)构造支付请求对象,再调用new PayTask(act).pay(or)
进行支付。
如果你在支付完成后需要查询支付状态或详情,可以再次通过订单号到你的服务器上查询,服务器再根据订单号向支付宝发起查询请求,获取支付结果。
至于你提到的result
为空但支付状态成功的情况,这可能是因为数据处理逻辑上的问题。确保在调用支付方法后,正确地处理了支付宝SDK返回的支付结果。支付结果通常是一个JSON字符串,包含了支付状态、订单号等信息。你需要在PayTask的监听器中实现onPayResult方法来捕获这个结果,并解析它。
例如:
PayTask payTask = new PayTask(this);
Map<String, String> result = payTask.pay(orderInfo, true);
String resultStatus = result.get("resultStatus");
if (TextUtils.equals(resultStatus, "9000")) { // 支付成功的状态码为9000
String tradeNo = result.get("tradeNo"); // 这里就是支付宝交易号
// 根据tradeNo做后续操作,比如显示支付成功界面,更新订单状态等
} else {
// 处理其他支付状态,如失败、取消等
}
请检查你的代码中是否正确实现了对支付结果的处理逻辑,以及是否遗漏了对返回数据的解析。