前言

这篇文章主要讲诉系统调用支付宝手机网页即时到账交易接口跳转到支付宝收银台。

上篇文章地址:支付宝手机网页即时到账接口(2)之授权接口请求。

这是第一篇文章结尾调用交易接口的图解。

交易接口请求参数说明

1.含义

  • 请求参数是商户在与支付宝进行数据交互时,提供给支付宝的请求数据,以便支付宝根据这些数据进一步处理。

2.交易接口请求参数列表

从上面的图片可以看到参数比较多,这边简单介绍下(注:下面没有写出字符长度)。
  • service=alipay.wap.auth.authAndExecute

    • 授权接口名称(固定)
  • format=xml
    • 请求参数固定
  • v=2.0
    • 接口版本号(固定)。注当前版本,以后说不定会更新
  • partner=2088000000000000
    • 合作者身份ID(开通支付宝商家服务后,支付宝会提供)
  • req_id=20150512203545
    • 请求号(必须唯一,可以用当前时间)
  • sec_id=MD5
    • 签名方式(MD5、0001(RSA))。本篇是用MD5
  • sign=VRVr7adPfsHblFjiBkGWryhKI
    • 对请求或响应中参数签名后的值。
  • req_data
    • 示例
  • <auth_and_execute_req><request_token>201008309e298cf01c58146274208eda1e4cdf2b</request_token>
    </auth_and_execute_req>

3.样例

http://wappaygw.alipay.com/service/rest.htm?req_data=<auth_and_execute_req><request_token>201008309e298cf01c58146274208eda1e4cdf2b</request_token></auth_and_execute_req>&service=alipay.wap.auth.authAndExecute&sec_id=0001&partner=2088101000137799&sign=LdXbwMLug8E4UjfJMuYv2KoD5X5F3vHGQsQbZ/rdEQ3eaN4FPal7rhsbZZ/+ZUL1kAKzTQSDdMk87MEWtWO1Yq6rhnt2Tv8Hh6Hb16211VXKgbBCpq861+LopRwegPbGStcwBuAyE4pi6fYlJ6gxzL4tMyeLe+T5XZ0RKRUk00U=&format=xml&v=2.0

代码示例

交易bean
public class AlipayTrade {//接口名称private final static String service = "alipay.wap.auth.authAndExecute";//请求格式参数格式private final static String format = "xml";//接口版本号private final static String v = "2.0";//合作者身份id  public String partner = "2088000000000000";//填写从支付宝得到的id  //签名方式private final static String secId = "MD5";//签名private String sign;//业务参数//请求业务参数private String reqData;private String inputCharset = "utf-8";//授权令牌private String requestToken;private String key = "";public String getKey() {return key;}public void setKey(String key) {this.key = key;}public String getRequestToken() {return requestToken;}public void setRequestToken(String requestToken) {this.requestToken = requestToken;this.reqData = "<auth_and_execute_req><request_token>" + requestToken + "</request_token></auth_and_execute_req>";}public String getService() {return service;}public String getFormat() {return format;}public String getInputCharset() {return inputCharset;}public void setInputCharset(String inputCharset) {this.inputCharset = inputCharset;}public String getV() {return v;}public String getPartner() {return partner;}public String getSecId() {return secId;}public String getSign() {return sign;}public String getReqData() {return reqData;}public void setSign(String sign) {this.sign = sign;}}
将交易信息输出到页面中
public AlipayTrade trade(String token){AlipayTrade alipayTrade = new AlipayTrade();alipayTrade.setRequestToken(token);//设置token//2.获取sign签名Map<String, String> param2 = getTradeParam(alipayTrade);// 拼接后字符串String prestr2 = AliPayUtils.createLinkString(param2);alipayTrade.setSign(getSign(prestr2, alipayTrade.getKey(), alipayTrade.getInputCharset()));return alipayTrade;
}
getTradeParam(alipayTrade)代码块
private static Map<String, String> getTradeParam(AlipayTrade alipayTrade) {Map<String, String> param = new HashMap<String, String>();param.put("service", alipayTrade.getService());param.put("partner", alipayTrade.getPartner());param.put("_input_charset", alipayTrade.getInputCharset());param.put("sec_id", alipayTrade.getSecId());param.put("format", alipayTrade.getFormat());param.put("v", alipayTrade.getV());param.put("req_data", alipayTrade.getReqData());return AliPayUtils.paraFilter(param);
}
工具类PayUtils.paraFilter(param)
  • 去掉空值与签名后的新签名参数组
public static Map<String, String> paraFilter(Map<String, String> sArray) {Map<String, String> result = new HashMap<String, String>();if (sArray == null || sArray.size() <= 0) {return result;}for (String key : sArray.keySet()) {String value = sArray.get(key);if (value == null || value.equals("") || key.equalsIgnoreCase("sign")|| key.equalsIgnoreCase("sign_type")) {continue;}result.put(key, value);}return result;}

工具类PayUtils.createLinkString(param)

