支付宝支付

yml文件

alipay:
    gatewayUrl: https://openapi.alipaydev.com/gateway.do
    appid: 2016100100637579
    privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCEbvTDkcm/WZIfrCR6HKV+j4rXqGFeSud2ta1Cj7L34AO+YZ+ZEhFlj8BqhKL7209YeTsQf20fKG0EiIYtdV3e0Vzd/+8PxGgt3HL4Kv/Ilc2hPsJdaiVZxTuWxyOZkuizz2N5W/tTlTGM+h8dfAy2Z2PIT4Bba62LkB5kK42w//3eQs7BPRlpUmTxSznpYJcF70/P1HsBxHniE7APK/ZgY1TPxta+38gfcLl1F1PzmfB333lYZXDKNRHZVWQfOsBIKaSRablE+gtm17GkAIp0SEse3HdVBRvH5KtQXRovmoX7ra0PW8W5E6rAFF3W99a6N1/PhQ7eiPbHpY/MtB/1AgMBAAECggEAQ5RnXMExhW7MzVLHznR90yamwEQRY8+va/lrr7KqrijnYChrC+6XaA9CLlj+3qzcQZajmFieM68qaozMg7gHreOCk1q+AHrGetiq5o7ytcYUB7uB7a9z3epy7Q8z0HOSQeeLqGtSxiU1Au7EIASkbBQ4bAh9xKkfB0AE8jLzfCV50LpLEJH7pLabSvf+ldo6jqoWudFeOosqjzdqs1GuWKrspYp9NLIHRthVpT5iEpdcs5WtZjCB0G6eugJQA+iWnSS47Lsz92v3i/EEX2oVyyoSO6zG24tpKOfjFLMHuMK7pbQ7u/x+rEe6ftWNE2pnYDhLWTPFdfHwMA0qSvgtxQKBgQC7ccBVf+rLnjXbe3lBXnVS9bxFPbMJkPvbES0mHoJ6/v+wTtOkf+tuyWmxRoXxfL/rJ6hNSiDXBA/BsS/WdgJRfKkTjPnDdBPOTe/pgAs0UqHnKm2AlNsD807LzpOP+C+z3uCLK9eorYtrKv+K2/E9BS5ScYkpqr1hthRGxBUVKwKBgQC03pS1gdvf5UInFXOXJNni5NR0lUS1YLKobXMJNBM4ca016y624xw3KIPRJ5gaZussRtnMfINqg33weXan7EmNeEbHnZv2YLAcmHvgimwVgfDgXOIiV6S9pYfrH1xdG7YEvup4TWFi29MHrMfBkuLQ1RauXAITSVcqtnMVm4tPXwKBgB1/G/4YYBFktyLvvjgMLjg81UCsIeVqfEeP32P1PyEtyXysGt/zBVBsv4YXC/LhZ64Qkop/FMXhLL2VLWr5LQo3rL+X2qHoPUmkuBEthhXYvwOKiKrIQeLQQeEOg+gO7SrH8tvTrV8s2BioLohibgblLtHobeYxqRWcOnqcVpj7AoGBAIdL+PHNsixJ0rJp2Y22g0a25jZPcpY7P2m+dc7spXQTlP5AbzFfsjuQkwpiE+WsFz+HwGS2v5dtxUedlKUIm/y3fDrWK1Sh/xtk9UWCRlfQW995m68U4Kb8rC+1xeHgWMg0CDD1sWPCDJoxJTwoJIMS42SKbwL+WbYZxPzk3dEBAoGAfOvJWI7JHHEfI7k+Tk2rCUEO0eHE5LPXLub5N6KtYYmyAhAcGTCbgU1Sj6ROXab9G6jAdzktSI1QFy003uNHTnbwbvHwTkottDsE+3h9LMFdmS1qrkLvP50kZlpqgqIyY1W6hvIRUThkPzrF4Q69+tuiHrlN5LBukHXIWI0wsW0=
    alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhG70w5HJv1mSH6wkehylfo+K16hhXkrndrWtQo+y9+ADvmGfmRIRZY/AaoSi+9tPWHk7EH9tHyhtBIiGLXVd3tFc3f/vD8RoLdxy+Cr/yJXNoT7CXWolWcU7lscjmZLos89jeVv7U5UxjPofHXwMtmdjyE+AW2uti5AeZCuNsP/93kLOwT0ZaVJk8Us56WCXBe9Pz9R7AcR54hOwDyv2YGNUz8bWvt/IH3C5dRdT85nwd995WGVwyjUR2VVkHzrASCmkkWm5RPoLZtexpACKdEhLHtx3VQUbx+SrUF0aL5qF+62tD1vFuROqwBRd1vfWujdfz4UO3oj2x6WPzLQf9QIDAQAB
    returnUrl: https://www.taobao.com/   #支付成功跳转的商家url
    notifyUrl: https://www.baidu.com/       #异常跳转页面
