网银在线支付接口和应用.docx
- 文档编号:1905413
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:12
- 大小:28.44KB
网银在线支付接口和应用.docx
《网银在线支付接口和应用.docx》由会员分享,可在线阅读,更多相关《网银在线支付接口和应用.docx(12页珍藏版)》请在冰豆网上搜索。
网银在线支付接口和应用
网银在线支付接口和应用(转载)
关键字:
网银在线支付接口和应用
最近关注项目中在线支付,所以看一下文档,在线支付应用开发:
基本所有的在线支付均采用以下方式:
客户点击结帐时将关于訂單的信息和货币信息,相应的信息URL,经过md5或其他方式发送(可能Socket和Http或Https)支付平台(块钱,paypal或支付宝等),支付平臺处理完毕时根据相应URL,返回相关的信息(付款信息,訂單信息,验证信息).
在实际操作Money的问题人们一向关注他的安全性等问题,同时本人习惯在通过http方式访问非外网时采用Commons-httpclient的post发送实现,简单方便,所以采用此种实现:
具体看以下API和原代码:
网银在线支付API接口:
商户>>>>>>网银在线支付:
支付动作完成后返回到该url,支付结果以POST方式发送
MD5校验串生成方法:
当消费者在商户端生成最终订单的时候,将订单中的v_amountv_moneytypev_oidv_midv_urlkey六个参数的value值拼成一个无间隔的字符串(顺序不要改变)。
参数key是商户的MD5密钥(该密匙可在登陆商户管理界面后自行更改。
)
网银在线支付>>>商户
支付完成后页面转到商户,从网银在线支付返回的消息格式为:
该消息格式详细解释如下:
v_url是该笔订单提交时参数v_url的值,即网银返回到商户的接口地址。
变量名称
变量命名
返回值说明
订单编号
v_oid
商户发送的v_oid定单编号。
支付状态
v_pstatus
20(表示支付成功)
30(表示支付失败)
支付结果信息
v_pstring
支付完成
支付完成
支付方式
v_pmode
支付银行,例如工商银行
订单MD5校验码
v_md5str
该参数的MD5字符串的顺序为:
v_oid,v_pstatus,v_amount,v_moneytype,key
MD5字符串示例:
-342012.340key
用MD5函数加密上述字符串后得到的值如果和v_md5str值相等即表明返回的信息没有被纂改
订单总金额
v_amount
订单实际支付金额
币种
v_moneytype
订单实际支付币种
备注字段1
remark1
备注字段2
remark2
表3
;
;
;
;
;
;
;
;
;
;
/**
*
*网银接口服务的代理
*
*@authorlonggangbai
*
*/
publicclassChinaPayProxy{
/**
*在下訂單時采用的的Md5加密的信息:
MD5校验串生成方法:
当消费者在商户端生成最终订单的时候,将订单中的v_amount
*v_moneytypev_oidv_midv_urlkey六个参数的value值拼成一个无间隔的字符串(顺序不要改变)。
*参数key是商户的MD5密钥(该密匙可在登陆商户管理界面后自行更改。
)
*
*@paramv_amount
*@paramv_moneytype
*@paramv_oid
*@paramv_mid
*@paramv_url
*@paramkey
*@return
*/
privatestaticStringgetMd5Sign(Stringv_amount,Stringv_moneytype,
Stringv_oid,Stringv_mid,Stringv_url,Stringkey){
StringBuffersb=newStringBuffer();
sb.append(v_amount);
sb.append(v_moneytype);
sb.append(v_oid);
sb.append(v_mid);
sb.append(v_url);
sb.append(key);
byte[]bytes=DigestUtils.md5(sb.toString());
Stringmd5info=newString(bytes).toUpperCase();
returnmd5info;
}
/**
*调用支付网关接口网址银行结帐的接口代理(本人习惯采用Commons-httpclient实现)
*用途:
用来接受商户发给网银在线服务支付的订单信息
*
*@paramv_mid
*商户编号(非空)
*@paramv_oid
*订单编号(非空)(格式:
订单生成日期(yyyymmdd)-商户编号-商户流水号)字段不可超过64位
*@paramv_amount
*订单总金额(非空)
*@paramv_moneytype
*货币类型(非空)0:
RMB1美元
*@paramv_url
*(非空)支付的动作完成时返回的该url,支付结果以post方式发送
*@paramv_md5info
*订单md5校验码
*@paramremark1
*备注字段1(可选字段)
*@paramremark2
*备注字段2(可选字段)
*@paramv_vmd
*yyyymmdd备注字段2(不可为空字段)
*@paramv_rcvname
*收货人姓名(自定义非网银必须字段)
*@paramv_rcvaddr
*收货人地址(自定义非网银必须字段)
*@paramv_rcvtel
*收货人电话(自定义非网银必须字段)
*@paramv_rcpost
*收货人邮编(自定义非网银必须字段)
*@paramv_orderstatus
*商品信息(自定义非网银必须字段)
*@paramv_ordername
*订货人姓名(自定义非网银必须字段)
*@paramv_orderemail
*订货人邮件(自定义非网银必须字段)
*@return
*/
publicstaticbooleanchinaBankPayCheck(Stringv_mid,Stringv_oid,
Stringv_amount,Stringv_moneytype,Stringv_url,Stringremark1,
Stringremark2,Stringv_rcvname,Stringv_rcvaddr,
Stringv_rcvtel,Stringv_rcpost,Stringv_orderstatus,
Stringv_ordername,Stringv_orderemail){
Propertiesp=Env.getEnv().getProperties();
Stringmd5key=p.getProperty(CHINABANK_PAY_MD5_KEY);
Stringv_md5info=getMd5Sign(v_amount,v_moneytype,v_oid,v_mid,
v_url,md5key);
Map
paramMaps.put("v_mid",v_mid);
paramMaps.put("v_oid",v_oid);
paramMaps.put("v_amount",v_amount);
paramMaps.put("v_moneytype",v_moneytype);
paramMaps.put("v_url",p.getProperty(CHINABANK_NOTIFY_URL_HTTP));
paramMaps.put("v_md5info",v_md5info);
paramMaps.put("remark1",remark1);
paramMaps.put("remark2",remark2);
paramMaps.put("v_rcvname",v_rcvname);
paramMaps.put("v_rcvaddr",v_rcvaddr);
paramMaps.put("v_rcvtel",v_rcvtel);
paramMaps.put("v_rcpost",v_rcpost);
paramMaps.put("v_orderstatus",v_orderstatus);
paramMaps.put("v_ordername",v_ordername);
paramMaps.put("v_orderemail",v_orderemail);
returnHTTPClient.executeHttp(CHINABANK_PAY_HTTPS,paramMaps,null);
}
/**
*result为支付完毕接受的结果的map校验检测在网银支付
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 在线 支付 接口 应用