支付宝sdk

创建一个支付宝的util类

public class AlipayUtil {

public static final String APP_ID = "2016091100486489";//这个支付id为我的沙箱的app_id

private static final String APP_PRIVATE_KEY = "************";//支付宝的私钥

public static final String ALIPAY_PUBLIC_KEY = "***********";//这个为你在支付宝上的商户的公钥,而不是支付宝公钥

public static final String ALIPAY_ZHI_KEY ="**********";//这个是支付宝的公钥

public static final String SIGNTYPE = "RSA2";//算法

public static final String NOTIFYURL = "http://trivel.free.ngrok.cc/***";//支付宝回调的借口

private static AlipayClient alipayClient = null;

因为支付宝alipayClient本身是线程安全的,因此只用创建一个,创建成单例的模式

public static AlipayClient getAlipayClient() {

if (alipayClient == null) {

synchronized (AlipayUtil.class) {//AlipayConstants.CHARSET_UTF8

if (null == alipayClient) {//https://openapi.alipay.com/gateway.do https://openapi.alipaydev.com/gateway.do

alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID,

APP_PRIVATE_KEY, AlipayConstants.FORMAT_JSON,AlipayConstants.CHARSET_UTF8,

ALIPAY_ZHI_KEY,SIGNTYPE);

}

}

}

return alipayClient;

}

}

使用支付宝的sdk,给app端发送一个签名

public Map alipayTradeAppPay() throws AlipayApiException, UnsupportedEncodingException{

AlipayTradeAppPayRequest aRequest = new AlipayTradeAppPayRequest();HashMapresult = new HashMap();

Map result = new HashMap();

AlipayTradeAppPayModel amodel = new AlipayTradeAppPayModel();

amodel.setBody("测试数据");

amodel.setSubject("名称");

amodel.setGoodsType("1");//0虚拟产品1实物

amodel.setOutTradeNo("产品的订单号");

amodel.setProductCode("QUICK_MSECURITY_PAY");

amodel.setTotalAmount("总钱数,注意应为double类型");

amodel.setTimeoutExpress("30m");//支付宝支付的时间设置

aRequest.setBizModel(amodel);

aRequest.setNotifyUrl(AlipayUtil.NOTIFYURL);//设置回调的接口

AlipayTradeAppPayResponse  aResponse = AlipayUtil.getAlipayClient().sdkExecute(aRequest);

if(aResponse.isSuccess()){

result.put("result", aResponse.getBody());

result.put("status", "0");

result.put("msg","订单生成成功");

} else {

result.put("status", "1");

result.put("msg", "订单生成失败");

}

return result;

}

给APP端返回的result,app端不用再去编码,因为其已经是编码过得,否则会起吊客户端支付宝失败

支付宝回调的接口,当支付完成时,支付宝会回调这个接口,并进行签名的认证

public String alipayTradeNotifyUrl(HttpServletRequest request,HttpServletResponse response){

Mapparams = new HashMap();

//1.从支付宝回调的request域中取值

MaprequestParams = request.getParameterMap();

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

String name = iter.next();

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

String valueStr = "";

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

valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";

}

// 乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化

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

params.put(name, valueStr);

}

//2.封装必须参数

String tradeStatus = request.getParameter("trade_status");  //交易状态

//3.签名验证(对支付宝返回的数据验证,确定是支付宝返回的)

boolean signVerified = false;

try {

//3.1调用SDK验证签名

signVerified = AlipaySignature.rsaCheckV1(params,AlipayUtil.ALIPAY_ZHI_KEY, AlipayConstants.CHARSET_UTF8,     AlipayUtil.SIGNTYPE);

} catch (AlipayApiException e) {

e.printStackTrace();

}

//4.对验签进行处理

if (signVerified) {    //验签通过

if(tradeStatus.equals("TRADE_SUCCESS")) {

System.err.println("验签失败1");

//只处理支付成功的订单: 修改交易表状态,支付成功

return "success";

}else{

return "fail";

}

} else {  //验签不通过

return "fail";

}

}