spring:
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html
    mode: HTML5
    encoding: UTF-8


pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.1.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.freesky</groupId>
	<artifactId>spring-boot-aplipay</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>spring-boot-aplipay</name>
	<description>Demo project for Spring Boot plipay</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
		<dependency>
			<groupId>com.alipay.sdk</groupId>
			<artifactId>alipay-sdk-java</artifactId>
			<version>3.4.27.ALL</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.8.1</version>
		</dependency>


		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

config配置

 

package com.freesky.config;


import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author: wll
 * @modifiedBy:
 * @date: Create In 11:04 2019/5/17
 * @description:
 */
@Configuration
@EnableConfigurationProperties(AlipayProperties.class)
public class AlipayConfig{

    @Autowired
    private AlipayProperties properties;


    /**
     * alipay-sdk-java
     * @return
     */
    @Bean
    public AlipayClient alipayClient(){




        return new DefaultAlipayClient(properties.getGatewayUrl(),
                properties.getAppid(),
                properties.getPrivateKey(),
                properties.getFormate(),
                properties.getCharset(),
                properties.getAlipayPublicKey(),
                properties.getSignType());
    }
}

  ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

package com.freesky.config;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.context.properties.ConfigurationProperties;

import javax.annotation.PostConstruct;
import java.util.logging.Logger;

/**
 * 支付宝支付的参数配置
 *
 * @author wll
 */
@Data
@Slf4j
@ConfigurationProperties(prefix = "alipay")
public class AlipayProperties {

	/** 支付宝gatewayUrl */
	private String gatewayUrl;
	/** 商户应用id */
	private String appid;
	/** RSA私钥,用于对商户请求报文加签 */
	private String privateKey;
	/** 支付宝RSA公钥,用于验签支付宝应答 */
	private String alipayPublicKey;
	/** 签名类型 */
	private String signType = "RSA2";

	/** 格式 */
	private String formate = "json";
	/** 编码 */
	private String charset = "UTF-8";

	/** 同步地址 */
	private String returnUrl;

	/** 异步地址 */
	private String notifyUrl;

	/** 最大查询次数 */
	private static int maxQueryRetry = 5;
	/** 查询间隔(毫秒) */
	private static long queryDuration = 5000;
	/** 最大撤销次数 */
	private static int maxCancelRetry = 3;
	/** 撤销间隔(毫秒) */
	private static long cancelDuration = 3000;

	public String getGatewayUrl() {
		return gatewayUrl;
	}

	public void setGatewayUrl(String gatewayUrl) {
		this.gatewayUrl = gatewayUrl;
	}

	public String getAppid() {
		return appid;
	}

	public void setAppid(String appid) {
		this.appid = appid;
	}

	public String getPrivateKey() {
		return privateKey;
	}

	public void setPrivateKey(String privateKey) {
		this.privateKey = privateKey;
	}

	public String getAlipayPublicKey() {
		return alipayPublicKey;
	}

	public void setAlipayPublicKey(String alipayPublicKey) {
		this.alipayPublicKey = alipayPublicKey;
	}

