支付宝付款
登陆
蚂蚁金服提供了支付的测试环境和测试商家卖家账号和卖家账号,也提供了一套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接口,个人网站开发人员要想实现收款接口只能想办法搞到企业资质申请官方的支付接口。。。(白瞎和)
相关阅读
predicate 英 [ˈpredɪkət] 美 ['predɪkət] vt.断言,断定;宣布,宣讲;使基于vi.断言,断定n.谓语;述语adj. 谓语的;述语的 上
现在的年轻人出差或者是外出旅游都喜欢用支付宝租房,不仅方便还实惠。那么接下来小编就为大家带来这方面的知识。主题是如何加入支
随着网络的发展,网购越来越多,付款都是支付宝绑定银行卡,有时候担心资金问题想要取消,很多人疑问用手机能取消支付宝快捷支付吗?很多
春节还有不到19天就要到来了,这是中国最热闹也是大家最为喜欢的一个节日了,那么不用小编来提醒大家也都知道每当春节的时候总是要苦
一月已经过半了,我们心心念念的春节也就快要到了,那么在这个过节的氛围如此浓厚的时候呢,支付宝也跟紧了步伐推出了年年有余的活动。