支付宝支付接口总结

版权声明:本文为原创文章,CSDN不再更新,博客已转移 => https://cglzwz.xyz | https://blog.csdn.net/chenbetter1996/article/details/84315824

登陆

蚂蚁金服提供了支付的测试环境和测试商家卖家账号和卖家账号,也提供了一套demo
登陆时使用自己真实线上的支付宝,服务可选择个人自研开发。

~> 开放平台-沙箱环境

沙箱配置

在这里插入图片描述

APPID和支付宝网关都是其自动生成提供的,不需要配置,沙箱只需要在在这里配置密钥。记得用私钥签名公钥验证下其正确性。

1.只能填写和修改应用公钥,支付宝公钥会自动对应生成,两个公钥是不一样的(仅仅头尾像而已)
2.配置AlipayConfig.java的公钥属性使用的是支付宝公钥
3.这个支付宝网关都是沙箱测试环境的,真实线上环境的网关没有 dev,线上的APPID 是另外的。在创建应用时才有 快速接入文档
在这里插入图片描述

买家和卖家的测试账号
在这里插入图片描述

测试可以下载其提供的沙箱支付宝(界面功能和真实线上支付宝几乎一样,就是网关和账号是测试的而已),这样测试给钱直接扫码方便。


Demo案例解析

以下是官方提供的样例中的AlipayConfig.java配置文件
package com.alipay.config;

import java.io.FileWriter;
import java.io.IOException;

/* *
 *类名:AlipayConfig
 *功能:基础配置类
 *详细:设置帐户有关信息及返回路径
 *修改日期:2017-04-05
 *说明:
 *以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
 *该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
 */

public class AlipayConfig {
	
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

	// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
	public static String app_id = "2016091900549628";
	
	// 商户私钥,您的PKCS8格式RSA2私钥
    public static String merchant_private_key = "应用公钥对应的私钥";
	
	// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
    public static String alipay_public_key = "支付宝公钥!!!!,不是应用公钥";
    
	/** 
	 * 1.服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
	 * 2.确实是必须外网可以访问,测试过了,基本是这沙箱的配置测试也需要这个可以外网访问,不然支付宝那边(猜测是网关那边处理的)异步返回找不到url。
	 * 3. 所谓异步通知,类似回调函数,就是其支付成功了会自动调用的一个页面,采用POST请求,可以获取支付订单参数,这里我改为自己写的一个测试Servlet(花生壳壳域名内网穿透)
	 */
	public static String notify_url = "http://170d491b26.iok.la/alipay.trade.page.pay-JAVA-UTF-8/PayServlet";
			

	// 支付成功后跳转到的页面,可以自定义,Get方式,可以获取到一些支付订单参数,!无需公网IP
	public static String return_url = "http://127.0.0.1:8080/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";


	// 签名方式
	public static String sign_type = "RSA2";
	
	// 字符编码格式
	public static String charset = "utf-8";
	
	// 支付宝网关,这里是测试网关,线上网关是"https://openapi.alipay.com/gateway.do",没有dev
	public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";
	
	// 以下是日志,可以暂时不管
	.....
}

return_url

return_url是支付成功后自动跳转到的你指定页面,测试过可以不用外网访问,GET方式,可以获取用户请求。return_url.jsp也是其提供的一个样例文件,源码就是输出一下几个交易参数到http。
如下图:

在这里插入图片描述

notify_url

1.notify_url是必须要外网可以访问的(我这里采用的是花生壳内网穿透)
2.如果支付成功了支付宝网关那边会自动调用的,这个响应的url需要返回一个 “success” / “fail” 可以参照其提供的return_url.jsp
3.以下是我写的那个测试的PayServlet作为notify_url

package controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import java.util.Map;

/**
 * 测试支付功能的处理接收的异步通知回调方法
 * 
 * @author chgl16
 * @date 2018-11-20
 * @version 1.0
 */
@WebServlet("/PayServlet")
public class PayServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("进入doPost"); 
		String total_amount = request.getParameter("total_amount");
		System.out.println("total_amount: " + total_amount);
		Map<String, String[]> map = request.getParameterMap();
		System.out.println("输出参数集合: " + map.toString());
		response.getWriter().write("success");
		System.out.println("结束了");
	}
}

运行测试

运行index.jsp,测试付款,其会自动生成订单号

在这里插入图片描述
点击付款按钮会跳转到其提供的alipy.trade.page.pay.jsp然后在到官方的支付界面
在这里插入图片描述
这时可以使用下载的支付沙箱版支付宝扫描付款或者登陆付款,登陆的都是测试的买家账号。支付成功会有几个跳转
在这里插入图片描述
最后跳转到return_url,如下
在这里插入图片描述
支付成功后,也自动调用了notify_url,就是我定义的PayServelt
在这里插入图片描述

上线

需要申请审核,以获取

=》开发者申请中心
在这里插入图片描述

需要设置一些上线选择,然后提交审核
在这里插入图片描述

申请成功后需要签约服务类型,比如移动端的可以唤醒支付宝APP支付,网页端的可以页面跳转支付。

然而签约需要营业执照。。。
个人网站站长无法申请到支付宝和微信支付API接口,个人网站开发人员要想实现收款接口只能想办法搞到企业资质申请官方的支付接口。。。(白瞎和)

没有更多推荐了,返回首页