支付宝sdk java对接_java后台支付宝app支付调用sdk进行支付相关推荐

  1. java充值_Java实现支付宝充值

    支付宝SDK依赖 com.alipay.sdk alipay-sdk-java 3.3.4.ALL 支付宝参数配置类 @Component @Configuration public class Al ...

  2. 海康设备网络SDK java对接

    一.开发环境:Linux64(ubuntu环境) 二.SDK版本:CH-HCNetSDKV6.1.4.17_build20200331_Linux64(官网下载sdk) 三.开发环境准备:安装 jdk ...

  3. mq java 开发_Java后台开发ActiveMQ使用指南

    ActiveMQ简单的介绍 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线,是一个开放源代码消息中间件,对于消息的传递有两种类型:点对点的,即一个生产者和一个消费者一一对应. ...

  4. 微信接口java解密_java使用AES-256-ECB(PKCS7Padding)解密——微信支付退款通知接口指定解密方式...

    1.场景 在做微信支付退款通知接口时,微信对通知的内容做了加密,并且指定用 AES256 解密,官方指定的解密方式如下: 2.导包 org.bouncycastle bcprov-jdk15on 1. ...

  5. Java对接微信支付实现微信APP支付

    Java对接微信实现微信APP支付 之前对接过第三方的支付方式,也有接入微信jsapi的支付方式,这次项目需求要求对接微信APP支付,找了很多,几乎都没有最新版的微信支付v3的对接相关的详细博客,真的 ...

  6. 微信支付,JSAPI支付,APP支付,H5支付,Native支付,小程序支付功能详情以及回调处理

    一.支付相关文档地址 支付wiki:https://pay.weixin.qq.com/wiki/doc/apiv3/index.shtml 支付api: https://pay.weixin.qq. ...

  7. JAVA对接微信支付和支付宝支付(APP端支付)

    本文主要介绍的是JAVA对接支付宝和微信支付,废话少说上代码(部分业务代码就不上了,例如订单等,根据业务需求自行修改): 用到的工具类: maven依赖: <!-- https://mvnrep ...

  8. java实现阿里支付接口_Java后台使用支付宝进行支付实现---使用阿里提供的对应服务的支付宝接口...

    [支付宝相关资源下载地址:支付宝开放平台  在移动支付功能处下载. 一.使用官方的Demo 需要配置基本信息: 打开"APViewController.m"文件,对以下三个参数进行 ...

  9. java支付宝对账功能开发_java后台实现支付宝对账功能

    完成支付宝支付.查询的接口之后,我们应该还需要定时与支付宝进行对账,以确保商户系统的订单信息是正确的,想知道支付宝支付.查询接口实现过程的亲们,可移步到上一篇有详细过程. 现在我们来讲一下支付宝对账的 ...

最新文章

  1. 预、自训练之争:谷歌说预训练虽火,但在标注数据上自训练更有效
  2. Redis 分布式缓存 Java 框架
  3. 玖富(NASDAQ:JFU) :2019年Q4机构资金占比增至79.8%,科技赋能业务成果显著
  4. 三点到六点是几个小时_环卫工在10吨垃圾里找了6小时,终于找到这张价值19万元的餐巾纸...
  5. 前端常见知识点四之webscoket
  6. git base , 版本合并:git的分支与合并的两种方法 - 方法1:git merge
  7. [PHP] 日期与时间
  8. java的class文件魔数和版本对应关系
  9. [转载]MySQL事务隔离级别
  10. 使用Palette来对图片进行颜色提取
  11. 《多媒体技术与应用》知识点整理
  12. 【读书笔记——开关电源】《精通开关电源设计》(1)
  13. dependency报错
  14. C++ socket编程实例
  15. 定时任务cron表达式详解
  16. 互联网晚报 | 7月6日 星期三 |​ 微信内测一个手机可注册俩号;度小满回应村镇银行储户存款变理财;市监局回应钟薛高雪糕烧不化...
  17. 网络计划的自由时间和松弛时间free and slack
  18. windows2003下ISA防火墙的安装及简单配置
  19. cpu flags 一致性检查
  20. C#中推荐使用Environment.NewLine

热门文章

  1. 如何优雅处理前端异常?
  2. 解决“Cannot merge new index 67208 into a non-jumbo instruction”的问题
  3. tcp连接时,BROKEN PIPE错误的原因以及解决方法
  4. 使用HttpClient MultipartEntityBuilder 上传文件,并解决中文文件名乱码问题
  5. 字符串标志“ u”和“ r”到底是做什么的,什么是原始字符串文字?
  6. 计算机模块的概念,用户定义类模块概念-计算机二级-Access
  7. 教你win7显卡驱动如何安装,win7电脑显卡驱动的安装方法
  8. Android 8.0系统源码分析--开篇
  9. (转)MTK 消息分发及窗口管理
  10. 移动机器人速度空间对比分析