java在线支付---06,07,08_在线支付_编写将数据提交给易宝支付的JSP页面,集成和测试向易宝发送支付请求,实现浏览器自动向易宝发送支付请求
06_在线支付_编写将数据提交给易宝支付的JSP页面
--------------------------------------------------------------
1./payment/WebRoot/WEB-INF/page/connection.jsp
<%@ page language="java" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>发起支付请求</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>
<body οnlοad="javascript:document.forms[0].submit()">
<!-- http://tech.yeepay.com:8080/robot/debug.action -->
<!--
http://tech.yeepay.com:8080/robot/debug.action
这个是易宝支付的调试路径.在做好之前最好用调试网关.
--><form name="yeepay" action="https://www.yeepay.com/app-merchant-proxy/node" method='post'>
<input type='hidden' name='p0_Cmd' value="${messageType}"> <!-- 请求命令,在线支付固定为Buy -->
<input type='hidden' name='p1_MerId' value="${merchantID}"> <!-- 商家ID -->
<input type="hidden" name="p2_Order" value="${orderId}"> <!-- 商家的交易定单号 -->
<input type='hidden' name='p3_Amt' value="${amount}"> <!-- 订单金额 -->
<input type='hidden' name='p4_Cur' value="${currency}"> <!-- 货币单位 -->
<input type='hidden' name='p5_Pid' value="${productId}"> <!-- 商品ID -->
<input type='hidden' name='p6_Pcat' value="${productCat}"> <!-- 商品种类 -->
<input type='hidden' name='p7_Pdesc' value="${productDesc}"> <!-- 商品描述 -->
<input type='hidden' name='p8_Url' value="${merchantCallbackURL}"> <!-- 交易结果通知地址 -->
<input type='hidden' name='p9_SAF' value="${addressFlag}"> <!-- 需要填写送货信息 0:不需要 1:需要 -->
<input type='hidden' name='pa_MP' value="${sMctProperties}"> <!-- 商家扩展信息 -->
<input type='hidden' name='pd_FrpId' value="${frpId}"> <!-- 银行ID -->
<!-- 应答机制 为“1”: 需要应答机制;为“0”: 不需要应答机制 -->
<input type="hidden" name="pr_NeedResponse" value="0">
<!--MD5-hmac验证码-->
<input type='hidden' name='hmac' value="${hmac}"><!-- MD5-hmac验证码 -->
</form>
</body>
</html>
---------------------------------------------------------------------------
2.package com.credream.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.credream.utils.ConfigInfo;
import com.credream.utils.PanymentUtil;
/**
* 发起支付请求
* @author 传智播客
*
*/
public class PaymentRequest extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* p1_MerId=10000326625// 商家的id
keyValue=0acqgug6x57m0wrsiod6clpn1ezh47r2ot5h1zkq5dztiic8y5xkm5g0p0ek //密钥
merchantCallbackURL=http\://localhost\:8080/payment/servlet/yeepay/response //
// 这个地址是用来接收易宝支付返回结果的路径.这个路径必须外网可以访问.
* */
request.setCharacterEncoding("GBK");
String orderid = request.getParameter("orderid");//订单号
String amount = request.getParameter("amount");//支付金额
String pd_FrpId = request.getParameter("pd_FrpId");//选择的支付银行
String p1_MerId = ConfigInfo.getValue("p1_MerId");
String keyValue = ConfigInfo.getValue("keyValue");
String merchantCallbackURL = ConfigInfo.getValue("merchantCallbackURL");
String messageType = "Buy"; // 请求命令,在线支付固定为Buy
String currency = "CNY"; // 货币单位
String productDesc = ""; // 商品描述
String productCat = ""; // 商品种类
String productId = ""; // 商品ID
String addressFlag = "0"; // 需要填写送货信息 0:不需要 1:需要
String sMctProperties = ""; // 商家扩展信息
String pr_NeedResponse = "0"; // 应答机制
// 下面这个方法用来进行加密.通过调用加密类.
String md5hmac = PanymentUtil.buildHmac(messageType, p1_MerId, orderid, amount, currency,
productId, productCat, productDesc, merchantCallbackURL, addressFlag, sMctProperties,
pd_FrpId, pr_NeedResponse, keyValue);
//1.注意这里是根据易宝支付的原理来的,商户需要把,一些支付信息,和加密后的支付信息,同时发给易宝支付
//易宝支付收到信息后,利用密钥进行对信息再次加密,拿自己加密后的信息和商户发过来的加密信息
//进行对比,对比结果为一致的时候,那么说明信息没有被串改过.
// 得到加密后的字串.
request.setAttribute("messageType", messageType);//支付命令
request.setAttribute("merchantID", p1_MerId);//商户id
request.setAttribute("orderId", orderid);//订单号
request.setAttribute("amount", amount);//订单金额
request.setAttribute("currency", currency);//货币类型
request.setAttribute("productId", productId);//产品id
request.setAttribute("productCat", productCat);//产品种类
request.setAttribute("productDesc", productDesc);//商品描述
request.setAttribute("merchantCallbackURL", merchantCallbackURL);//返回的URL
request.setAttribute("addressFlag", addressFlag);//收货地址
request.setAttribute("sMctProperties", sMctProperties);//商家扩展信息
request.setAttribute("frpId", pd_FrpId);//银行id
request.setAttribute("pr_NeedResponse", pr_NeedResponse);//应答机制.
request.setAttribute("hmac", md5hmac);//MD5验证码
// 转发.
request.getRequestDispatcher("/WEB-INF/page/connection.jsp").forward(request, response);
}
}
----------------------------------------------------------------------------------------------
07_在线支付_集成和测试向易宝发送支付请求
----------------------------------------------------
a. <!-- http://tech.yeepay.com:8080/robot/debug.action -->
<!--
http://tech.yeepay.com:8080/robot/debug.action
这个是易宝支付的调试路径.在做好之前最好用调试网关.
https://www.yeepay.com/app-merchant-proxy/node
这个是易宝支付商用的网关.
--><form name="yeepay" action="https://www.yeepay.com/app-merchant-proxy/node" method='post'>
先用测试网关,然后用正式网关开始测试.
----------------------------------------------------------------------
08_在线支付_实现浏览器自动向易宝发送支付请求
<body οnlοad="javascript:document.forms[0].submit()">
------------------------------------------------------
java在线支付---06,07,08_在线支付_编写将数据提交给易宝支付的JSP页面,集成和测试向易宝发送支付请求,实现浏览器自动向易宝发送支付请求相关推荐
- java读入三个整数并打印平均值_编写程序,读入三个双精度数,求它们的和和平均值并保留平均值小数点后一位数。_学小易找答案...
[简答题]某商场推出幸运抽奖活动,抽奖规则是:客户的4位会员卡号的各个位上的数字之和大于20,则为幸运客户,有精美礼物送上.计算8349各位数字之和,输出结果如下所示. 会员卡号8349各位之和: 2 ...
- java源程序求圆的周长和面积_编写程序,输入圆的半径,求出圆的周长和面积. PI=3.14...
C语言程序 编写函数,求圆面积的值,主函数输入半径,并在主函数中调它. #includemain(){\x09floatS(floatr);\x09floatr;\x09printf("in ...
- java错误页面显示错误信息_Struts2在JSP页面中显示错误信息和提示信息的方法
Struts2在JSP页面中显示错误信息和提示信息的方法主要有以下四种. 注意:以下四种方法均需要使Action类继承ActionSupport类. 一.域级错误信息 ①重写Action中的valid ...
- java在线支付---05_在线支付_编写用于准备请求数据的Servlet
05_在线支付_编写用于准备请求数据的Servlet 创梦综合技术qq交流群:CreDream:251572072 ------------------------------------------ ...
- php 银行支付通道_PHP银联在线支付接口的开发实例
本文主要和大家分享PHP银联在线支付接口的开发实例,希望能帮助到大家. 1. 登录银联自助化测试平台(登陆地址:open.unionpay.com),登录后,点击我的产品,如下:点击右方需要测试的接口 ...
- Java Web 网络商城案例演示十五 订单详情功能(提交订单支付界面)
订单详情功能(提交订单支付界面) 原理分析 步骤实现: 1.准备工作:order_list.jsp当中修改链接 提交当前订单编号 <a href="${pageContext.requ ...
- 微信公众号之微信支付(V3版)jsp页面jsapi统一下单调启支付(java版)
web项目 按顺序一步一步来 准备: 申请了微信支付接口的微信公众号一枚 , 备案的域名网站一枚, (如果有没有的这两个东西会耽误你很久,因为微信支付必须是线上,无法本地调试,) 这里说一下 如果有经 ...
- 在sdk中添加源文件_实用干货 | 一步一步教你在SpringBoot中集成微信刷卡支付
一:准备工作 使用微信支付需要先开通服务号,然后还要开通微信支付,最后还要配置一些开发参数,过程比较多. 申请服务号(企业) 开通微信支付 开发配置 具体准备工作请参考Spring Boot入门教程( ...
- PHP对微信支付v2回调进行验签并将相关数据加入数据库
PS:对于V2版本微信支付的回调需要在线上环境进行,本文中出现的数据库的相关字段,各位请按照个人需求进行修改,此处只对微信回调数据进行相关解析; 代码方面写的比较杂乱,多看注释,相关代码根据个人需求进 ...
最新文章
- 【css】页面出现两个滚动条以及只有一半页面显示内容的解决方法
- ACMNO.50 完美的代价(主要是不同情况下面的讨论)
- tomcat启动卡死在: Initializing Spring root WebApplicationContext的解决办法
- 论文推荐 | 2019中国卫星导航年会论文集
- 利用mybatis-generator自动生成代码
- C#服务器端获取客户端(html)控件值
- 深入理解LSM-Tree
- 编译报错+解决方法:错误: 找不到符号
- Kinect for Windows Samples
- 面试题 01.01. 判定字符是否唯一 (计数排序思想)
- 在JavaScript中生成特定范围内的随机整数?
- Leetcode 1218.最长定差子序列
- 圆梦天宫,英雄凯旋—从神州十三号看IP技术在航天测控通信网的应用
- 视频剪辑计算机配置要求,对于视频剪辑工作,需要什么样的电脑配置才满足要求...
- 把电脑虚拟机linux下编译的程序烧写到ARM9开发板的linux系统里面的具体操作步骤
- Pytorch踩坑记:赋值、浅拷贝、深拷贝三者的区别以及model.state_dict()和model.load_state_dict()的坑点
- mininet-ovs转发行为与流表不对应
- Go语言复合数据类型之map
- arcgis server里预览地图显示空白
- python如何绘制条形图_python Matplotlib 系列教程(三)——绘制直方图和条形图
热门文章
- Python一:【skimage】图像处理库的应用,不使用opencv的情况
- arch_version(12) of input model should be 11!
- Java开发者必须掌握的20个Spring常用注解
- 基于ASP.NET MVC(C#)和Quartz.Net组件实现的定时执行任务调度
- 图论--有向图强连通分量的标记及缩点模板
- log4j2 配置详解及使用范例
- Oracle八大性能视图之v$transaction
- 11.11.17 start L3
- 三月提示:提防挂马网站 关注账号安全
- 【刷题】BZOJ 1023 [SHOI2008]cactus仙人掌图