支付宝app支付后端(java)
2018-01-05 14:23
423 查看
支付宝其实还是比较良心的。下载他们的sdk分分钟完成支付功能。
一个类搞定。
AliPay.java
//Map<String,Object> map 是前端传来的参数。解析出来然后放到AlipayTradeAppPayModel里然后在把model对象給request去请求支付宝
public String Pay(Map<String,Object> map) throws UnsupportedEncodingException{
String orderString = null;
//实例化客户端 AlipayClient这个类直接导入jar就可以用。
AlipayClient alipayClient = new DefaultAlipayClient(PaymaxConfig.ALI_APIURL, PaymaxConfig.ALI_APPID,PaymaxConfig.ALI_APP_PRIVATE_KEY, PaymaxConfig.ALI_FORMAT, PaymaxConfig.CHARSET, PaymaxConfig.ALI_ALIPAY_PUBLIC_KEY,PaymaxConfig.ALI_SIGN_TYPE);
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody((String)map.get("body"));
model.setSubject((String)map.get("subject"));
model.setOutTradeNo((String)map.get("order_no"));
model.setTimeoutExpress(PaymaxConfig.TIMEOUTEXPRESS);
model.setTotalAmount((String)map.get("amount"));
model.setProductCode("QUICK_MSECURITY_PAY");
Map metadata = (HashMap)map.get("metadata");
JSONObject json = new JSONObject();
json.put("userid", metadata.get("userid"));//userid和channel是用户自定义参数,如果自己的代码没有自定义参数可不必添加,如果有一定要进行URLEncoder.encode()进行编码。
json.put("channel", metadata.get("channel"));
String urlString = URLEncoder.encode(json.toString(), "UTF-8");//自定义参数编码,没有可不用。
model.setPassbackParams(urlString);
request.setBizModel(model);
request.setNotifyUrl(PaymaxConfig.ALI_NOTIFYURL);
try {
//这里和普通的接口调用不同,使用的是sdkExecute
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
orderString = response.getBody();//获取到getBody直接給前端。用这个东西去调起支付宝
} catch (AlipayApiException e) {
log.info("请求支付宝支付对象出现异常");
return "ERROR";
}
return orderString;
}支付代码我们就用这一个类就可以了 有一个辅助类。
PaymaxConfig.java
public class PaymaxConfig {
//编码集
public static final String CHARSET = "UTF-8";
/**支付宝接口url**/
public static final String ALI_APIURL = "https://openapi.alipay.com/gateway.do";
/**支付宝appid*/
public static final String ALI_APPID = "自己的appid";
/**支付宝APP_PRIVATE_KEY**/
public static final String ALI_APP_PRIVATE_KEY = "自己的应用秘钥";
/**FORMAT - JSON**/
public static final String ALI_FORMAT = "json";
/**支付宝公钥ALIPAY_PUBLIC_KEY*/
public static final String ALI_ALIPAY_PUBLIC_KEY = "支付宝公钥";
/**签名方式SIGN_TYPE*/自己的签名方式
public static final String ALI_SIGN_TYPE = "RSA";
/**支付宝订单超时时间**/
public static final String TIMEOUTEXPRESS = "30m";
/**支付宝异步通知地址**/
public static final String ALI_NOTIFYURL = "异步通知的地址";
/**提交方式**/
public static final String POST = "POST";
public static final String GET = "GET";
}SDK下载地址:https://openhome.alipay.com/doc/sdkDownload.resource?sdkType=JAVA
导入jar文件就可以用,是不是很良心。
一个类搞定。
AliPay.java
//Map<String,Object> map 是前端传来的参数。解析出来然后放到AlipayTradeAppPayModel里然后在把model对象給request去请求支付宝
public String Pay(Map<String,Object> map) throws UnsupportedEncodingException{
String orderString = null;
//实例化客户端 AlipayClient这个类直接导入jar就可以用。
AlipayClient alipayClient = new DefaultAlipayClient(PaymaxConfig.ALI_APIURL, PaymaxConfig.ALI_APPID,PaymaxConfig.ALI_APP_PRIVATE_KEY, PaymaxConfig.ALI_FORMAT, PaymaxConfig.CHARSET, PaymaxConfig.ALI_ALIPAY_PUBLIC_KEY,PaymaxConfig.ALI_SIGN_TYPE);
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody((String)map.get("body"));
model.setSubject((String)map.get("subject"));
model.setOutTradeNo((String)map.get("order_no"));
model.setTimeoutExpress(PaymaxConfig.TIMEOUTEXPRESS);
model.setTotalAmount((String)map.get("amount"));
model.setProductCode("QUICK_MSECURITY_PAY");
Map metadata = (HashMap)map.get("metadata");
JSONObject json = new JSONObject();
json.put("userid", metadata.get("userid"));//userid和channel是用户自定义参数,如果自己的代码没有自定义参数可不必添加,如果有一定要进行URLEncoder.encode()进行编码。
json.put("channel", metadata.get("channel"));
String urlString = URLEncoder.encode(json.toString(), "UTF-8");//自定义参数编码,没有可不用。
model.setPassbackParams(urlString);
request.setBizModel(model);
request.setNotifyUrl(PaymaxConfig.ALI_NOTIFYURL);
try {
//这里和普通的接口调用不同,使用的是sdkExecute
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
orderString = response.getBody();//获取到getBody直接給前端。用这个东西去调起支付宝
} catch (AlipayApiException e) {
log.info("请求支付宝支付对象出现异常");
return "ERROR";
}
return orderString;
}支付代码我们就用这一个类就可以了 有一个辅助类。
PaymaxConfig.java
public class PaymaxConfig {
//编码集
public static final String CHARSET = "UTF-8";
/**支付宝接口url**/
public static final String ALI_APIURL = "https://openapi.alipay.com/gateway.do";
/**支付宝appid*/
public static final String ALI_APPID = "自己的appid";
/**支付宝APP_PRIVATE_KEY**/
public static final String ALI_APP_PRIVATE_KEY = "自己的应用秘钥";
/**FORMAT - JSON**/
public static final String ALI_FORMAT = "json";
/**支付宝公钥ALIPAY_PUBLIC_KEY*/
public static final String ALI_ALIPAY_PUBLIC_KEY = "支付宝公钥";
/**签名方式SIGN_TYPE*/自己的签名方式
public static final String ALI_SIGN_TYPE = "RSA";
/**支付宝订单超时时间**/
public static final String TIMEOUTEXPRESS = "30m";
/**支付宝异步通知地址**/
public static final String ALI_NOTIFYURL = "异步通知的地址";
/**提交方式**/
public static final String POST = "POST";
public static final String GET = "GET";
}SDK下载地址:https://openhome.alipay.com/doc/sdkDownload.resource?sdkType=JAVA
导入jar文件就可以用,是不是很良心。
相关文章推荐
- 支付宝APP支付后端 -java
- 支付宝app支付java后台流程
- 支付宝APP支付(Java后台生成签名具体步骤)
- java支付宝app支付代码
- 微信APP支付Java后端回调处理
- java服务端–支付宝APP支付接口
- Java服务端接入支付宝APP支付及微信APP支付
- 支付宝APP支付(Java后台生成签名具体步骤)
- java后台实现支付宝支付接口和支付宝订单查询接口(前端为APP)
- 手把手教你完成App支付JAVA后台-支付宝支付JAVA
- java后台实现支付宝支付接口、支付宝订单查询接口 前端为APP
- java支付宝和微信app支付(服务端处理)
- 支付宝APP支付集成,服务端(JAVA)
- 支付宝支付(网站支付,APP支付,扫码支付) Java服务端代码
- android 集成支付宝app支付(原生态)-包括android前端与java后台
- 支付宝官网下载App支付服务端DEMO&S(Java、.net、php 4000 )
- Android前端 Java后端 集成支付宝支付
- 支付宝APP支付Java回调具体步骤
- 微信APP支付Java后端回调处理
- java服务端–支付宝APP支付接口