支付产品全面升级(更新时间:2017/05/05 ),若您使用的是老接口,请移步老版本即时到账文档。

支持沙盒环境的测试

1、有图有真相

使用手机扫码进行支付

i统一收单下单并支付页面接口alipay.trade.page.pay

手机扫码进行支付

PC 端登录账号进行支付

登录账号进行支付

进去支付宝收银台

输入交易密码进行支付

付款完成

正在跳转到商户页面

商户页面、这里只是将签名验证的结果显示在页面上

PC支付两次扣款记录

2、如何申请PC电脑网站支付

费率、申请条件、签约、使用场景 传送门接入指引

签约流程

3、如何快速接入PC电脑网站支付

如果你是使用新版本接入就比较方便了,因为官方提供了开放平台服务端SDK

3.1 接口调用流程图

主要涉及到的接口有:

初始化接口

static {

alipayClient = new DefaultAlipayClient(SERVICE_URL, APP_ID, PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);

}

封装支付接口并将SDK生成的表单响应给页面

/**

* 电脑网站支付(PC支付)

* @param model

* @param notifyUrl

* @param returnUrl

* @return

* @throws AlipayApiException

* @throws IOException

*/

public static void tradePage(HttpServletResponse httpResponse, AlipayTradePayModel model, String notifyUrl, String returnUrl) throws AlipayApiException, IOException{

AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();

request.setBizModel(model);

request.setNotifyUrl(notifyUrl);

request.setReturnUrl(returnUrl);

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

httpResponse.setContentType("text/html;charset=" + CHARSET);

httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面

httpResponse.getWriter().flush();

httpResponse.getWriter().close();

}

3.3 其他支付接口封装

3.4 封装测试

/**

* PC支付

*/

public void pcPay(){

try {

String totalAmount = "88.88";

String outTradeNo =StringUtils.getOutTradeNo();

log.info("pc outTradeNo>"+outTradeNo);

String returnUrl = AliPayApi.NOTIFY_DOMAIN + "/alipay/return_url";

String notifyUrl = AliPayApi.NOTIFY_DOMAIN + "/alipay/notify_url";

AlipayTradePayModel model = new AlipayTradePayModel();

model.setOutTradeNo(outTradeNo);

model.setProductCode("FAST_INSTANT_TRADE_PAY");

model.setTotalAmount(totalAmount);

model.setSubject("Javen PC支付测试");

model.setBody("Javen IJPay PC支付测试");

AliPayApi.tradePage(getResponse(),model , notifyUrl, returnUrl);

} catch (Exception e) {

e.printStackTrace();

}

}

异步通知处理

public void notify_url() {

try {

// 获取支付宝POST过来反馈信息

Map params = AliPayApi.toMap(getRequest());

for (Map.Entry entry : params.entrySet()) {

System.out.println(entry.getKey() + " = " + entry.getValue());

}

boolean verify_result = AlipaySignature.rsaCheckV1(params, AliPayApi.ALIPAY_PUBLIC_KEY, AliPayApi.CHARSET,

AliPayApi.SIGN_TYPE);

if (verify_result) {// 验证成功

// TODO 请在这里加上商户的业务逻辑程序代码 异步通知可能出现订单重复通知 需要做去重处理

System.out.println("notify_url 验证成功succcess");

renderText("success");

return;

} else {

System.out.println("notify_url 验证失败");

// TODO

renderText("failure");

return;

}

} catch (AlipayApiException e) {

e.printStackTrace();

renderText("failure");

}

}

同步商户页面验签,这里只是返回验签的状态

public void return_url() {

try {

// 获取支付宝GET过来反馈信息

Map map = AliPayApi.toMap(getRequest());

for (Map.Entry entry : map.entrySet()) {

System.out.println(entry.getKey() + " = " + entry.getValue());

}

boolean verify_result = AlipaySignature.rsaCheckV1(map, AliPayApi.ALIPAY_PUBLIC_KEY, AliPayApi.CHARSET,

AliPayApi.SIGN_TYPE);

if (verify_result) {// 验证成功

// TODO 请在这里加上商户的业务逻辑程序代码

System.out.println("return_url 验证成功");

renderText("success");

return;

} else {

System.out.println("return_url 验证失败");

// TODO

renderText("failure");

return;

}

} catch (AlipayApiException e) {

e.printStackTrace();

renderText("failure");

}

}

将参数转化为Map,为验签做准备

/**

*

* @param request

* @return

*/

