美文网首页
支付宝App支付流程

支付宝App支付流程

作者: 昵称违规 | 来源:发表于2018-11-29 10:41 被阅读0次

支付宝app支付现在很方便,支付宝的参考文档也规范易懂,需要开发人员做的事很少,具体参考支付宝开发文档https://docs.open.alipay.com/204/105297/   ,后台服务端的话具体下载对应的sdk即可,我是做的java,具体流程如下:

支付流程

app请求后台获取订单信息,后台只需封装参数,返回app包含签名的订单信息。代码如下:

// 主题

String subject ="测试商品";

// 主题内容

String body ="testBody";

// 订单号  随机(后面要改)

Date date =new Date();

StringBuilder dstr =new StringBuilder(DateFormatUtils.format(date, "yyyyMMddHHmmss"));

Stringout_trade_no="zhs" + UUID.randomUUID().toString().substring(3, 7) + dstr;

System.err.println("订单号---" + out_trade_no);

AlipayClient alipayClient =new DefaultAlipayClient(AliPayConfig.gateway, AliPayConfig.app_id,

        AliPayConfig.app_private_key, "json", Charsets.UTF_8.toString(), AliPayConfig.alipay_public_key, AliPayConfig.sign_type);

// 实例化具体API对应的request类,类名称和接口名称对应

AlipayTradeAppPayRequest aliRequest =new AlipayTradeAppPayRequest();

// sdk中的model入参

AlipayTradeAppPayModel model =new AlipayTradeAppPayModel();

// 描述信息,添加附加数据

model.setPassbackParams(body);

// 商品标题

model.setSubject(subject);

// 订单号

model.setOutTradeNo(out_trade_no);

// 超时关闭该订单时间

model.setTimeoutExpress("30m");

// 将double数值转换成String类

model.setTotalAmount(Double.toString(totalAmount));

model.setProductCode(AliPayConfig.product_code);

model.setSellerId(AliPayConfig.seller_id);

aliRequest.setBizModel(model);

// 回调地址

aliRequest.setNotifyUrl(AliPayConfig.notify_url);

String orderStr ="";

try {

AlipayTradeAppPayResponse response = alipayClient.sdkExecute(aliRequest);

    // 就是orderStr 可以直接给客户端请求,无需再做处理。

    orderStr = response.getBody();

}catch (AlipayApiException e) {

e.printStackTrace();

    return orderStr;

}

return orderStr;

只需将orderStr返回给app,app也调用支付宝sdk就可以解析吊起支付,测试可以使用沙箱,暂时只支持安卓。

服务器第二步就是回调方法:支付成功后支付宝会请求服务器后台的地址,这个地址不能携带参数。类似于这样

@ApiOperation(value ="支付宝回调")

@PostMapping(value ="notify/aliPayNotify.do")

public String aliPayNotify(HttpServletRequest request)

log.info("支付宝回调开始-------------");

// 获取支付宝POST过来反馈信息

Map params =new HashMap();

Map requestParams = request.getParameterMap();

for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) {

String name = (String) iter.next();

    String[] values = (String[]) requestParams.get(name);

    String valueStr ="";

    for (int i =0; i < values.length; i++) {

valueStr = (i == values.length -1) ? valueStr + values[i]

: valueStr + values[i] +",";

    }

// 乱码解决,这段代码在出现乱码时使用。

// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");

    log.info(name +": " + valueStr);

    params.put(name, valueStr);

}

获取支付宝的回调信息,官方也有部分代码说明,支付宝回调里面的逻辑有,

第一,判断这个请求是不是支付宝的请求,

第二,判断接受的post通知中有无notify_id,如果有则是异步通知。

第三,验签,验证支付宝返回的签名是否正确

第四,根据trade_status,判断交易状态

if ("TRADE_SUCCESS".equals(trade_status) ||"TRADE_FINISHED".equals(trade_status)) {

log.info("支付成功---");

}else if ("WAIT_BUYER_PAY".equals(trade_status)) {

log.info("等待买家付款,不做处理..success..");

}else if ("TRADE_CLOSED".equals(trade_status)) {

log.info("交易关闭,不做处理");

}else {

log.info("其他情况。。");

}

第五,业务逻辑,校验金额,校验订单号,修改订单状态以及其他涉及到的业务逻辑。

相关文章

  • iOS 支付宝支付

    支付宝支付流程 支付宝的集成按着官方文档来 ios支付宝集成流程 签名呀注册AppKey 我们是由后台完成的App...

  • 收录 : iOS支付开发

    iOS 银联支付开发流程iOS 微信支付开发流程iOS 支付宝支付开发流程iOS Apple Pay开发流程App...

  • 三方支付流程总结

    支付宝支付和微信支付 支付宝支付流程图: 支付宝支付: 当我们选择点击了支付宝支付按钮开始 1.app选择商品进行...

  • APP接入支付宝支付完整流程及踩坑记录(含服务端)

    本篇主要讲解APP接入支付宝支付完整流程,包含服务端,内容稍长 要接入支付宝支付,需要将APP在支付宝平台创建应用...

  • APP接入支付宝支付完整流程及踩坑记录(含服务端)

    本篇主要讲解APP接入支付宝支付完整流程,包含服务端,内容稍长 要接入支付宝支付,需要将APP在支付宝平台创建应用...

  • Android支付宝支付集成

    Android支付宝支付 标签: android Android支付宝支付使用的流程介绍 支付宝流程介绍 支付宝流...

  • iOS集成支付宝-Swift版

    iOS集成支付宝-Swift版 如果要了解整个支付流程可以阅读文章《手机App集成微信支付&支付宝-iOS&And...

  • 29.支付宝支付改版了,你知道吗?

    这里我讲的是关于最新的支付宝支付的流程 1.有个支付宝账号并申请自己的app应用支付宝开放平台 1.1.创建应用 ...

  • 支付宝支付(APP支付)之服务端

    一:项目背景 最近和朋友一起做了一款APP ,涉及到支付宝支付, 简单记录一下支付宝支付服务端流程初涉支付宝支付相...

  • 支付宝

    先了解下支付宝支付的流程 sdk付款的方式有两种模式:如果手机存在支付宝app,则直接调到支付宝付款,不存在的场景...

网友评论

      本文标题:支付宝App支付流程

      本文链接:https://www.haomeiwen.com/subject/frexcqtx.html