易支付怎么配置京东快捷支付接口文件?在哪个文件?

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
易宝在线支付接口文档
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口当我们在商城购物时,可能会用到在线支付,你会发现无论你是哪个银行的银行卡接口中都会支持,在做项目开 发时,也经常会用到支付接口,我们当然希望支持所有的网银,但这需要我们针对每个银行开发一套接口吗?不是不可以而是没必要,使用第三方的支付接口就可以 满足,第三方支付平台已经与各大银行进行签约,网站主只需要在此平台申请一个账号即可支持几乎所有的种类的银行卡信用卡的交易,当然是可能支付少量的手续 费的。什么是第三方支付呢?
&&&&所谓第三方支付,就是一些和各大银行签约、并具备一定实力和信誉保障的第三方独立机构提供的交易支持平台。在通过第三方支付平台的交易中,买方选购商品后,使用第三方平台提供的账户进行货款支付,由第三方通知卖家货款到达。
&&&&目前提供第三方支付的机构很多,常见的有支付宝、财付通、快钱、网银在线、易宝支付、云网等各大支付平台。网站如果需要实现第三方支付首先应该向
第三方支付平台申请一个账号并签署协议,协议生效后第三方支付平台将为其开通在线支付功能,通过程序将接口集成到网站中。
第三方支付原理图:
以上简要说明了支付过程,当然其中省略了一些步骤(比如购物车,订单等),我们重点来看支付流程。
1用户向商城网站发起确认订单的请求
2商城网站接收到请求保存订单数据到数据库或其他存储介质
3返回订单确认页面,页面上应该显示订单金额等信息
4用户确认支付,发起支付请求。注:支付请求是发送到支付网关(比如支付宝、网银在线)而不是发送到商城网站。
5显示支付页面
6用户填写认证信息(账号密码等)提交
7这里有两个步骤一个是扣款成功后页面跳转到支付结果页面(展示给用户),另一个是支付通知,这两步没有先后顺序可能同时执行,商城网站接收到支付通知后根据验证规则验证信息的有效性,并作出相应的更改操作(例:有效则更改订单为已付款状态,无效则记录非法请求信息)。
&&&&以支付宝为例:如果实现在网站中集成支付宝接口,首先要有一个支付宝账号,接下来向支付宝申请在线支付业务,签署协议。协议生效后有支付宝一方会
给网站方一个合作伙伴ID,和安全校验码,有了这两样东西就可以按照支付宝接口文档开发支付宝接口了,在上图的几个步骤中只有4和7两个步骤在商城与支付
网关之间有信息交互。在步骤4中指将数据发送到支付网关(支付宝),在步骤7中是的通知验证部分,验证网关请求网站某地址,网站按验证规则对信息进行验证
记录并作出响应,我们几乎在开发任何支付接口时,重点是这两部分的开发,明白支付接口原理,开发在线支付接口就不难了。
&&&&支付宝目前提供了,担保交易、标准即时到帐、双功能等几种接口,只是在功能上有些差异,网站集成方式是一样的。以标准即时到帐接口为例,在与支付宝签署协议后,还需要几个步骤才能完成集成。
进入支付宝后台在商家服务菜单下有两个链接:
分别可以查询到PID和Key,依次点击我的产品,技术服务将会显示:
选择&我要自助集成&接下来会看到下载技术文档的链接,点击下载技术文档。
&&&&在下载后的文件中有标准支付宝交易服务接口、商家工具、接口集成指南等接文档,另外还有几种语言写的demo。我们可以根据接口文档按规则全新开
发,也可以再demo基础上修改集成到网站,需要注意的是开发支付接口需要在公网(服务器必须可以通过外网访问)才可以完成整个调试过程,如果服务器在外
网访问不到,则无法接收到支付通知。
看一下demo中每个文件的作用:
& ├alipay_notify.php┈┈┈┈支付宝通知处理类文件
& ├alipay_service.php ┈┈┈支付宝请求处理类文件
& ├alipay_config.php┈┈┈┈┈┈基础信息配置文件
& ├index.php┈┈┈┈┈┈┈┈┈┈快速付款入口模板文件
& ├notify_url.php ┈┈┈┈┈┈┈服务器异步通知页面文件
& ├return_url.php ┈┈┈┈┈┈┈页面跳转同步通知文件
这里已经下载好了(会附加在本文附件中),为了便于调试增加修改了若干文件,并增加了一张数据表保存订单信息(见附件),我们修改一下配置文件完成一个测试过程。
alipay_config.php是基础信息配置文件,我们需要将在支付宝后台获取的PID与Key写入到配置文件中。
&&&&其中方框内的数据是我们需要重点修改的。支付通知地址与返回地址的区别,前面已经提到,在步骤7中有两项:支付结果页面与支付通知信息,支付结果页面是用户支付完成后会自动跳转到这个地址这里是返回地址($return_url)。
&&&&支付通知地址同样是用户支付完成后,支付宝会请求该地址($notify_url),但是支付通知是支付宝服务器直接请求,不会被用户看到。这两
个地址必须是以http开头的完整路径格式为了完成测试过程,这里已经将/pay/alipay/notify_url.php改写,
将$notify_url设置为可访问到此文件的URL即可。这几项配置好后再根据数据库脚本(pay/orders.sql)创建一张数据表。并根据数
据库的配置信息修改mysql_config.php。通过对支付宝提供的demo做简单修改就可以完成创建支付请求(步骤4)了,这里更改了支付首页等
页面(见附件pay目录)。我们先测试一下:
点击&下订单&按钮
根据上图的流程现在已经走到了步骤3,此时已经生成了订单号(为了便于测试使用了时间戳作为订单号),并且将订单信息写入到数据库。我们看一下数据库:
数据库中增加了一条&订单信息&。
如果点击&确认支付&按钮或者确认支付
链接将会跳转到支付宝页面,点击按钮时通过表单POST方式将信息提交到支付网关,由于支付请求数据无需让用户看到,这里都写在隐藏域中了。确认支付
链接是通过URL传参,因为支付宝接口允许以POST或者GET方式提交,所以两种方式都可以。把参数提交给支付网关后,页面跳转到到支付页面。我们看到
如下图所示:
我们看到支付宝为我们提供了两种支付方式,一种是通过支付宝账户支付,另一种是通过银行卡支付。例如选择使用银行卡支付,填写邮箱或手机号即可跳转到下一
个页面进行选择银行,支付宝几乎支持所有的银行卡支付,同时有信用卡和网点方式付款,选择对应的银行下一步按提示付款即可。付款完成后页面会返回到我们在
配置文件中配置的$return_url地址,同时&订单状态&也会发生改变。
注:测试时如果没有在外网测试(即支付通知地址无法在外网访问)则支付通知无法被请求到,无法自动完成订单状态的修改。
&&&&& 也有的开发者在浏览器的跳转页面做订单状态的更改(不推荐这样做,因为浏览器端服务器无法控制,比如突然断网,浏览器关闭等)
支付宝接口规范可参考附件和示例文件,里面已经有了比较详细的说明,比如要对支付通知进行响应等。
如何创建支付请求?
&&&&在前面的测试中我们点击了&确认支付&将信息将信息提交到了支付宝的支付网关,我们可以思考一下应该发送哪些参数给支付网关。关于请求参数列表可
以参考附件中的标准支付宝交易服务接口(专用于防钓鱼网站).Pdf中的3.2.2。需要注意的是并不是我们把这些参数原封不动的提交到支付宝就可以了,
为了保证数据安全支付宝目前使用的是MD5签名防止数据篡改机制。
&&&&在提交数据前需要将需要提交的数据以一定规则(见接口文档)组装成字符串,加上安全校验码(Key)组成一个新字符串,通过MD5生成一个32字节的签名,我们提交支付请求时还需要把这个签名也提交过去。看一下表单源码
支付宝接收到参数后会进行验证请求参数的合法性,验证无误后将显示支付页面,否则提示错误。
如何验证支付通知?
在用户支付完成后,支付宝会请求网站支付通知地址(这个地址应在创建支付请求时作为参数传递过去)。返回参数列表参见标准支付宝交易服务接口(专用于防钓
鱼网站).Pdf3.3.1。支付宝的返回数据中同样有一个签名串(采取和支付请求同样的签名方式),在支付通知文件中首先要对数据进行签名验证。除了验
证签名,还需要将参数中的notify_id提交到支付宝的验证网关支付宝系统这个通知的真实性,通知验证。支付宝系统判断通知是否是自己发送,如果是以
字符串格式返回
true,否则返回false,我们通过验证服务器返回的数据验证请求的真实性,如果都验证通过则可以进行更改订单数据、给用户发送邮件通知等操作。关于
验证签名可以看一下通知文件中的源码。带demo中将参数中的notify_id提交到支付宝是通过POST方式提交并取得返回数据,代码片段:
这里重点就是fsockopen函数,在发送电子邮件时我们已经接触过,通过此函数打开套接字连接,类似于以前学过的fopen函数返回的是一个文
件句柄,之后可以使用文件函数( fgets()、fgetss()、fputs()、fclose()
feof()等)对其进行操作,代码中使用了fputs()(同fwrite())函数,写入数据来模拟表单以POST方式提交数据,最后通过
fgets()函数获取返回的数据保存到数组中,最后进行验证,具体参照附件中的源码。
阅读(...) 评论()您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
首信易支付(v4-第三方支付接口申请.doc 12页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
首信易支付(v4-第三方支付接口申请
你可能关注的文档:
··········
··········
首信易支付(v4.3)接口说明
(首信易支付商户后台管理系统 )
首信易支付流程及功能简要介绍
首信易支付网上支付主要流程大致分为商户交易订单提交过程和银行订单确认这两个部分。首先,当消费者在商户处完成购物过程,在商户端服务器形成最终订单(订单参数格式见文档第一部分“商户提交待付款订单接口”说明)且消费者选择首信易支付方式时,该接口程序将消费者订单中有关支付的信息引导到首信易支付平台,消费者在该平台选择银行进行网上支付交易。
当交易完成后,首信易支付平台可以通过两种方式通知商户银行对该笔订单的确认消息,商户根据实际业务需要选择这两种方式(其中任一种或者全部)编写相应的程序来接收银行返回的相关支付确认参数,通过对参数的判断来进行后续的业务操作。
前台页面链接方式:这种方式接收的参数格式见文档第二部分“首信易支付订单支付结果页面返回接口”说明,是将此次支付订单的交易结果(参数)以页面连接的形式发送给商户。这里的前台指这个参数传递过程对持卡消费者是可见的。
这种方式的特点是:返回参数的实时性好。但有个别几种支付方式不支持这种方式,有诸如网络中断或者持卡消费者不按要求操作等情况出现时,这种方式会有漏单(银行支付确认消息商户收不到)的现象。一旦出现漏单的情况,商户只能通过后台接口程序方式接收银行订单支付确认消息,或者登录到首信易支付商户后台管理系统查询确认。
注意:这种方式接收程序的地址由商户在提交订单时参数v_url的值来指定,无需事先通知首信易支付平台,如有变更只需要在提交订单参数时修改v_url的值即可。
后台接口程序方式:这种方式接收的参数格式见文档第三部分“首信易支付订单支付结果后台返回接口”说明,是由首信易支付平台转发银行支付确认信息。这种方式是首信易支付平台服务器与商户服务器之间进行通信的,对于持卡消费者是不可见的。
这种方式的特点是:支持平台上所有的支付方式,而且在与商户的通信过程中如有网络故障,此方式支持自动重发功能(在首次发送的24小时内)。
注意:这种方式接收程序的地址需要由商户来确定,在商户号开通时所填写的初始单中,填写在“订单支付确认返回地址”一栏,并由首信易支付平台管理员按照初始单内容进行开通。开通后如有修改,需要事先通知管理员确认修改。
最后,首信易支付将根据交易金额通知银行转帐。通常情况下,首信易支付结算中心会在周一、周四进行转帐工作,但需要满足本地商户本次转帐金额达到两百元人民币、外埠商户本次转帐金额达到六百元人民币的条件。如果不满足上述金额则累计到下次转帐时一起完成。在一旦转帐成功,将立即通知商户转帐结果,通知接口的参数格式为文档第四部分“首信易支付通知商户转帐结果接口”说明。此接口地址由商户确认,填写在初始单中“转帐确认通知接口”一栏中。商户开通后,如果需要更改也要事先通知管理员确认后修改。
注意:通知商户转帐过程与网上支付交易是两个相对独立的过程,转帐工作是由首信易支付结算中心工作人员线下完成的,在通知银行进行转帐工作后,会通过“首信易支付通知商户转帐结果接口”将本次转帐的所有订单号发给商户。由于这个接口发送的信息只是起到通知作用,不会影响商户的实际转帐工作。因此商户可以根据自己的实际需要选择是否使用这个接口。(本接口可选)
各接口的具体格式如下:
一、商户提交待付款订单接口(商户==>>首信易支付)
用途:用来接收商户发来的订单信息
CGI程序接口
FORM表单参数说明
1. 商户编号(v_mid)
说明:不可为空值,以初始单上所填商户编号为准。
2. 订单编号(v_oid)
说明:不可为空值,首信易支付订单编号格式统一为:
订单生成日期(yyyymmdd)-商户编号-商户流水号
例如:-12345。商户流水号为数字,每日内不重复即可。
注:订单编号所有字符总和不可超过64位,否则首信易支付平台拒绝接受。
3. 收货人姓名(v_rcvname)
说明:不可为空值,统一用商户编号的值代替。
4. 收货人地址(v_rcvaddr)
说明:不可为空值,总长不超过128个字符。
5. 收货人电话(v_rcvtel)
说明:不可为空值,总长不超过32个字符。
6. 收货人邮政编码(v_rcvpost)
说明:不可为空值,总长不超过10个字符。
7. 订单总金额(v_amount)
说明:不可为空值,单位:元,小数点后保留两位,如13.45
8. 订单产生日期(v_ymd)
说明:不可
正在加载中,请稍后...在线支付之易宝支付的使用方法
项目中实现在线支付的功能有两种方式:
第一种方式:使用银行提供的接口直接和银行对接。这种方式不用交第三方费用,但是如果要接入多个银行,则需要在本网站中一一使用不同银行提供的接口,这个过程比较麻烦,其次商业银行一般只对大型企业及集团公司的网站提供接口,对个人及小企业的网站不提供,所以个人网站或者小企业网站接入商业银行比较困难;
第二种方式:通过第三方支付平台使网站和银行间接对接:第三方支付平台整合所有类型银行的接口,直接和银行对接;我们自己的网站只需要调用第三方支付平台的接口就可以实现和银行的间接对接。这种对接方式放低了对接门槛,减轻了对接的难度,但该对接方式需要向第三方支付平台缴纳相应的费用。这种对接方式是目前使用最多的一种,比如支付宝、PayPal和易宝支付等都是非常有名的第三方支付平台。这种对接方式的支付流程如下图:
说明:淡灰箭头表示支付的过程;红箭头表示支付结束后数据返回。
下面给大家介绍易宝支付的实现过程,代码下载地址在最下面:
代码一:DigestUtil文件
package com.yeepay.
import java.io.UnsupportedEncodingE
import java.security.MessageD
import java.security.NoSuchAlgorithmE
import java.util.A
* @author GaoHuanjie
public class DigestUtil {
private static String ENCODING_CHARSET = &UTF-8&;
* @param aValue 加密的原文
* @param aKey 加密秘钥
public static String hmacSign(String aValue, String aKey) {
byte k_ipad[] = new byte[64];
byte k_opad[] = new byte[64];
byte keyb[];
byte value[];
keyb = aKey.getBytes(ENCODING_CHARSET);
value = aValue.getBytes(ENCODING_CHARSET);
} catch (UnsupportedEncodingException e) {
keyb = aKey.getBytes();
value = aValue.getBytes();
Arrays.fill(k_ipad, keyb.length, 64, (byte) 54);
Arrays.fill(k_opad, keyb.length, 64, (byte) 92);
for (int i = 0; i & keyb. i++) {
k_ipad[i] = (byte) (keyb[i] ^ 0x36);
k_opad[i] = (byte) (keyb[i] ^ 0x5c);
MessageDigest md =
md = MessageDigest.getInstance(&MD5&);
} catch (NoSuchAlgorithmException e) {
md.update(k_ipad);
md.update(value);
byte dg[] = md.digest();
md.reset();
md.update(k_opad);
md.update(dg, 0, 16);
dg = md.digest();
return toHex(dg);
private static String toHex(byte input[]) {
if (input == null)
StringBuffer output = new StringBuffer(input.length * 2);
for (int i = 0; i & input. i++) {
int current = input[i] & 0
if (current & 16)
output.append(&0&);
output.append(Integer.toString(current, 16));
return output.toString();
* @param args
* @param key
public static String getHmac(String[] args, String key) {
if (args == null || args.length == 0) {
return (null);
StringBuffer str = new StringBuffer();
for (int i = 0; i & args. i++) {
str.append(args[i]);
return (hmacSign(str.toString(), key));
* @param aValue
public static String digest(String aValue) {
aValue = aValue.trim();
byte value[];
value = aValue.getBytes(ENCODING_CHARSET);
} catch (UnsupportedEncodingException e) {
value = aValue.getBytes();
MessageDigest md =
md = MessageDigest.getInstance(&SHA&);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return toHex(md.digest(value));
代码二:YeePayUtil文件
package com.yeepay.
* 易宝支付工具类
* @author GaoHuanjie
public class YeePayUtil {
* 获取hmac
* @param p0_Cmd 业务类型
* @param p1_MerId 商户编号
* @param p2_Order 商户订单号
* @param p3_Amt 支付金额
* @param p4_Cur 交易币种
* @param p5_Pid 商品名称
* @param p6_Pcat 商品种类
* @param p7_Pdesc 商品描述
* @param p8_Url 商户接收支付成功数据的地址
* @param p9_SAF 送货地址
* @param pa_MP 商户扩展信息
* @param pd_FrpId 银行编码
* @param pr_NeedResponse 应答机制
* @param keyValue 商户密钥
public static String getHmac(String p0_Cmd, String p1_MerId, String p2_Order, String p3_Amt,
String p4_Cur, String p5_Pid, String p6_Pcat, String p7_Pdesc, String p8_Url, String p9_SAF,
String pa_MP, String pd_FrpId, String pr_NeedResponse, String keyValue) {
String payInfo = new StringBuilder().//payInfo保存支付信息
append(p0_Cmd).// 业务类型
append(p1_MerId).// 商户编号
append(p2_Order).// 商户订单号
append(p3_Amt).// 支付金额
append(p4_Cur).// 交易币种
append(p5_Pid).// 商品名称
append(p6_Pcat).// 商品种类
append(p7_Pdesc).// 商品描述
append(p8_Url).// 商户接收支付成功数据的地址
append(p9_SAF).// 送货地址
append(pa_MP).// 商户扩展信息
append(pd_FrpId).// 银行编码
append(pr_NeedResponse).// 应答机制
toString();
return DigestUtil.hmacSign(payInfo, keyValue);
* 校验hmac
* @param p1_MerId 商户编号
* @param r0_Cmd 业务类型
* @param r1_Code 支付结果
* @param r2_TrxId 易宝支付交易流水号
* @param r3_Amt 支付金额
* @param r4_Cur 交易币种
* @param r5_Pid 商品名称
* @param r6_Order 商户订单号
* @param r7_Uid 易宝支付会员ID
* @param r8_MP 商户扩展信息
* @param r9_BType 交易结果返回类型
* @param keyValue 密钥
* @param hmac 支付网关发来的加密验证码
public static boolean checkHmac(String p1_MerId,
String r0_Cmd, String r1_Code, String r2_TrxId, String r3_Amt,
String r4_Cur, String r5_Pid, String r6_Order, String r7_Uid,
String r8_MP, String r9_BType, String keyValue, String hmac) {
String resultValue = new StringBuilder().
append(p1_MerId).// 商户编号
append(r0_Cmd).// 业务类型
append(r1_Code).// 支付结果
append(r2_TrxId).// 易宝支付交易流水号
append(r3_Amt).// 支付金额
append(r4_Cur).// 交易币种
append(r5_Pid).// 商品名称
append(r6_Order).// 商户订单号
append(r7_Uid).// 易宝支付会员ID
append(r8_MP).// 商户扩展信息
append(r9_BType).// 交易结果返回类型
toString();
String newHmac = DigestUtil.hmacSign(resultValue, keyValue);
return newHmac.equals(hmac);
代码三:PayBeginServlet文件
package com.yeepay.
import java.io.IOE
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import com.yeepay.util.YeePayU
* 处理开始付款请求
public class PayBeginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String orderNumber=request.getParameter(&orderNumber&);//订单号
String payAmount=request.getParameter(&payAmount&);//付款金额
String bankCode=request.getParameter(&bankCode&); //选择的支付银行
// 付款需要的参数:
String p0_Cmd = &Buy&; // 业务类型
请求命令,在线支付固定为Buy
String p1_MerId = &&;// 商户编号
String p2_Order = orderN// 订单编号
String p3_Amt = payA // 付款金额
String p4_Cur = &CNY&; // 交易币种
String p5_Pid = &&; // 商品id
String p6_Pcat = &&; // 商品种类
String p7_Pdesc = &&; // 商品描述
String p8_Url = &https://192.168.1.10:8080/yeepayDemo/PayEndServlet&; // 商户接收支付结束后数据的地址
String p9_SAF = &&; // 送货地址 即需要填写送货信息 0:不需要 1:需要
String pa_MP = &&; // 商户扩展信息
String pd_FrpId = bankC// 支付通道编码,即银行编码
String pr_NeedResponse = &1&; // 应答机制 1: 需要应答机制; 0: 不需要应答机制
String keyValue = &69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl&; // 商户密钥
String hmac = YeePayUtil.getHmac(p0_Cmd, p1_MerId, p2_Order, p3_Amt, p4_Cur, p5_Pid, p6_Pcat, p7_Pdesc, p8_Url, p9_SAF, pa_MP, pd_FrpId, pr_NeedResponse, keyValue); // hmac
// 向易宝发送请求:
String payUrl = new StringBuffer().
append(&https://www.yeepay.com/app-merchant-proxy/node?&).
append(&p0_Cmd=&).append(p0_Cmd).append(&&&).
append(&p1_MerId=&).append(p1_MerId).append(&&&).
append(&p2_Order=&).append(p2_Order).append(&&&).
append(&p3_Amt=&).append(p3_Amt).append(&&&).
append(&p4_Cur=&).append(p4_Cur).append(&&&).
append(&p5_Pid=&).append(p5_Pid).append(&&&).
append(&p6_Pcat=&).append(p6_Pcat).append(&&&).
append(&p7_Pdesc=&).append(p7_Pdesc).append(&&&).
append(&p8_Url=&).append(p8_Url).append(&&&).
append(&p9_SAF=&).append(p9_SAF).append(&&&).
append(&pa_MP=&).append(pa_MP).append(&&&).
append(&pd_FrpId=&).append(pd_FrpId).append(&&&).
append(&pr_NeedResponse=&).append(pr_NeedResponse).append(&&&).
append(&hmac=&).append(hmac).toString();
// 重定向方式向易宝发送请求:
response.sendRedirect(payUrl);
注意:在本机运行时要将上面IP地址改成本机IP地址。
代码四:PayEndServlet文件
package com.yeepay.
import java.io.IOE
import javax.servlet.ServletE
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import com.yeepay.util.YeePayU
* 处理支付结束请求
public class PayEndServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String p1_MerId = &&; // 商家编号
String r0_Cmd = request.getParameter(&r0_Cmd&); //业务类型
String r1_Code = request.getParameter(&r1_Code&); //扣款结果,该字段值为1时表示扣款成功.
String r2_TrxId = request.getParameter(&r2_TrxId&); //YeePay易宝交易订单号
String r3_Amt = request.getParameter(&r3_Amt&);//扣款金额,交易结束后,YeePay易宝交易将实际扣款金额返回给商户
String r4_Cur = request.getParameter(&r4_Cur&);//交易币种,人民币为CNY
String r5_Pid = request.getParameter(&r5_Pid&);//商品ID
String r6_Order = request.getParameter(&r6_Order&);//商户订单号
String r7_Uid = request.getParameter(&r7_Uid&);//YeePay易宝会员ID
String r8_MP
= request.getParameter(&r8_MP&);//商户扩展信息,可以任意填写1K 的字符串,交易返回时将原样返回
String r9_BType = request.getParameter(&r9_BType&);//交易结果通知类型,1: 交易成功回调(重定向)2: 交易成功主动通知(服务器点对点通讯)
String rb_BankId
= request.getParameter(&rb_BankId&);//支付银行
String rp_PayDate = request.getParameter(&rp_PayDate&);//在银行支付时的时间
String hmac = request.getParameter(&hmac&);//MD5交易签名
String keyValue = &69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl&; // 商家密钥
boolean result = YeePayUtil.checkHmac(p1_MerId, r0_Cmd, r1_Code, r2_TrxId, r3_Amt,
r4_Cur, r5_Pid, r6_Order, r7_Uid, r8_MP, r9_BType, keyValue, hmac);
System.out.println(&p1_MerId:&+p1_MerId+&,r0_Cmd:&+r0_Cmd+&,r1_Code:&+r1_Code+&,r2_TrxId:&
+r2_TrxId+&,r3_Amt:&+r3_Amt+&,r4_Cur:&+r4_Cur+&,r5_Pid:&+r5_Pid+&,r6_Order:&
+r6_Order+&,r7_Uid:&+r7_Uid+&,r8_MP:&+r8_MP+&,r9_BType:&+r9_BType+&,rb_BankId:&+rb_BankId+&,rp_PayDate:&+rp_PayDate);
if(result){
if(&1&.equals(r1_Code)){//付款成功
request.setAttribute(&r0_Cmd&, r0_Cmd);
request.setAttribute(&r1_Code&, r1_Code);
request.setAttribute(&r2_TrxId&, r2_TrxId);
request.setAttribute(&r3_Amt&, r3_Amt);
request.setAttribute(&r4_Cur&, r4_Cur);
request.setAttribute(&r5_Pid&, r5_Pid);
request.setAttribute(&r6_Order&, r6_Order);
request.setAttribute(&r7_Uid&, r7_Uid);
request.setAttribute(&r8_MP&, r8_MP);
request.setAttribute(&r9_BType&, r9_BType);
request.setAttribute(&rb_BankId&, rb_BankId);
request.setAttribute(&rp_PayDate&, rp_PayDate);
request.getRequestDispatcher(&paySuccess.&).forward(request, response);
request.setAttribute(&errorMsg&, &Sorry,支付失败!!!&);
request.setAttribute(&errorMsg&, &Sorry,因数据来源非法,支付停止!!!&);
request.getRequestDispatcher(&payFail.jsp&).forward(request, response);
代码五:payBegin.jsp文件
&%@ page language=&java& contentType=&text/ charset=UTF-8& pageEncoding=&UTF-8&%&
&%@page import=&java.text.SimpleDateFormat,java.util.Date&%&
String basePath = request.getContextPath();
&script type="text/javascript" src="https://blog.csdn.net/gaohuanjie/article/details/&/script&&script type="text/javascript"&
$(function(){
$(".submit_order").click(function(){
$("#pay_form").submit();
&% date=&& now=&new& simpledateformat=&& sdf=&new& string=&& ordernumber=&sdf.format(now);& payamount=&0.01&&
订单编号为:&%=ordernumber&
订单总价为:
¥&%=payamount&&%=ordernumber&元
&%=payamount&&%=ordernumber&
确认付款 &% date=&& now=&new& simpledateformat=&& sdf=&new& string=&& ordernumber=&sdf.format(now);& payamount=&0.01&&&%=payamount&&%=ordernumber&
代码六:paySuccess.jsp文件
&%@ page=&& language=&java& contenttype=&text/ charset=UTF-8& pageencoding=&UTF-8&&
&% string=&& basepath=&request.getContextPath();&&
恭喜!支付成功
&%=request.getparameter(&r0_cmd&)%&
扣款状态:
&%=request.getparameter(&r1_code&)%&
易宝订单系统订单号:
&%=request.getparameter(&r2_trxid&)%&
扣款金额:
&%=request.getparameter(&r3_amt&)%&
交易币种:
&%=request.getparameter(&r4_cur&)%&
&%=request.getparameter(&r5_pid&)%&
商户订单号:
&%=request.getparameter(&r6_order&)%&
易宝会员ID:
&%=request.getparameter(&r7_uid&)%&
商户扩展信息:
&%=request.getparameter(&r8_mp&)%&
交易结果通知类型:
&%=request.getparameter(&r9_btype&)%&
支付银行:
&%=request.getparameter(&rb_bankid&)%&
支付时间:
&%=request.getparameter(&rp_paydate&)%&
&%=request.getparameter(&r0_cmd&)%&&%=request.getparameter(&r1_code&)%&&%=request.getparameter(&r2_trxid&)%&&%=request.getparameter(&r3_amt&)%&&%=request.getparameter(&r4_cur&)%&&%=request.getparameter(&r5_pid&)%&&%=request.getparameter(&r6_order&)%&&%=request.getparameter(&r7_uid&)%&&%=request.getparameter(&r8_mp&)%&&%=request.getparameter(&r9_btype&)%&&%=request.getparameter(&rb_bankid&)%&&%=request.getparameter(&rp_paydate&)%&&%@ page=&& language=&java& contenttype=&text/ charset=UTF-8& pageencoding=&UTF-8&&&% string=&& basepath=&request.getContextPath();&&
代码七:payFail.jsp文件
&%@ page language=&java& contentType=&text/ charset=UTF-8& pageEncoding=&UTF-8&%&
String basePath = request.getContextPath();
&title&付款失败页面&/title&
&style type=&text/css&&
padding: 0
margin-top: 10%;
font-family: &Helvetica Neue&, Helvetica, Arial, sans-
font-size: 14
line-height: 1.;
color: #333;
vertical-align: middle
.container {
width: 45%;
padding-right: 15
padding-left: 15
margin-right:
margin-left:
.pay_info{
width: 100%;
height: 135
border: 1px solid #555555;
.pay_info_lef{
width: 50%;
height: 100%;
text-align:
line-height: 133
.pay_info_right{
width: 50%;
height: 100%;
text-align:
line-height: 133
font-size: 15
font-weight:
&img width=&120px& height=&120px& src=&& style=&display:&&&img alt=&加载中...& title=&图片加载中...& src=/uploadfile/807.gif&&
&%=request.getAttribute(&errorMsg&) %&

我要回帖

更多关于 你还未配置支付接口商户 的文章

 

随机推荐