java第三方支付--支付宝
来源:互联网 发布:淘宝千牛包邮怎么设置 编辑:程序博客网 时间:2024/05/19 13:55
首先将支付宝的jar包导入到maven工程中,具体操作请参考 maven导入集中仓储中没有的jar包到本地仓储。
然后代码如下,与支付宝官方给出的demo基本相同,重点在于
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", BasePayConstants.ALIPAY_PARTNER, BasePayConstants.RSA_PRIVATE_KEY, "json", BasePayConstants.ALIPAY_CHARSET, BasePayConstants.RSA_PUBLIC_KEY, "RSA2");
这段代码中的参数。
1、https://openapi.alipay.com/gateway.do 为固定字段,参考支付宝开发者文档即可。
2、BasePayConstants.ALIPAY_PARTNER 为合作商户ID,这个可以在支付宝商户信息中查询支付宝地址
3、BasePayConstants.RSA_PRIVATE_KEY 这是用户私钥,java代码是pkcs8格式的,一定要在支付宝中的应用公钥来校验一下,具体如何生成请参考(支付宝如何生成商户公钥与私钥)。
4、BasePayConstants.RSA_PUBLIC_KEY 只是支付宝公钥,在商户信息中可以查询。
下面代码执行成功后:
alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2017052007295052&biz_content=%7B%22body%22%3A%22%5C%5Cu5728%5C%5Cu7ebf%5C%5Cu652f%5C%5Cu4ed8%5C%5Cu9ad8%5C%5Cu901f%5C%5Cu901a%5C%5Cu884c%5C%5Cu8d39%22%2C%22out_trade_no%22%3A%22com.sddg.appapi.server.escrow.MakeOrderNum%4034f2336f%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22subject%22%3A%22%5C%5Cu652f%5C%5Cu4ed8%5C%5Cu8f66%5C%5Cu8d39%22%2C%22timeout_express%22%3A%2290m%22%2C%22total_amount%22%3A%220.1%22%7D&charset=utf-8&format=json&method=alipay.trade.app.pay¬ify_url=http%3A%2F%2Fn52prx.natappfree.cc%2Falipay%2FtradeCallback&sign=gfpmKSNRVehKRsNavUXmqLoqoHUMve7Vx1Ew7xOuCVTVV%2FHEdYq8W3R01uNBouhznFAWWULA5B1XMTHJhuUCqKa1h2cvzdrBlYqog18oW0ewCgeS5Tnznat4HzrB4%2F%2BCc8qiDWW%2FrbvdSn0l1cHVcyvcTmTdf2jwyIYPsJ9BK1A4DW0c1vPKXaEoSHTJ1z4uCUKLdCV9OBK3pPsaF%2FPAKo8ZnoAlAw3Fi59vZLmMokIWbeVNBc1%2BohdNNM61tPdjES7PCW04uoBK6NBaiV1JPy0ynuDxIfRgdKJuB4pF6xuaUmGG5Ri6qMByLLvayy0oLN7WiLfKZrlb6EJsdaDiXw%3D%3D&sign_type=RSA2×tamp=2017-06-06+14%3A41%3A42&version=1.0
public class AliPayApi { /*支付宝支付支付动作流程: 1、请求参数按照key=value&key=value方式拼接的未签名原始字符串 2、再对原始字符串进行签名 3、对请求字符串的所有一级value(biz_content作为一个value)进行encode(编码格式按请求串中的charset为准) */ Logger logger = LoggerFactory.getLogger(getClass()); public String getTradeUrl(BigDecimal payMoney) throws AlipayApiException { MakeOrderNum makeOrderNum = new MakeOrderNum(); //支付宝SDK已经封装掉了公共参数,这里只需要传入业务参数 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", BasePayConstants.ALIPAY_PARTNER, BasePayConstants.RSA_PRIVATE_KEY, "json", BasePayConstants.ALIPAY_CHARSET, BasePayConstants.RSA_PUBLIC_KEY, "RSA2"); AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); //写入业务参数 AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); model.setBody(BasePayConstants.GOODS_INFO); //商品信息 model.setSubject(BasePayConstants.GOODS_NAME); //商品名称 model.setOutTradeNo(String.valueOf(makeOrderNum)); //商户订单号(自动生成) model.setTimeoutExpress(BasePayConstants.ALIPAY_TIMEOUT_EXPRESS); //交易超时时间 model.setTotalAmount(String.valueOf(payMoney)); //支付金额 model.setProductCode(BasePayConstants.ALIPAY_PRODUCT_CODE); //销售产品码 request.setBizModel(model); request.setNotifyUrl(BasePayConstants.ALIPAY_NOTIFY_URL + BasePayConstants.ALIPAY_FRONT_CALLBACK_URL); //回调地址 try { //这里和普通的接口调用不同,使用的是sdkExecute AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); System.out.println(response.getBody()); return response.getBody(); //就是orderString 可以直接给客户端请求,无需再做处理。 } catch (AlipayApiException e) { e.printStackTrace(); } return "error"; }}
- java第三方支付--支付宝
- 第三方支付宝支付
- 第三方支付宝支付
- iOS 第三方支付 支付宝支付
- 第三方支付之支付宝支付
- 第三方支付之支付宝支付
- 第三方支付支付宝支付
- java 支付宝 第三方即时到账支付 接口
- java 支付宝 第三方即时到账支付 接口
- java 支付宝 第三方即时到账支付 接口
- java 支付宝 第三方即时到账支付
- java 支付宝 第三方即时到账支付 接口
- java 支付宝 第三方即时到账支付 接口
- java 支付宝 第三方即时到账支付 接口
- Java后台调用第三方支付接口(易宝支付)
- Python&Java实现支付宝第三方支付接入
- iOS第三方支付(支付宝SDK)
- iOS第三方支付(支付宝)
- c++单例模式和简单工厂
- IOS Swift3.1 删除UIViewController
- ACdream 1038 Alien Numbers (模拟)
- 超级简单的自定义SwitchButton二
- char * ,char,string与NSString转化(objec-c与c++混编基础)
- java第三方支付--支付宝
- 一个网页 icon 的创意
- listview中checkbox使用
- Spring Cloud微服务
- CountDownLatch介绍
- 基于canvas的图像无机物检测
- 制作OpenSUSE13.2的openstack镜像
- 167. Two Sum II
- 获取手机通讯录