	public String getSignType() {
		return signType;
	}

	public void setSignType(String signType) {
		this.signType = signType;
	}

	public String getFormate() {
		return formate;
	}

	public void setFormate(String formate) {
		this.formate = formate;
	}

	public String getCharset() {
		return charset;
	}

	public void setCharset(String charset) {
		this.charset = charset;
	}

	public String getReturnUrl() {
		return returnUrl;
	}

	public void setReturnUrl(String returnUrl) {
		this.returnUrl = returnUrl;
	}

	public String getNotifyUrl() {
		return notifyUrl;
	}

	public void setNotifyUrl(String notifyUrl) {
		this.notifyUrl = notifyUrl;
	}

	public static int getMaxQueryRetry() {
		return maxQueryRetry;
	}

	public static void setMaxQueryRetry(int maxQueryRetry) {
		AlipayProperties.maxQueryRetry = maxQueryRetry;
	}

	public static long getQueryDuration() {
		return queryDuration;
	}

	public static void setQueryDuration(long queryDuration) {
		AlipayProperties.queryDuration = queryDuration;
	}

	public static int getMaxCancelRetry() {
		return maxCancelRetry;
	}

	public static void setMaxCancelRetry(int maxCancelRetry) {
		AlipayProperties.maxCancelRetry = maxCancelRetry;
	}

	public static long getCancelDuration() {
		return cancelDuration;
	}

	public static void setCancelDuration(long cancelDuration) {
		AlipayProperties.cancelDuration = cancelDuration;
	}

	private AlipayProperties() {}

	/**
	 * PostContruct是spring框架的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。
	 */
/*	@PostConstruct
	public void init() {
		Logger log=new Logger("AlipayProperties");
		log.info(description());

	}*/

	public String description() {
		StringBuilder sb = new StringBuilder("\nConfigs{");
		sb.append("支付宝网关: ").append(gatewayUrl).append("\n");
		sb.append(", appid: ").append(appid).append("\n");
		sb.append(", 商户RSA私钥: ").append(getKeyDescription(privateKey)).append("\n");
		sb.append(", 支付宝RSA公钥: ").append(getKeyDescription(alipayPublicKey)).append("\n");
		sb.append(", 签名类型: ").append(signType).append("\n");

		sb.append(", 查询重试次数: ").append(maxQueryRetry).append("\n");
		sb.append(", 查询间隔(毫秒): ").append(queryDuration).append("\n");
		sb.append(", 撤销尝试次数: ").append(maxCancelRetry).append("\n");
		sb.append(", 撤销重试间隔(毫秒): ").append(cancelDuration).append("\n");
		sb.append("}");
		return sb.toString();
	}

	private String getKeyDescription(String key) {
		int showLength = 6;
		if (StringUtils.isNotEmpty(key) && key.length() > showLength) {
			return new StringBuilder(key.substring(0, showLength)).append("******")
					.append(key.substring(key.length() - showLength)).toString();
		}
		return null;
	}
}

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

controller

package com.freesky.controller;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayTradePagePayModel;
import com.alipay.api.domain.AlipayTradePayModel;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.request.AlipayTradePayRequest;
import com.alipay.api.response.AlipayTradePayResponse;
import com.freesky.config.AlipayProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;


import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.UUID;

/**
 * @author: wll
 * @modifiedBy:
 * @date: Create In 11:13 2019/5/17
 * @description:
 */
@Slf4j
@Controller
public class AlipayF2FPayController {
    @Autowired
    private AlipayClient alipayClient;

    @Autowired
    private AlipayProperties aliPayProperties;

    @Autowired
    private HttpServletResponse response;

