接入支付宝支付接口(一):发起支付请求

一、前言

在接入支付宝接口之前,需要在支付宝官网进行应用注册和实名认证,地址不再贴出。

在此,贴出支付宝开放平台文档地址:https://docs.open.alipay.com/58/103585/

在这个地址中,详细介绍了如何接入支付宝接口

二、发起请求

支付宝的签名方式等不做详细介绍,在开发文档中有详细说明,笔者建议:编码格式请使用UTF-8。

接下来的介绍中,主要贴出代码(代码仅供参考)

在贴出代码之前,首先大致了解一下如何发起支付请求:

第一步:组装阿里参数

该步骤组装的参数来自于商户系统的支付信息,包括支付类型、商品名称等信息。值得注意的是,支付宝要求传入两个url,分别是异步通知和同步通知,这两个接口用于支付宝向商户系统反馈支付结果,同步为GET请求,异步为POST请求,详细用法将在下一篇做介绍。

第二步:过滤参数

该步骤作用是将上述组装的参数,value为空的键值对去掉,同时去掉sign和sign_type参数。

第三步:生成签名

该步骤对应代码使用MD5加密方式

第四步:重新组装

将生成的签名加入盛放参数的map中

第五步:获取html

获取到的html是一个form表单,action为支付宝的网关:https://mapi.alipay.com/gateway.do?input_charset=编码格式,表单内容为input标签的集合,例如<input type="hidden",name="参数名称",value="参数值" >,将该表单显示在页面上,会跳转至支付宝网关,显示支付宝扫码页面,待用户扫码后,发起支付请求完成

接下来贴出代码:

该部分代码为最上层代码,获取的html可返回给页面直接使用

Map<String, String> sParaTemp = new HashMap<String, String>();
sParaTemp.put("service", AlipayConfig.serivce);//接口服务----即时到账
sParaTemp.put("partner", AlipayConfig.partner);//支付宝PID
sParaTemp.put("_input_charset", AlipayConfig.input_charset);//统一编码
sParaTemp.put("payment_type", payment_type);//支付类型
sParaTemp.put("notify_url", notify_url);//异步通知页面
sParaTemp.put("return_url", return_url);//页面跳转同步通知页面
sParaTemp.put("seller_email", seller_email);//卖家支付宝账号
sParaTemp.put("out_trade_no", out_trade_no);//商品订单编号
sParaTemp.put("subject", subject);//商品名称
sParaTemp.put("total_fee", total_fee);//价格
sParaTemp.put("body", body);
sParaTemp.put("paymethod", AlipayConfig.paymethod);
sParaTemp.put("defaultbank", defaultBank);
sParaTemp.put("show_url", show_url);
sParaTemp.put("anti_phishing_key", anti_phishing_key);
sParaTemp.put("exter_invoke_ip", exter_invoke_ip);
String html= AlipaySubmit.buildRequest(sParaTemp,"post","确认");
public static String buildRequest(Map<String, String> sParaTemp, String strMethod, String strButtonName) {
    Map<String, String> sPara = buildRequestPara(sParaTemp);//第二步+第三步:过滤参数
    List<String> keys = new ArrayList(sPara.keySet());
    StringBuffer sbHtml = new StringBuffer();
    sbHtml.append("<form id=\"alipaysubmit\" name=\"alipaysubmit\" action=\"https://mapi.alipay.com/gateway.do?_input_charset=" + AlipayConfig.input_charset + "\" method=\"" + strMethod + "\">");
    for(int i = 0; i < keys.size(); ++i) {
        String name = (String)keys.get(i);
        String value = (String)sPara.get(name);
        sbHtml.append("<input type=\"hidden\" name=\"" + name + "\" value=\"" + value + "\"/>");
    }

    sbHtml.append("<input type=\"submit\" value=\"" + strButtonName + "\" style=\"display:none;\"></form>");
    sbHtml.append("<br><br>跳转中,请稍候...");
    sbHtml.append("<script>document.forms[‘alipaysubmit‘].submit();</script>");
    return sbHtml.toString();
}