public static Map toMap(HttpServletRequest request) {

System.out.println(">>>>" + request.getQueryString());

Map params = new HashMap();

Map requestParams = request.getParameterMap();

for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {

String name = (String) iter.next();

String[] values = (String[]) requestParams.get(name);

String valueStr = "";

for (int i = 0; i < values.length; i++) {

valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";

}

// 乱码解决,这段代码在出现乱码时使用。

// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");

params.put(name, valueStr);

}

return params;

}

4、测试数据

异步通知的参数

gmt_create = 2017-05-14 13:26:58

charset = UTF-8

notify_time = 2017-05-14 13:28:04

gmt_payment = 2017-05-14 13:28:03

subject = Javen PC支付测试

sign = ZYQO+lzxAMDj8Al25KoJzSXegrx1rriBMGLOAEyiNHEac0OMe5e49ZW6m0waDSmTBDX8bwEHUjAk8rdCXTXPzNQSVP0p+46V+8k9AHiEiom6OzV3ZTLzGXGw8A8lnrGPYeCDmKSa3pogJKP0Ob7PyBRgz4HWydWC4P+G1yYEjvVX8kK2XbM6bMauW23a0AklvZbve6WUwUpkioMNLCOHAQzPBDW/LaoDUGx6GN6f3sFDsomBJ03w9rJgqZCs1zw29HHIW4kNFrLcQFleaC+2NnNPLhVanH1iXcK8800dsOXagRPuoy9Gr2EYGV+hSOiVE+XszBKIWTlAbZpE5QgJ6g==

buyer_id = 2088102169474200

body = Javen IJPay PC支付测试

invoice_amount = 88.88

version = 1.0

notify_id = 43749ffb4d02c02f4bfc5ee4fe5761ehjm

fund_bill_list = [{"amount":"88.88","fundChannel":"ALIPAYACCOUNT"}]

notify_type = trade_status_sync

out_trade_no = 051413260514947

total_amount = 88.88

trade_status = TRADE_SUCCESS

trade_no = 2017051421001004200200241311

auth_app_id = 2016102000727659

receipt_amount = 88.88

point_amount = 0.00

sign_type = RSA2

buyer_pay_amount = 88.88

app_id = 2016102000727659

seller_id = 2088102180432465

notify_url 验证成功succcess

商户页面同步的参数

>>>>total_amount=88.88&timestamp=2017-05-14+13%3A28%3A11&sign=KRn%2FEi%2B8lOpPdmSBg8ZsB9dUsV8la2bMWaFGFs5R2hhQOP283m%2BolOwFamfC%2B1thxfIsEi92w99lH24K044yj6aLAN8mJq3umQTRI6j2SvZgn1Ufgpd5KdjfmpEAR5omFOJJP%2FDXIb2zEFs6VvA60RmpwYT5mHbujSWDUvj7X0LX1SGd5l90DbyUDtfMe%2FRSqBFd0iIDLloa78a3dPqHcId3mUKP4RrzZBGWNbAYxrZiEslmZiU%2BnT9K0zL9t%2BVm%2B24pHWsgVOR7hb4UicT%2FfHk6VnDPTnOlfVfJD3vOE2FP6N0jgj0QEKNIynOp6t74zmE8Xkca3pGQnkYyrUEQyg%3D%3D&trade_no=2017051421001004200200241311&sign_type=RSA2&auth_app_id=2016102000727659&charset=UTF-8&seller_id=2088102180432465&method=alipay.trade.page.pay.return&app_id=2016102000727659&out_trade_no=051413260514947&version=1.0

charset = UTF-8

out_trade_no = 051413260514947

method = alipay.trade.page.pay.return

total_amount = 88.88

sign = KRn/Ei+8lOpPdmSBg8ZsB9dUsV8la2bMWaFGFs5R2hhQOP283m+olOwFamfC+1thxfIsEi92w99lH24K044yj6aLAN8mJq3umQTRI6j2SvZgn1Ufgpd5KdjfmpEAR5omFOJJP/DXIb2zEFs6VvA60RmpwYT5mHbujSWDUvj7X0LX1SGd5l90DbyUDtfMe/RSqBFd0iIDLloa78a3dPqHcId3mUKP4RrzZBGWNbAYxrZiEslmZiU+nT9K0zL9t+Vm+24pHWsgVOR7hb4UicT/fHk6VnDPTnOlfVfJD3vOE2FP6N0jgj0QEKNIynOp6t74zmE8Xkca3pGQnkYyrUEQyg==

trade_no = 2017051421001004200200241311

auth_app_id = 2016102000727659

version = 1.0

sign_type = RSA2

app_id = 2016102000727659

seller_id = 2088102180432465

timestamp = 2017-05-14 13:28:11

return_url 验证成功