    @PostMapping("alipay/page/gotoPayPage")
    public void gotoPayPage() throws AlipayApiException, IOException {
        // 订单模型
        String productCode = "FAST_INSTANT_TRADE_PAY";
        AlipayTradePagePayModel model = new AlipayTradePagePayModel();
        model.setOutTradeNo(UUID.randomUUID().toString());
        model.setSubject("支付测试");
        model.setTotalAmount("10");
        model.setBody("支付测试,共10元");
        model.setProductCode(productCode);

        AlipayTradePagePayRequest pagePayRequest = new AlipayTradePagePayRequest();
        pagePayRequest.setReturnUrl(aliPayProperties.getReturnUrl());
        pagePayRequest.setNotifyUrl(aliPayProperties.getNotifyUrl());
        pagePayRequest.setBizModel(model);

        // 调用SDK生成表单, 并直接将完整的表单html输出到页面
        String form = alipayClient.pageExecute(pagePayRequest).getBody();
        response.setContentType("text/html;charset=" + aliPayProperties.getCharset());
        response.getWriter().write(form);
        response.getWriter().flush();
        response.getWriter().close();
    }


    /**
     * 当面付-扫码付
     * <p>
     * 扫码支付,指用户打开支付宝钱包中的“扫一扫”功能,扫描商户针对每个订单实时生成的订单二维码,并在手机端确认支付。
     * <p>
     * 发起预下单请求,同步返回订单二维码
     * <p>
     * 适用场景:商家获取二维码展示在屏幕上,然后用户去扫描屏幕上的二维码
     *
     * @return
     * @throws AlipayApiException
     */
    @PostMapping("/alipay/f2fpay/precreate")
    public void precreate() throws Exception {
        AlipayTradePayRequest request = new AlipayTradePayRequest();
        AlipayTradePayModel model = new AlipayTradePayModel();
        request.setBizModel(model);

        model.setOutTradeNo(System.currentTimeMillis() + "");
        model.setSubject("Iphone6 16G");
        model.setTotalAmount("0.01");
        model.setAuthCode("xxxxx");//沙箱钱包中的付款码
        model.setScene("bar_code");

        AlipayTradePayResponse response = null;
        try {
            response = alipayClient.execute(request);
            System.out.println(response.getBody());
            System.out.println(response.getTradeNo());
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
    }
}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

html 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body style="font-size: 30px">

<form method="post" action="/alipay/page/gotoPayPage">
    <h3>支付测试</h3>
    <h3>价格:10</h3>
    <button style="width: 100%; height: 60px; alignment: center; background: #b49e8f" type="submit">去支付</button>
</form>

</body>
</html>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django是一个基于Python的开源Web框架,它提供了一套完整的开发工具和库,用于快速构建高效的Web应用程序。支付宝支付是指在Django中集成支付宝支付功能,使用户可以通过支付宝进行在线支付。 要在Django中实现支付宝支付,可以按照以下步骤进行操作: 1. 注册支付宝开发者账号并创建应用:首先,你需要在支付宝开放平台注册一个开发者账号,并创建一个应用。在创建应用时,你会获得一些必要的信息,如App ID、App Key等。 2. 安装支付宝SDK:使用pip命令安装支付宝SDK,可以在Django项目的虚拟环境中执行以下命令: ``` pip install alipay-sdk-python ``` 3. 配置支付宝参数:在Django项目的配置文件中,添加支付宝相关的配置参数,包括App ID、App Key、支付宝公钥、私钥等。 4. 创建支付视图:在Django项目中创建一个视图函数,用于处理用户发起支付请求的逻辑。在该视图函数中,你需要构建支付宝支付接口所需的参数,并将其传递给支付宝SDK进行处理。 5. 处理支付结果回调:支付宝支付完成后,会向你预先设置的回调URL发送异步通知,通知你支付结果。你需要在Django项目中创建一个接收支付结果回调的视图函数,用于处理支付宝发送的异步通知,并校验支付结果的有效性。 以上是实现Django支付宝支付的基本步骤。当然,具体的实现方式还会根据你的需求和业务逻辑有所不同。你可以参考支付宝开放平台提供的文档和示例代码,以及Django官方文档中关于视图函数和URL配置的内容,来更详细地了解和实现支付宝支付功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值