buildRequestPara()用于过滤参数和生成签名:

private static Map<String, String> buildRequestPara(Map<String, String> sParaTemp) {
    Map<String, String> sPara = AlipayCore.paraFilter(sParaTemp);
    String mysign = buildRequestMysign(sPara);
    sPara.put("sign", mysign);
    sPara.put("sign_type", AlipayConfig.sign_type);
    return sPara;
}

第二步:paraFilter()过滤掉value的键值对和sign、sign_type:

public static Map<String, String> paraFilter(Map<String, String> sArray) {
    Map<String, String> result = new HashMap();
    if (sArray != null && sArray.size() > 0) {
        Iterator var3 = sArray.keySet().iterator();
        while(var3.hasNext()) {
            String key = (String)var3.next();
            String value = (String)sArray.get(key);
            if (value != null && !value.equals("") && !key.equalsIgnoreCase("sign") && !key.equalsIgnoreCase("sign_type")) {
                result.put(key, value);
            }
        }
        return result;
    } else {
        return result;
    }
}

第三步:buildRequestMysign()生成签名:

public static String buildRequestMysign(Map<String, String> sPara) {
    String prestr = AlipayCore.createLinkString(sPara);
    String mysign = "";
    if (AlipayConfig.sign_type.equals("MD5")) {
        mysign = MD5.sign(prestr, AlipayConfig.key, AlipayConfig.input_charset);
    }
    return mysign;
}
时间: 2024-08-26 13:32:44

接入支付宝支付接口(一):发起支付请求的相关文章

怎么对接个人收款支付接口(扫码支付)