php支付宝pc收银台,支付宝支付-PC电脑网站支付相关推荐

  1. 支付宝支付(2) 电脑网站支付(SpringBoot+沙箱环境+Alipay Easy SDK)

    一.前言 支付宝支付(1) 电脑网站支付(SpringBoot+沙箱环境) Alipay Easy SDK 文档 Alipay Easy -> https://github.com/alipay ...

  2. java 支付宝支付(手机APP支付、电脑网站支付)

    基础配置类 import com.alipay.api.AlipayClient;/* **类名:AlipayConfig*功能:基础配置类*详细:设置帐户有关信息及返回路径*修改日期:2017-04 ...

  3. 支付宝支付之扫码支付(电脑网站支付)、H5支付(手机网站支付)相关业务流程分析总结

    前言 在上一篇文章<微信支付之扫码支付.公众号支付.H5支付.小程序支付相关业务流程分析总结>中,分析和总结了微信支付相关支付类型的业务流程,这里作为与微信支付平起平坐不相伯仲的支付宝支付 ...

  4. 支付宝支付(1) 电脑网站支付(SpringBoot+沙箱环境)

    一.前言 本文将基于 springboot+沙箱环境 来简单实现支付宝的电脑网站支付功能 二.获取所需配置参数信息 APPID 支付宝网关 支付宝公钥 RSA2私钥 登录支付宝 -> 研发服务 ...

  5. 支付宝支付-电脑网站支付开发

    公司产品需要做一个订单系统,需要在线下单支付功能,由于时间紧,任务重,选择了阿里的电脑网站支付作为支付的手段接入.一定要区分阿里的扫码支付和电脑网站支付的区别,刚开始我就搞混了.网站支付的页面类似于下 ...

  6. 支付宝支付-PC电脑网站支付

    支付产品全面升级(更新时间:2017/05/05 ),若您使用的是老接口,请移步老版本即时到账文档. 支持沙盒环境的测试 此项目已开源欢迎Start.PR.发起Issues一起讨论交流共同进步 htt ...

  7. 支付宝系列-电脑网站支付

    1.概念 电脑网站支付,也称扫码支付,是专门针对PC端业务而开发的一种支付方式,既有支付宝提供在网页展示一个动态生成的支付二维码,用户通过手机支付宝扫码以后可实现支付功能的一种支付方式. 2.创建应用 ...

  8. Laravel 集成支付宝电脑网站支付

    前期准备: 1.下载SDK,里面还有Demo,可以参照Demo里面的内容快速接入 支付宝电脑网站支付SDK&Demo 2.把下载的zip文件解压,放到项目目录里,这里作者放在app文件夹里,方 ...

  9. 支付宝支付-电脑网站支付

    官方文档 支付接口(alipay.trade.page.pay): 商户系统请求支付宝接口alipay.trade.page.pay,支付宝对商户请求参数进行校验,而后重定向至用户登录页面. 用户确认 ...

最新文章

  1. JavaScript对象模型-执行模型
  2. python实现md5加密_Python实现md5加密验证访问接口总结
  3. 文巾解题 182. 查找重复的电子邮箱
  4. 【备忘录】Product cost collectors – 成本收集器
  5. boost::filesystem::path的用法测试程序
  6. ACM主要赛考察内容
  7. docker 添加端口映射_Docker快速搭建PHP开发环境详细教程
  8. 学习笔记之数据可视化(二)—— 页面布局(下)
  9. 容器编排技术 -- Kubernetes Labels 和 Selectors
  10. java解决Exception in thread “main“ java.lang.OutOfMemoryError: GC overhead limit exceeded
  11. iOS 无证书真机调试
  12. 关于表、栈、队列的几种操作
  13. mysql native筛选_Navicat远程连接MySQL8,必知防坑策略
  14. Redis安装教程(保姆级详细图文)
  15. 流媒体协议:互联网视频分发协议介绍(渐进式、HLS、DASH、HDS、RTMP协议)
  16. Android之仿微信发朋友圈图片选择功能
  17. python和wps-基于python的docx模块处理word和WPS的docx格式文件方式
  18. emoji 絵文字意思对照
  19. 用nginx搭建http透明代理
  20. OSChina 周一乱弹 ——在家抄写自己的名字1000遍。

热门文章

  1. 音频-基于Core Audio技术采集音频(版本2)
  2. 盒子模型--标准盒模型和怪异盒模型
  3. js删除数组指定的某个值或元素
  4. 1109: 方块消除 blocks
  5. 看完就能出去神侃,来自研发第一线的“区块链”扫盲文(二)
  6. win10 安全设置
  7. 神通数据库安装及使用手册
  8. php远程下载到本地,PHP 下载远程文件到本地的简单示例
  9. python 遍历文件夹下所有图片
  10. 用chatgpt做ppt