  • 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼凑成字符串
public static String createLinkString(Map<String, String> params) {List<String> keys = new ArrayList<String>(params.keySet());Collections.sort(keys);String prestr = "";for (int i = 0; i < keys.size(); i++) {String key = keys.get(i);String value = params.get(key);if (i == keys.size() - 1) {//拼接时,不包括最后一个&字符prestr = prestr + key + "=" + value;} else {prestr = prestr + key + "=" + value + "&";}}return prestr;}

代码块getSign(prestr, alipayAuth.getKey(), alipayAuth.getInputCharset())

  • 签名字符串
private static String getSign(String text, String key, String input_charset) {  text = text + key;  return DigestUtils.md5Hex(getContentBytes(text, input_charset));  }  

交易页面

<%@page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head></head><body>    <form id="alipaysubmit" name="alipaysubmit" action="http://wappaygw.alipay.com/service/rest.htm?_input_charset=${trade.inputCharset}" method="get"><input type="hidden" name="sign" value="${trade.sign}"/><input type="hidden" name="sec_id" value="${trade.secId}"/><input type="hidden" name="v" value="${trade.v}"/><input type="hidden" name="_input_charset" value="${trade.inputCharset}"/><input type="hidden" name="req_data" value="${trade.reqData}"/><input type="hidden" name="service" value="${trade.service}"/><input type="hidden" name="partner" value="${trade.partner}"/><input type="hidden" name="format" value="${trade.format}"/><input type="submit" value="确认" style="display:none;"></form><script>document.forms['alipaysubmit'].submit();</script></body>
</html>

支付宝手机网页即时到账接口(3)之交易接口请求相关推荐

  1. 支付宝手机网页支付即时到账接口

    mycncart的前后台均为移动设备方便访问,支付宝方面单独针对移动设备访问网站设立了支付接口,普通的支付宝即时到账接口无法在手机网页上正常支付 本支付插件是支付宝手机网页即时到账接口. 本插件需要解 ...

  2. android 仿支付页面,【android仿系列进阶篇】android 支付宝手机网页支付

    最近在做android-,恩,就说这么多吧 1,准备工作 当然了,假设你已经有了pid(partner)和商户账户(seller),并且开通了手机网页支付功能. 下载的包里面,打开[手机网页即时到账接 ...

  3. PHP支付宝免签约即时到账接口扫码支付实例

    PHP支付宝免签约即时到账接口扫码支付实例,比较简单实用,下面有教程 安装教程: 1.把\pay_files\4422875341317181.png换成你自己的二维码.  2.把pay.htm文件里 ...

  4. php手机网站支付宝_php支付宝手机网页支付类实例

    本文实例讲述了php支付宝手机网页支付类.分享给大家供大家参考.具体分析如下: 此处注意: ① 该类是用在Yii框架里面的,没有去掉一些框架的东西. ② 本类不能不做任何修改而使用. 1. PHP代码 ...

  5. 支付宝手机网页支付java demo调试问题和解决办法

    在使用支付宝手机网页支付的时候遇到一些问题跟大家分享一下. 1.生成签名的时候,使用Base64加密时报错:DerInputStream.getLength():lengthTag = 127, to ...

  6. 支付宝手机网页支付之golang版

    本文章主要是通过golang实现了支付宝手机网页支付的简单封装,封装的基本都是请求的必传参数,如果需要其他参数,可以自己修改BizContent结构体来满足自己的需求. 封装的文件大体分为4个文件: ...

  7. taobao.trade.memo.update淘宝店铺订单交易备注修改接口(订单插旗接口,订单交易接口,订单明文接口,订单解密接口)代码对接教程

    taobao.trade.memo.update淘宝店铺订单交易备注修改接口(订单插旗接口,订单交易接口,订单明文接口,订单解密接口)代码对接教程如下: 1.公共参数 名称 类型 必须 描述(接口代码 ...

  8. pdd.order.information.get拼多多店铺订单详情接口(店铺订单交易接口,店铺订单明文接口,店铺订单解密接口)代码对接教程

    pdd.order.information.get拼多多店铺订单详情接口(店铺订单交易接口,店铺订单明文接口,店铺订单解密接口)代码对接教程如下: 1.公共参数 参数名称 参数类型 是否必填 参数描述 ...

  9. 支付宝手机网页支付接口调用

    1.前期工作 1.1 登陆支付宝官网 网址:https://www.alipay.com/ 1.2 下载手机网站支付的demo的步骤 1.2.1 先点击API,选择手机网站支付模块点击 1.2.2 点 ...

最新文章

  1. R语言Kmeans聚类、抽取聚类簇:fpc包clusterboot函数通过bootstrap重采样的方法评估Kmeans聚类的稳定性、fpc包的kmeansruns函数通过CH准则和ASW获取最优K值
  2. 何恺明、陈鑫磊新研究:提出实例分割新方法,效果比肩Mask R-CNN
  3. 基于AgileEAS.NET SOA 平台SAAS架构技术的开源分销ERP系统-SmartERP.NET下载配置说明
  4. [转] 书摘及访谈:Aptana RadRails,一个Rails的集成开发环境
  5. 为前端工程之崛起而编程!
  6. 计算机在生产作业管理,作业管理
  7. 盖茨、马斯克都遵循的学习法则:知识不由学科划分
  8. halcon第七讲:基于训练学习的颜色检测
  9. web前端html实例-Html5实现的语音搜索功能
  10. JAVA GUI(图形用户界面)
  11. 先验概率跟后验概率(通俗易懂)
  12. JavaWeb项目 Web.xml文件详解(启动顺序)
  13. 卷起来的大厂年终奖:网易年终奖888888,真爽啊
  14. 重新审视PancakeSwap:Sushi之后又一个摘掉copycat帽子的成功者
  15. 锐捷AP软件版本升级后失败,离线脱管了如何远程解决
  16. 四川大学计算机导论半期考试,川大人的期末笔记!学霸原来是这样复习的……(内附天府通中奖名单)...
  17. 发现一个木马的新的捆绑方式
  18. ssm+vue+elementUI 智能新冠疫苗接种预约助手-#毕业设计
  19. 电子统计台账:设置能自动合并数据的垂直过滤模板
  20. 纯原生实现多张图片合成

热门文章

  1. Element UI 图片上传功能踩坑
  2. numpy 向量/矩阵的乘法
  3. GIS中的栅格分析工具和技术
  4. Java+MySQL实现学生管理系统
  5. Java谣言终结者之Arraylist和Linkedlist到底谁快
  6. 大显身手 | Flutter CodePen 挑战赛来了!
  7. 兰州计算机学校排行榜,兰州计算机学校排行
  8. oracle 12.2 迅雷下载,oracle下载-oracle数据库v12.2 最新版下载-6188手游网
  9. 【C语言初级】使用函数求闰年
  10. 解决通过微信小程序获取的定位坐标在百度地图渲染误差过大问题