- 用户通过支付宝PC收银台完成支付,交易款项即时给到商户支付宝账户。【电脑网站支付官方文档】
- 本篇文章只讲解最简支付过程及必须参数配置,如需添加额外功能及具体请求参数可参考【PC场景下单并支付】。
- 官方Demo与SDK下载地址:【SDK与Demo】
以下代码以Java语言为例:
代码:
public class AlipayConfig {
// 创建应用所得到的APPID,收款方支付宝账户对应此参数(15位数字)
public static String app_id = "2018*******6673";
// 商户私钥,您的PKCS8格式RSA2私钥,即为创建应用中配置参数时使用密钥生成工具所生成的商户应用私钥
public static String merchant_private_key = "MIIEvwIB*********W6A==";
// 支付宝公钥(非商户应用公钥),即为创建应用中配置参数时使用密钥生成工具生成的商户应用公钥配置在应用公钥后所对应生成的支付宝公钥
public static String alipay_public_key = "MIIB*********IDAQAB";
// 页面跳转同步通知地址路径,即支付成功后支付宝索要跳转到的商户页面或地址(需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问)
public static String return_url = "http://www.20180131.cn/return_url.jsp";
// 服务器异步通地址路径,支付宝在支付成功后跳转同步通知地址(前台)的同时,会异步(后台)向此地址发送成功的通知,以防前台页面关闭造成前台接收不到支付成功通知,故在此地址可对商户后台进行支付状态修改。(需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问)
public static String notify_url = "http://www.peibingying520.cn/notify_url.jsp";
// 签名方式(私钥)
public static String sign_type = "RSA2";
// 字符编码格式
public static String charset = "utf-8";
// 支付宝网关(注意沙箱应用与正式环境此参数不同)
//public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";(沙箱环境)
public static String gatewayUrl = "https://openapi.alipay.com/gateway.do";(正式环境)
}
- 以下为电脑网页支付发送请求java代码
代码:
//获得初始化的AlipayClient,请勿更改参数顺序
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
//设置请求参数
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
//设置支付宝同步通知地址
alipayRequest.setReturnUrl(AlipayConfig.return_url);
//设置支付宝异步通知地址
alipayRequest.setNotifyUrl(AlipayConfig.notify_url);
//以下为用户请求参数,此处为接收来自前台的表单提交的参数
//商户订单号,商户网站订单系统中唯一订单号,必填
String out_trade_no =new String(request.getParameter("WIDout_trade_no ").getBytes("ISO-8859-1"),"UTF-8");
//付款金额,必填
String total_amount =new String(request.getParameter("WIDtotal_amount ").getBytes("ISO-8859-1"),"UTF-8");
//交易标题,必填
String subject = new String(request.getParameter("WIDsubject ").getBytes("ISO-8859-1"),"UTF-8");
//交易描述,可空
String body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"),"UTF-8");
//业务请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递
alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
+ "\"total_amount\":\""+ total_amount +"\","
+ "\"subject\":\""+ subject +"\","
+ "\"body\":\""+ body +"\","
+ "\"timeout_express\":\"30m\","//该笔订单允许的最晚付款时间,逾期将关闭交易。
+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");//销售产品码,与支付宝签约的产品码名称。 注:目前仅支持FAST_INSTANT_TRADE_PAY
//发送请求,支付宝将返回一个支付请求的表单数据串
String result = alipayClient.pageExecute(alipayRequest).getBody();
//将返回结果输出至页面,将再次向支付宝发起请求,此次请求将直接跳转至支付宝支付页面
out.println(result);//此处为jsp页面的输出方式