木子屋 Dnawo's BLOG

汇付天下在线支付商户接口范例

👤 dnawo 📅 2007-06-06 👁 31297 👍 0 💬 3 🔄 本站原创
一、发送订单页:
<%
'生成完整日期YYYYMMDD
Function FullDate()
	Dim year1,month1,day1
	year1 = year(now())
	month1 = month(now())
	day1 = day(now())
	If Len(month1)=1 Then month1 = "0" & month1
	If Len(day1)=1 Then day1 = "0" & day1
	FullDate = year1 & month1 & day1
End Function
'生成订单号
Function orderId()
	Dim year1,month1,day1,hour1,minute1,second1
	year1 = year(now())
	month1 = month(now())
	day1 = day(now())
	hour1 = hour(now())
	minute1 = minute(now())
	second1 = second(now())
	If Len(month1)=1 Then month1 = "0" & month1
	If Len(day1)=1 Then day1 = "0" & day1
	If Len(hour1)=1 Then hour1 = "0" & hour1
	If Len(minute1)=1 Then minute1 = "0" & minute1
	If Len(second1)=1 Then second1 = "0" & second1
	orderId = year1 & month1 & day1 & hour1 & minute1 & second1
End Function

Dim ThisOrder
Set ThisOrder=CreateObject("ChinaPnr.NetpayClient") 'WEB服务器需安装插件

Dim Version,MerId,MerDate,OrdId,TransType,GateId,TransAmt,MerKeyFile,BgRetUrl,PageRetUrl,MerPriv,ChkValue
Version    = 10 '支付网关接口版本,目前为10
MerId      = 880001 '商户号,6位数字组成
MerDate    = FullDate() '商户日期,格式为YYYYMMDD,8位数字
ordId      = orderId() '商户订单编号,6到16位数字,在一个商户日期内不能重复
TransType  = "P" '交易类型,日前只支持P,即持支付消费交易
GateId     = "" '网关号,为两位数字,也可为空;可理解成银行代码,为空时客户须选择银行进行支付
TransAmt   = Replace(FormatNumber(10000,2),",","") '交易金额,必须包含两位小数,最多12位数字;可用FormatNumber格式化,再用Replace替换逗号
MerKeyFile = Server.MapPath("MerPrk880001.key") '商户私钥文件
BgRetUrl   = "" '后台交易应答接收地址,最多120位;BgRetUrl和PageRetUrl必须有一个不为空
PageRetUrl = "" '页面交易应答接收地址,最多120位;BgRetUrl和PageRetUrl必须有一个不为空
MerPriv    = "" '商户私有域,支付网关原样返回,用于商户的私有信息,最多120位
ChkValue   = ThisOrder.SignOrder0(MerId,MerKeyFile,OrdId,TransAmt,MerDate,TransType,GateId,MerPriv,BgRetUrl,PageRetUrl) '签名,256位
%>
<form action="https://payment.chinapnr.com/pay/TransGet" method="post" name="form1" target="_blank" id="form1">
接口版本:<input name="Version" type="text" id="Version" value="<% =Version %>" />
<br />
商户号:<input name="MerId" type="text" id="MerId" value="<% =MerId %>" />
<br />
商户日期:<input name="MerDate" type="text" id="MerDate" value="<% =MerDate %>" />
<br />
订单号:<input name="OrdId" type="text" id="OrdId" value="<% =OrdId %>" />
<br />
交易类型:<input name="TransType" type="text" id="TransType" value="<% =TransType %>" />
<br />
网关号:<input name="GateId" type="text" id="GateId" value="<% =GateId %>" />
<br />
交易金额:<input name="TransAmt" type="text" id="TransAmt" value="<% =TransAmt %>" />
<br />
应答地址:<input name="BgRetUrl" type="text" id="BgRetUrl" value="<% =BgRetUrl %>" />
<br />
应答地址:<input name="PageRetUrl" type="text" id="PageRetUrl" value="<% =PageRetUrl %>" />
<br />
私有域:<input name="MerPriv" type="text" id="MerPriv" value="<% =MerPriv %>" />
<br />
签名:<input name="ChkValue" type="text" id="ChkValue" value="<% =ChkValue %>" />
<br />
<input type="submit" name="Submit" value="提交" />
</form>


二、应答页

三、后记
测试阶段可查看ChkValue的值来判断订单格式是否正确:正确的ChkValue值应为256位字符,若是数字则该数字代码错误代码,可通过下表查询错误:
图片

评论(3)

QQ59184240 2009-12-12 15:27
信用卡信息加密那段代码有么? 发我信箱吧 59184240@qq.com 不胜感激
332347365 2014-11-14 13:54
楼主,ChkValue值应为-103是什么意思呢?谢谢
dnawo 2014-11-14 16:59 网站
@332347365,我当时接入时错误码没有-103,应该是后面加上的,咨询下对方或索取最新接口文档看下。
计算题
评论需审核通过后显示
← 上一篇 ACCESS设计表的时候怎么定义计算列? 下一篇 → 解决IE不能保存成mht文件的错误