接入支付宝支付SDK

可以说支付宝支付接入是所有SDK最好接入的,没有之一。
客户端不用签名,也不用管包名,也不用管签名文件,就接口返回订单,把订单交给支付宝SDK调用就行,成功或者失败都在当前界面返回给你。你再去通知接口。

支付流程图

官方文档地址

!支付宝支付官方文档地址
按照文档说明接入SDK和相关配置,在这就不重复了

客户端支付关键代码===》支付接口的调用(调起支付弹框)

记住支付接口的调用必须在独立的非ui线程中执行,即需新开线程里面调用。可以想官方demo一样用new Thread方式。
下面我给出用Observable方式示例代码
在PayUtils中

/*** desc:支付宝支付* Created by congge on 2018/8/27 17:20* @param orderInfo 接口返回的订单**/
public static void aliPay(final Activity activity, final String orderInfo, final OrderListener orderListener) {Observable.just(orderInfo).map(new Function<String, String>() {@Overridepublic String apply(String orderInfo) throws Exception {//用户在商户app内部点击付款,是否需要一个loading做为在钱包唤起之前的过渡,这个值设置为truereturn new PayTask(activity).pay(orderInfo, true);}}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<String>() {@Overridepublic void accept(String payResult) throws Exception {orderListener.onPayResult(payResult);}});
}

支付结果返回处理

返回例子:
resultStatus={9000};memo={};result={{"alipay_trade_app_pay_response":{"code":"10000","msg":"Success","app_id":"2016091300503896","auth_app_id":"2016091300503896","charset":"utf-8","timestamp":"2018-08-28 17:51:11","out_trade_no":"nVElbd74TW6WnEyxQwvX8A","total_amount":"0.01","trade_no":"2018082821001004680500208879","seller_id":"2088102175487650"},"sign":"W0Hg9k4GxL8Oaxymvqk2i65WNDQxYp6HGve32ek6VjSRnymmI3GQTjpQVbZuDzvjcwQ/HIkM97PoBGAVlTmi/wiJcqDgSSDzDY7AFnNN0OcK0ehWGwKQINA4IDGh51A7yY/vYKmR0VW+2OwGhlRPPMMZtQOEqh8a9/aIijzT6ZLwy9Hl4ayG/fVKhdC1VdckF6+C25BFNp3fIxarg5tfEunm7N9iWngKCUsnP+IZz05OHdvynimgYPcBnbBERHG97GVqRT/EdBWTQyIDMc0LemScAYxJixTVgXDkRddQjzWZ7HgLdBfjs0nXY24puHudT76ERxVY+8NkoKle/QI+FA==","sign_type":"RSA2"}}
也可以自己打log看看
处理示例代码

          //支付宝支付PayUtils.aliPay(this, result.getSignDataStr(), new PayUtils.OrderListener() {@Overridepublic void onPayResult(String payResult) {PayResult pr = new PayResult(payResult);String rs = pr.getResultStatus();String r = pr.getResult();switch (rs) {case AliPayResultStatus.PAY_SUCCESS:ToastUtils.show(R.string.pay_success);//通知接口支付成功break;case AliPayResultStatus.PAY_PROCESSING:case AliPayResultStatus.PAY_UNKNOWN:ToastUtils.show(R.string.pay_fail);//支付可能成功,要接口去查询break;default:ToastUtils.show(R.string.pay_fail);//通知接口支付失败,取消订单}}});

上面方法中:

  1. //通知接口支付成功 //支付可能成功,要接口去查询 //通知接口支付失败,取消订单。根据你产品需求要不要通知你服务器做的操作。正常是要的,用来改变订单状态
  2. PayResult.class
    public class PayResult {private String resultStatus;
private String result;
private String memo;public PayResult(String rawResult) {if (TextUtils.isEmpty(rawResult))
return;String[] resultParams = rawResult.split(";");
for (String resultParam : resultParams) {if (resultParam.startsWith("resultStatus")) {resultStatus = gatValue(resultParam, "resultStatus");
}
if (resultParam.startsWith("result")) {result = gatValue(resultParam, "result");}
if (resultParam.startsWith("memo")) {memo = gatValue(resultParam, "memo");
}
}
}@Override
public String toString() {return "resultStatus={" + resultStatus + "};memo={" + memo
+ "};result={" + result + "}";
}private String gatValue(String content, String key) {String prefix = key + "={";
return content.substring(content.indexOf(prefix) + prefix.length(),
content.lastIndexOf("}"));
}public String outOrder() {String order = "\"out_trade_no\"";if (result.contains(order)) {String begin = result.substring(result.indexOf(order));
String ss = begin.split(",")[0];
String newS = ss.replace("\"", "")
.replace("}", "")
.replace(":", "")
.replace("out_trade_no", "");
try {return newS;
} catch (Exception e) {e.printStackTrace();
}
}
return "";
}/*** @return the resultStatus*/
public String getResultStatus() {return resultStatus;
}/*** @return the memo*/
public String getMemo() {return memo;
}/*** @return the result*/
public String getResult() {return result;
}}

最后给下支付返回码表

AliPayResultStatus.class

public class AliPayResultStatus {/*** 订单支付成功,唯一肯定是支付成功的*/
public static final String PAY_SUCCESS = "9000";
/*** 正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态*/
public static final String PAY_PROCESSING = "8000";
/*** 订单支付失败*/
public static final String PAY_FAIL = "4000";
/*** 重复请求*/
public static final String PAY_REPEAT = "5000";
/*** 用户中途取消*/
public static final String PAY_PROCESS_CANCEL = "6001";
/*** 网络连接出错*/
public static final String PAY_NET_ERROR = "6002";
/*** 支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态*/
public static final String PAY_UNKNOWN = "6004";}

还有一个直接弃用沙箱调试模式,否则提示支付失败也有可能不知道错在那,怕金额大,和接口商量,测试服务器就用0.01测试。

如接入过程中有问题可加群142739277或者我的QQ:893151960

接入支付宝支付SDK相关推荐

  1. Android 接入支付宝支付实现

    接上篇android接入微信支付文章,这篇我们带你来接入支付宝支付服务 简介 首先要说明的是个人感觉接入支付宝比微信简单多了,很轻松的,所以同学们不要紧张~ 当然还是老规矩啦,上来肯定的贴上官网地址, ...

  2. Android接入支付宝支付实现

    接上篇android接入微信支付文章,这篇我们带你来接入支付宝支付服务 简介 首先要说明的是个人感觉接入支付宝比微信简单多了,很轻松的,所以同学们不要紧张~ 当然还是老规矩啦,上来肯定的贴上官网地址, ...

  3. 2021-02-11-JavaWeb网站接入支付宝支付

    JavaWeb网站接入支付宝支付 前言 前序步骤 接入 pom.xml 在沙箱环境获取测试账号,以及付钱的账号 公钥私钥的生成可以下面这个工具 Controller层 模拟付款 前言 今天给大家分享一 ...

  4. 网站接入支付宝支付之扫码支付

    接入支付宝支付需要在支付宝开发平台创建应用获取appid,创建后需要审核,所以我们用支付宝提提供的沙箱环境开发测试. 首先登录支付宝开放平台,在开发者中心选择研发服务->沙箱环境->沙箱应 ...

  5. 从零开发商城系统 如何接入支付宝支付

    文章目录 接入支付流程 1.登录开放平台 2.选择服务范围 3.创建应用 4.添加应用功能 5.配置应用环境 6.获取APPID 7.商家绑定应用 8.配置秘钥 9.一站式开发套件(Idea插件) 1 ...

  6. PHP 支付PC端扫码支付、APP接口调起支付宝支付、微信公众号接入支付宝支付

    第一:第三方支付原理 第二:支付接口申请流程 地址:https://docs.open.alipay.com/270/105899/ : 参考地址:https://blog.csdn.net/nove ...

  7. Java接入支付宝支付测试买iPhone13 pro max

    Java接入支付宝支付 一.介绍 二.沙箱 三.支付流程 四.准备支付宝 五.代码 1.前端代码 2.后端代码 六.测试 一.介绍 支付宝官方网站 支付宝(中国)网络技术有限公司是国内的第三方支付平台 ...

  8. SpringBoot 接入支付宝支付-证书模式

    SpringBoot 接入支付宝支付-证书模式 满足一下条件 1.注册支付宝商户,实名认证,获取APPID 2.申请支付宝公钥证书 3.有些复杂具体还是按照官方引导进行操作 产品大全 https:// ...

  9. Java接入支付宝支付超级详细教程——从入门到精通

    ​ Java接入支付宝支付教程 源码下载 源码获取:点击获取源码 本文介绍了"二维码付款"的代码.其他支付方式的代码都在源码中. 一.创建应用 1.登录支付宝开放平台 支付宝开放平 ...

  10. Java接入支付宝支付教程

    Java接入支付宝支付教程 一.创建应用 1.登录支付宝开放平台 支付宝开放平台网址:https://open.alipay.com/platform/developerIndex.htm 2.创建一 ...

最新文章

  1. 从DataView中生成Excel报表的方案(C#)
  2. mysql的count报错_mysql的floor()报错注入方法详细分析
  3. 有服务器风扇声音对胎儿有影响吗,大噪音对胎儿的影响
  4. java匿名内部类的使用场景_java匿名内部类的使用场景
  5. 《重构-改善既有代码的设计》-第1例:租赁影片(2)
  6. vs code格式化代码
  7. 明小子动力上传拿webshell(1).zip
  8. 又要辞职了,又要换工作了
  9. Android ViewGroup
  10. 报错:undefined reference to `requestVerifyCode(char*)‘解决
  11. matlab 多项式提取,matlab提取多项式系数
  12. idea展现目录清晰方式
  13. 周报、月报有多折磨人?万能报表模板建议收藏!(附模板)
  14. 股票交易费的计算---沪A版
  15. ai智能写作软件哪个好-ai智能写作免费
  16. 判断模式分解是否为无损连接的方法
  17. 隐马尔可夫模型之Baum-Welch算法详解
  18. 某个偏锥面跟平面的交线
  19. 封禁、下架!微信出手了,规范整治数字藏品平台!
  20. 用户的认证及授权,文件权限

热门文章

  1. 书单|阿里、百度大咖联合强推的2018年必读好书清单
  2. 删除xx天之前的文件夹python
  3. 微信小程序 | 微信公众平台SpringBoot开发实例 │ 表情消息
  4. flac转换成mp3,flac转mp3方法
  5. c语言静态变量总结,c语言什么是静态变量
  6. V$LOGMNR_CONTENTS字段含义
  7. php file_put_contents 保存不了,php file_put_contents不能写入问题
  8. 大数据与云计算、物联网三者的区别和关联
  9. 离散数学 --- 特殊关系 --- 等价关系与集合的划分
  10. opencv物体识别-识别水果