700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java H5支付宝付款接口_H5页面调用支付宝支付功能

Java H5支付宝付款接口_H5页面调用支付宝支付功能

时间:2020-11-01 19:01:39

相关推荐

Java H5支付宝付款接口_H5页面调用支付宝支付功能

H5页面调用支付宝支付功能

粘贴核心代码

使用SpringMVC 将 返回的htm代码 输出到页面

本文中测 AppIdAPP_PRIVATE_KEY ALIPAY_PUBLIC_KEY 替换成自己的 信息

/**

*

*/

package cn.superjava.alipay;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import com.alipay.api.AlipayApiException;

import com.alipay.api.AlipayClient;

import com.alipay.api.DefaultAlipayClient;

import com.alipay.api.request.AlipayOpenPublicTemplateMessageIndustryModifyRequest;

import com.alipay.api.request.AlipayTradeWapPayRequest;

import com.alipay.api.response.AlipayOpenPublicTemplateMessageIndustryModifyResponse;

/**

* @description: H5 支付宝支付

* @author SuperJava

* @createTime 3月20日

* @version 1.0

*/

@Controller

public class AliPayController {

/**

* 支付宝开发文档

* /signing/productDetail.htm?productId=I1011000290000001001

* {---如果使用的老接口--}

* {---https://doc./doc2/detail?treeId=60&articleId=103564&docType=1--}

*

* 支付宝 服务端SDK下载 (支持java .net php)

* https://doc./doc2/detail?treeId=54&articleId=103419&docType=1

*

* 支付宝H5开发 SDK集成

* https://doc./docs/doc.htm?treeId=203&articleId=105285&docType=1

*

* 创建APPID 生成 公钥 私钥

*

*/

/**

* 以下静态常量 除了(URL) 修改为自己的商户信息

*/

// 支付宝网关(固定)

public static final String URL = "/gateway.do";

// APPID即创建应用后生成

public static final String APP_ID = "032401238";

// 开发者应用私钥,由开发者自己生成

public static final String APP_PRIVATE_KEY = "MIIEvgIBADANBgkqhkiG9w0BeMWy5FZHMcGysEK5mqWavCqs9qOvKDs/2CxB2o9q8INsih6yldNwsWjC2Y9akfOa3CcJGJ5TLcELEb4rb3tbwayAXM9yx9uRbAbcr2TSNPO2deU6ttvNeMrGZpXItCnihoxTDlu/QUCYQu9eCRiw4OBDUQ87LEIR3bwKIdfWLMsgcDvlSiwdUinG1ZckoBbT1MJ64KfuchOrWLc98QUXpKYJ+udyvDUykEzMU1RG5JbsjwFbYpMH2aHP1tqeALejLWYjxZ0ceff0wBYJ9nvPOVkLkyA74SRfUmlESMaQkymrU6F/DlwSPH05HFRQKDJx1wYigFAgMBAAECggEBAKyo/UKFHzqOxlL0ESbZvfRLCQAzhiqeOuj4x1xl/5XoxMG8BHgAa36glwG3Czyp1aYmGOBqQNfvbTxbMU8dBRX+7Y9ZdON2W20xclDTHgL24YT2MVYZ7EzDedjCtVRDH7Dj4jkoM1vmN6Ly1WTJ+jhqk/Tu4JVPRCef/xIwgnnmUYX6Dx2UjSYNAiEPltiOVKCyShk1Bu0fuuphq+gKnw7Tm1VT2srcjpLcc89Y1ikJvw+6ybH7aA7T4lCaGUgBnkmdSgwqunKBNlSNHW3cCdgJL6no2kWN6OxGhGfj7taC+OcbGtfdrrAWBV92z1dMlvko3ZEl2SWTgLrK3nDLz2ECgYEA+tk1fvy3vPDoHqM15pVWR0GWwoHveTF0/hN+kb9o7X+xkQwbkhZ+2HKLKQyjQzB7b3FRsG33blGjUWXVMdeQa4enBAhHm9uzTmgMmLBcoWJ9AiuHuXQIaPR4+N15ZSK58qHBycT7kc53/2mo3BZj3C8NwU2WvKwYZQpWYVC0Nx0CgYEAs/OBwR/D3exgQb+Qds4iji3mMBL1Sy0nIaCYUocO8mrm06Ot9b/inCFnG6eihhieIuCQo2sYXba7HzmMyxQvTokXwGuaDRHUtIFNdxA/M+yj0Z6mTrKqvmLVC2V6ImVsl0nF4k+VQ+kVBOVuVR2sCZ3eVWu1DeQgh9NEuncvmAkCgYEA70cWImWKFm5t3BuvJJ46yIml9y/ecGpewKVzzC8bNcDibgtwmS9gG7NXTvbBHSw38hvT4kljBhZVhSVv8bVAC3JAPDZxqBgvt5DEwzkngsHhoJpJQvuNsh/Q7QLF81Tmrqzhn0eI+JJMIJR3AElTRAqWQldye9JlCqyLrRRAc3kCgYAUttsg1/879JG//8UpZ+EibLYqooQJ+1Cd1layaUmXLicUBatotoXnYxDzZgCXXw4VBbSgmxta7kXr+jvyxIgNikppo/k/t+W8QYYhRoV//KV+47xRIs/0ynurrCq6+uHdKGjW/EI6ZwI8ZgylT50WHk4RlyxoRPJZsEAhFscrwQKBgHpZLw5pYg8AeG/P5gqZraMoEb75ULiSuolT3DLX+pzJf2bne40SAHTaxhAVG0pBz9b45sOXJz9+eLi6UzyDHWZCL+cCMSC7TA3Q4AxHy+1LNzh6abLk1QjC3yLLZFyUAqEvTHpnizikD+5viC7LdGT96jVCI4H0ywvk2USd46Mw";

// 支付宝公钥,由支付宝生成

public static final String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQuRWRzHBsrBCuZqlmrwqrPajryg7P9gsQdqPavCDbIoespXTcLFowtmPWpHzmtwnCRieUy3BCxG+K297W8GsgFzPcsfbkWwG3K9k0jTztnXlOrbbzXjKxmaVyLQp4oaMUw5bv0FAmELvXgkYsODgQ1EPOyxCEd28CiHX1izLIHA75UosHVIpxtWXJKAW09TCeuCn7nITq1i3PfEFF6SmCfrncrw1MpBMzFNURuSW7I8BW2KTB9mhz9bangC3oy1mI8WdHHn39MAWCfZ7zzlZC5MgO+EkX1JpREjGkJMpq1Ohfw5cEjx9ORxUUCgycdcGIoBQIDAQAB";

// 请求编码

public static final String CHARSET = "UTF-8";

/**

* @description: 调用支付宝接口 使用SDK快速接入

* @author SuperJava

* @createTime 3月20日

* @version 1.0

* @return

*/

@RequestMapping("AliPay")

public String AliPay(HttpServletRequest req) throws Exception{

/**

* 实例化客户端 在使用SDK调用具体API前,进行初始化

*/

AlipayClient alipayClient = new DefaultAlipayClient("/gateway.do", APP_ID,

APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");

/**

* 实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:

* alipay.open.public.template.message.industry.modify

* alipayClient只需要初始化一次,后续调用不同的API都可以使用同一个alipayClient对象。

*/

AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();

//在公共参数中设置回跳和通知地址

alipayRequest.setReturnUrl(".com");

alipayRequest.setNotifyUrl(".com/notify");

/**

* SDK已经封装掉了公共参数,这里只需要传入业务参数

* 此次只是参数展示,未进行字符串转义,实际情况下请转义 (此处模拟请求参数,生产环境需要自己嵌套订单信息)

*/

alipayRequest.setBizContent(" {" +

" \"primary_industry_name\":\"购买理财服务\"," +

" \"primary_industry_code\":\"10001/2\"," +

" \"secondary_industry_code\":\"10001/2\"," +

" \"secondary_industry_name\":\"IT科技/IT软件与服务\"" +

" }");

/**

* 手机网站支付alipay.trade.wap.pay:

* 对于页面跳转类API,SDK不会也无法像系统调用类API一样自动请求支付宝并获得结果,

* 而是在接受request请求对象后,为开发者生成前台页面请求需要的完整form表单的html(包含自动提交脚本),

* 商户直接将这个表单的String打印到页面即可

*/

String form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单

req.setAttribute("aliPayForm", form);

return "itemShow";

}

}

代码中的ReturnUrl 和NotifyUrl

ReturnUrl

支付宝支付成功页面的跳转

NotifyUrl

支付宝支付成功 通知的商户接口

注意事项:

我看到有的开发人员 将处理业务功能放在 ReturnUrl 做同步处理 那样NotifyUrl 不需要传 也是可以的

简单的Demo 记录一下

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。