怎么对接个人收款支付接口(扫码支付) 实现个人收款是一件很麻烦的事,可以通过PAYJX 支付平台 注册个人收款接口,帮助签约个人支付宝,微信支付接口(不需要营业执照),几分钟就可以开通,申请开通后,获取商户号和通信密钥,然后开始对接,上一章讲了收银台模式支付,本章主要说一下扫码支付 扫码支付请求步骤: 构建请求参数 POST 参数到请求地址 根据返回内容展示二维码 用户支付成功后接收异步通知 扫码对接 php代码如下: <?php $order = [ 'mchid' => 'xxxxxxxx

第三方支付接口现号,第三方支付接口对接,第三方支付接口申请

第三方支付公司太多,到目前为止一共有5批206家拿牌支付公司:国付宝,支付宝,环迅,汇潮,易宝,快钱,智付,等等不管您从事与哪家,我们都必须面对这些事实,每家支付公司都有自己的优势跟劣势. 目前国家对第三方支付平台的管控越来越严格,导致目前第三方支付平台的申请越来越严格.特别是对一些个别行业,申请更是难上加难.如果在申请第三方支付平台的过程中需要帮助,请您联系我.QQ:804752009 各类第三方支付接口,包括(支付宝,微信扫码,银盛,商银信,创瑞宝,易通,易宝,国付宝,多付宝,彩虹支付,锐付

微信公众号开发_如何接入微信支付?[网页发起支付]

开发背景 在微信公众号中,需要获取支付功能 前提 公众号已经开通支付功能[未开通的自行百度] 实现步骤 接入JSSDK JSSDK使用步骤 参考微信JS-SDK说明文档 使用JSSDK中的 微信支付 API wx.chooseWXPay({ timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写.但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 nonceStr: 'abc', // 支付签名随机串,不长于 32

四方支付系统开发支付接口解决方案聚合支付系统开发

什么是聚合支付? 所谓聚合支付,就是依托银行.三方支付或清算组织的支付通道与清算能力,为客户提供接口.集成.对接.订单处理.数据统计等的支付服务机构. 通过锋锐程序搭建的的聚合系统,可实现聚合SDK,聚合支付场景.聚合支付方式.聚合支付通道,无需寻找想要的支付通道.无需重复对接集成繁琐的支付接口,链接商户和通道.降低接入的技术.沟通门槛.降低通道成本,方便快捷的实现支付接入. 聚合支付是移动互联网时代的结构性的支付服务解决方案! 最近人民银行关于<提升收单服务水平规范和促进收单服务市场的指导意见

中国银联在线支付接口开发——前台支付

银联技术服务官网:https://open.unionpay.com/ajweb/index 在官网"帮助中心"->"下载"中下载:跳转网关支付产品技术开发包1.11.rar.网关支付产品示例代码_java_1.1.rar 如想使用银联测试接口需要在技术服务官网注册 登录后选择页面右上角"我的测试"-> "测试参数",下载并导入证书 根据"测试参数"提供的商户号和证书存放位置等配置示例代码 选择

Android接入支付宝支付Demo

进入app支付文档有两种方式,一种是直接在下面的开放业务里 还有一种是通过上面的导航栏文档中心,然后滚动到业务接入那一栏,可以看到移动支付 当然也可以直接打开这个地址,文档还是挺多,可以关注我勾选的这几项 首先这里我也要说明的是个人是不能申请的,只能是企业,所以我demo里面的用的一些资料也是demo里面的 这里是交互流程的官方文档,需要详细的可以点进去看看 运行Demo 我们来到官方demo的下载地址 可以看到有两个,选择你需要的就行了,下载解压完直接导入eclipse并配置一些参数运行就可以

phpt5支付宝登陆支付接口解析

先看效果图 下面的源码来源网络,自己对照修改. 放入一个插件库中,方便管理 创建支付类 1.发起支付 public function init() { $order_id = $_REQUEST['order_id']; $order_info = $this->order_db->get_one(array('id'=>$order_id)); $product_info = $this->product_db->get_one(array('id'=>$order_

B2B商城电子商务平台网上商城系统支付通道申请第三方支付接口对接搭建 支付宝微信扫码网关网银银联快捷支付

需要了解 JR金融项目 区块链,比特币,p2p项目,B2B网关,现货资金盘,期货招商,股票配资,商品交易所 大盘的 金融支付 第三方支付,网关支付,网银支付,银行卡支付,话费卡支付,银联代扣,支付渠道,支付宝支付,微信支付,扫码支付,快捷支付,支付牌照申请,线上支付通道搭建,支付通道申请,支付接口对接,原生支付宝网关支付!独立后台,D0实时结算,API批量代付接口 JR / BC / QP 菠菜奔驰游戏等稳定安全通道!大量三方支付资质出售!请加QQ 2954704394 近年来,第三方支付发展势

对接第三方支付接口-记录

对接支付接口,得知这种第三方的支付接口的对接方式一般为:组装接口需要的参数,以json数据格式或者其他格式(大多数为json),请求第三方支付接口的url,并且将回调的通知地址放在参数中,等支付完成后,一般成功后会异步请求这个通知接口,会返回相应的数据给系统做一系列的数据操作,然后返回一个成功状态.这样一次第三方支付接口的请求算结束. 由于这次是与APP端开发人员对接,场景为:用户在APP上进行还款操作,APP开发人员将该期还款计划的id和还款方式(主动还款/代扣)传给后台,后台服务端将传递的参

工商银行在线支付接口,php语言,在ecshop,shopex等的wap版本上完美实现移动支付

php版本各个主要银行在线支付接口开发. 1 中国银行在线支付接口2 工商银行在线支付接口3 建设银行在线支付接口+手机移动支付接口4 交通银行在线支付接口5 农业银行在线支付接口6 银联在线支付接口+手机移动支付接口7 招商银行在线支付接口+手机移动支付接口完美融合ecshop,shopex等php版本的商城系统. 其他银行的在线支付接口均能开发,详情请咨询QQ:804752009 原文:http://www.0475seo.com/tech/2dev/297.html其他接口:http://