2025-03-28 09:49:56 +08:00

468 lines
21 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
/*
* Project: BJP09001
*
* Description:
* 商户接口范例。
*
* Modify Information:
* Author Date Description
* ============ ========== =======================================
* abchina 2014/03/05 V3.0.0 Release
*
*/
-->
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txtPaymentRequestNo.Text = "No" + DateTime.Now.Ticks.ToString();
txtOrderDate.Text = System.DateTime.Now.ToString("yyyy/MM/dd");
txtOrderTime.Text = System.DateTime.Now.ToString("HH:MM:ss");
}
}
protected void btnButton_Click(object sender, EventArgs e)
{
//1、生成定单订单对象并将订单明细加入订单中
com.abc.trustpay.client.ebus.QRPayCode tPaymentRequest = new com.abc.trustpay.client.ebus.QRPayCode();
//2、设定订单属性
tPaymentRequest.dicOrder["QRPayCode"] = txtQRPayCode.Text; //客户二维码
tPaymentRequest.dicOrder["Pid"] = txtPid.Text; //客户PID
tPaymentRequest.dicOrder["PayTypeID"] = txtPayTypeID.Text; //设定交易类型
tPaymentRequest.dicOrder["OrderNo"] = txtPaymentRequestNo.Text; //设定订单编号
tPaymentRequest.dicOrder["ExpiredDate"] = txtExpiredDate.Text;//设定订单保存时间
tPaymentRequest.dicOrder["OrderAmount"] = txtPaymentRequestAmount.Text; //设定交易金额
tPaymentRequest.dicOrder["SubsidyAmount"] = txtSubsidyAmount.Text; //设定营销补贴金额
tPaymentRequest.dicOrder["Fee"] = txtFee.Text; //设定手续费金额
tPaymentRequest.dicOrder["AccountNo"] = txtAccountNo.Text; //设定支付账户
tPaymentRequest.dicOrder["CurrencyCode"] = txtCurrencyCode.Text; //设定交易币种
tPaymentRequest.dicOrder["ReceiverAddress"] = txtReceiverAddress.Text; //收货地址
tPaymentRequest.dicOrder["InstallmentMark"] = txtInstallmentMark.Text; //分期标识
if (txtInstallmentMark.Text.ToString().Equals("1") && txtPayTypeID.Text.ToString().Equals("DividedPay"))
{
tPaymentRequest.dicOrder["InstallmentCode"] = txtInstallmentCode.Text; //设定分期代码
tPaymentRequest.dicOrder["InstallmentNum"] = txtInstallmentNum.Text; //设定分期期数
}
tPaymentRequest.dicOrder["BuyIP"] = txtBuyIP.Text; //IP
tPaymentRequest.dicOrder["OrderDesc"] = txtOrderDesc.Text; //设定订单说明
tPaymentRequest.dicOrder["OrderURL"] = txtOrderURL.Text; //设定订单地址
tPaymentRequest.dicOrder["OrderDate"] = txtOrderDate.Text; //设定订单日期 (必要信息 - YYYY/MM/DD
tPaymentRequest.dicOrder["OrderTime"] = txtOrderTime.Text; //设定订单时间 (必要信息 - HH:MM:SS
tPaymentRequest.dicOrder["orderTimeoutDate"] = txtorderTimeoutDate.Text; //设定订单有效期
tPaymentRequest.dicOrder["CommodityType"] = txtCommodityType.Text; //设置商品种类
//3、添加订单明细
System.Collections.Generic.Dictionary<string, string> orderitem = new System.Collections.Generic.Dictionary<string, string>();
orderitem["SubMerName"] = "1"; //设定二级商户名称
orderitem["SubMerId"] = "12345"; //设定二级商户代码
orderitem["SubMerMCC"] = "0000"; //设定二级商户MCC码
orderitem["SubMerchantRemarks"] = "测试"; //二级商户备注项
orderitem["ProductID"] = "IP000001";//商品代码,预留字段
orderitem["ProductName"] = "1";//商品名称
orderitem["UnitPrice"] = "1.00";//商品总价
orderitem["Qty"] = "1";//商品数量
orderitem["ProductRemarks"] = "2"; //商品备注项
orderitem["ProductType"] = "充值类";//商品类型
orderitem["ProductDiscount"] = "0.9";//商品折扣
orderitem["ProductExpiredDate"] = "10";//商品有效期
tPaymentRequest.dic.Add(1, orderitem);
orderitem = new System.Collections.Generic.Dictionary<string, string>();
orderitem["SubMerName"] = "2"; //设定二级商户名称
orderitem["SubMerId"] = "12345"; //设定二级商户代码
orderitem["SubMerMCC"] = "0000"; //设定二级商户MCC码
orderitem["SubMerchantRemarks"] = "测试"; //二级商户备注项
orderitem["ProductID"] = "IP000001";//商品代码,预留字段
orderitem["ProductName"] = "2";//商品名称
orderitem["UnitPrice"] = "1.00";//商品总价
orderitem["Qty"] = "2";//商品数量
orderitem["ProductRemarks"] = "1"; //商品备注项
orderitem["ProductType"] = "充值类";//商品类型
orderitem["ProductDiscount"] = "0.9";//商品折扣
orderitem["ProductExpiredDate"] = "10";//商品有效期
tPaymentRequest.dic.Add(2, orderitem);
//4、设定支付请求对象
tPaymentRequest.dicRequest["PaymentType"] = txtPaymentType.Text; //设定支付类型
tPaymentRequest.dicRequest["PaymentLinkType"] = txtPaymentLinkType.Text; //设定支付接入方式
if (txtPaymentType.Text.ToString().Equals("6") && txtPaymentLinkType.Text.ToString().Equals("2"))
{
tPaymentRequest.dicRequest["UnionPayLinkType"] = txtUnionPayLinkType.Text; //当支付类型为6支付接入方式为2的条件满足时需要设置银联跨行移动支付接入方式
}
tPaymentRequest.dicRequest["ReceiveAccount"] = txtReceiveAccount.Text; //设定收款方账号
tPaymentRequest.dicRequest["ReceiveAccName"] = txtReceiveAccName.Text; //设定收款方户名
tPaymentRequest.dicRequest["NotifyType"] = txtNotifyType.Text; //设定通知方式
tPaymentRequest.dicRequest["ResultNotifyURL"] = txtResultNotifyURL.Text; //设定通知URL地址
tPaymentRequest.dicRequest["MerchantRemarks"] = txtMerchantRemarks.Text; //设定附言
tPaymentRequest.dicRequest["ReceiveMark"] = txtReceiveMark.Text; //设定交易是否入二级商户账户
tPaymentRequest.dicRequest["ReceiveMerchantType"] = txtReceiveMerchantType.Text; //设定收款方账户类型
tPaymentRequest.dicRequest["TerminalNo"] = txtTerminalNo.Text; //设定终端编号
tPaymentRequest.dicRequest["IsBreakAccount"] = txtIsBreakAccount.Text; //设定交易是否分账、交易是否支持向二级商户入账
tPaymentRequest.dicRequest["SplitAccTemplate"] = txtSplitAccTemplate.Text; //分账模版编号
//添加分账信息
string[] splitMerchantIdArr = null;
string[] splitAmountArr = null;
string splitMerchantId = Request["txtSplitMerchantID"];
string splitAmount = Request["txtSplitAmount"];
if (!string.IsNullOrEmpty(splitMerchantId) && !string.IsNullOrEmpty(splitAmount))
{
if (splitMerchantId.Contains(","))
{
splitMerchantIdArr = splitMerchantId.Split(',');
splitAmountArr = splitAmount.Split(',');
}
else
{
splitMerchantIdArr = new string[] { splitMerchantId };
splitAmountArr = new string[] { splitAmount };
}
Dictionary<string, string> item = new Dictionary<string, string>();
for (int i = 0; i < splitMerchantIdArr.Length; i++)
{
item["SplitMerchantID"] = splitMerchantIdArr[i];
item["SplitAmount"] = splitAmountArr[i];
tPaymentRequest.dicSplitAccInfo.Add(i, item);
item = new Dictionary<string, string>();
}
}
//5、传送支付请求并取得支付网址
tPaymentRequest.postJSONRequest();
//多商户
//tPaymentRequest.extendPostJSONRequest(1);
StringBuilder strMessage = new StringBuilder();
string ReturnCode = JSON.GetKeyValue("ReturnCode");
string ErrorMessage = JSON.GetKeyValue("ErrorMessage");
if (ReturnCode.Equals("0000"))
{
strMessage.Append("ReturnCode = [" + ReturnCode + "]<br/>");
strMessage.Append("ErrorMessage = [" + ErrorMessage + "]<br/>");
//6、支付请求提交成功将客户端导向支付页面
Response.Redirect(JSON.GetKeyValue("PaymentURL"));
}
else
{
//7、支付请求提交失败商户自定后续动作
strMessage.Append("ReturnCode = [" + ReturnCode + "]<br/>");
strMessage.Append("ErrorMessage = [" + ErrorMessage + "]<br/>");
}
lblMessage.Text = strMessage.ToString();
}
</script>
<script language="javascript" type="text/javascript">
function SelectedIndexChanged() {
var paytypeid = document.getElementById("txtPayTypeID").value;
if (paytypeid == "ImmediatePay") {
installmentCode.style.display = "none";
installmentNum.style.display = "none";
}
else if (paytypeid == "PreAuthPay") {
installmentCode.style.display = "none";
installmentNum.style.display = "none";
}
else if (paytypeid == "DividedPay") {
installmentCode.style.display = "inline";
installmentNum.style.display = "inline";
}
}
function CheckValue() {
var paymenttype = document.getElementById("txtPaymentType").value;
var paymentlinktype = document.getElementById("txtPaymentLinkType").value;
if (paymenttype == "6" && paymentlinktype == "2") {
UnionPayLinkType.style.display = "inline";
} else {
UnionPayLinkType.style.display = "none";
}
}
function addLine() {
var row = account.insertRow();
for (var j = 0; j < 2; j++) {
var col = row.insertCell();
switch (j) {
case 0:
col.align = "center";
col.innerHTML = "<input type=\"text\" name=\"txtSplitMerchantID\" style=\"width:95%\" value=\"\">";
break;
case 1:
col.align = "center";
col.innerHTML = "<input type=\"text\" name=\"txtSplitAmount\" style=\"width:95%\" value=\"\">";
break;
}
}
form1.btnButton.disabled = "";
}
function submitFun() {
form1.submit();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>农行网上支付平台-商户接口范例-支付请求</title>
</head>
<body style="font-size: 14px;">
<center>
支付请求</center>
<form id="form1" runat="server">
<asp:Label ID="lblMessage" runat="server" Text="" ForeColor="red"></asp:Label>
<br />
<table>
<tr>
<td>交易类型</td>
<td style="width: 158px">
<asp:DropDownList ID="txtPayTypeID" runat="server" onclick="SelectedIndexChanged()">
<asp:ListItem Value="ImmediatePay" Selected="True">直接支付</asp:ListItem>
<asp:ListItem Value="PreAuthPay">预授权支付</asp:ListItem>
<asp:ListItem Value="DividedPay">分期支付</asp:ListItem>
</asp:DropDownList>*必输</td>
</tr>
<tr>
<td>客户二维码
</td>
<td>
<asp:TextBox runat="server" ID='txtQRPayCode' Text='1234567890' />*必输</td>
</tr>
<tr>
<td>客户PID
</td>
<td>
<asp:TextBox runat="server" ID='txtPid' Text='1234567890' />*必输</td>
</tr>
<tr>
<td>订单日期
</td>
<td>
<asp:TextBox runat="server" ID='txtOrderDate' Text='2004/12/23' />YYYY/MM/DD*必输</td>
</tr>
<tr>
<td>订单时间
</td>
<td>
<asp:TextBox runat="server" ID='txtOrderTime' Text='11:55:30' />HH:MM:SS*必输</td>
</tr>
<tr>
<td>订单支付有效期
</td>
<td>
<asp:TextBox runat="server" ID='txtorderTimeoutDate' Text='20240619104901' />精确到秒,选输</td>
</tr>
<tr>
<td>交易编号
</td>
<td>
<asp:TextBox runat="server" ID='txtPaymentRequestNo' Text='ON200412230001' />*必输</td>
</tr>
<tr>
<td>交易币种
</td>
<td>
<asp:TextBox runat="server" ID='txtCurrencyCode' Text='156' />156:人民币,*必输</td>
</tr>
<tr>
<td>交易金额
</td>
<td>
<asp:TextBox runat="server" ID='txtPaymentRequestAmount' Text='0.01' />保留小数点后两位数字,*必输</td>
</tr>
<tr>
<td>营销补贴
</td>
<td>
<asp:TextBox runat="server" ID='txtSubsidyAmount' Text='' />保留小数点后两位数字,非必输</td>
</tr>
<tr>
<td>手续费金额
</td>
<td>
<asp:TextBox runat="server" ID='txtFee' Text='' />保留小数点后两位数字,选输</td>
</tr>
<tr>
<td>指定付款账户
</td>
<td>
<asp:TextBox runat="server" ID='txtAccountNo' Text='' />选输</td>
</tr>
<tr>
<td>订单说明
</td>
<td>
<asp:TextBox runat="server" ID='txtOrderDesc' Text='Game Card Order' />选输</td>
</tr>
<tr>
<td>订单地址
</td>
<td>
<asp:TextBox runat="server" ID='txtOrderURL' Text='http://127.0.0.1/Merchant/MerchantQueryOrder.aspx?ON=ON200412230001&DetailQuery=1' />选输</td>
</tr>
<tr>
<td>收货地址
</td>
<td>
<asp:TextBox runat="server" ID='txtReceiverAddress' Text='北京' />选输</td>
</tr>
<tr>
<td>分期标识
</td>
<td>
<asp:TextBox runat="server" ID='txtInstallmentMark' Text='0' />1分期0否。*必输</td>
</tr>
<tr id="installmentCode" style="display: none;">
<td>分期代码
</td>
<td>
<asp:TextBox runat="server" ID='txtInstallmentCode' Text='' />*必输</td>
</tr>
<tr id="installmentNum" style="display: none;">
<td>分期期数
</td>
<td>
<asp:TextBox runat="server" ID='txtInstallmentNum' Text='' />2-99,*必输</td>
</tr>
<tr>
<td>商品种类
</td>
<td>
<asp:TextBox runat="server" ID='txtCommodityType' Text='0201' /></td>
</tr>
<tr>
<td></td>
<td>
<br/>0101:支付账户充值
<br/>0201:虚拟类,0202:传统类,0203:实名类
<br/>0301:本行转账,0302:他行转账
<br/>0401:水费,0402:电费,0403:煤气费,0404:有线电视费,0405:通讯费,0406:物业费,0407:保险费,0408:行政费用,0409:税费,0410:学费,0499:其他
<br/>0501:基金,0502:理财产品,0599:其他, *必输
</td>
</tr>
<tr>
<td>客户交易IP
</td>
<td>
<asp:TextBox runat="server" ID='txtBuyIP' Text='' />选输</td>
</tr>
<tr>
<td>订单保存时间
</td>
<td>
<asp:TextBox runat="server" ID='txtExpiredDate' Text='30' />单位:天,选输</td>
</tr>
<tr>
<td>支付账户类型
</td>
<td>
<asp:TextBox runat="server" ID='txtPaymentType' Text='1' onkeyup="CheckValue()" />1农行借记卡支付 2国际卡支付 3农行贷记卡支付 A:支付方式合并 6银联跨行支付 7农行对公账户支付*必输</td>
</tr>
<tr>
<td>交易渠道
</td>
<td>
<asp:TextBox runat="server" ID='txtPaymentLinkType' Text='1' onkeyup="CheckValue()" />1internet网络接入 2手机网络接入 3:数字电视网络接入 4:智能客户端,*必输</td>
</tr>
<tr id="UnionPayLinkType" style="display: none;">
<td>银联跨行移动支付接入方式
</td>
<td>
<asp:TextBox runat="server" ID='txtUnionPayLinkType' Text='0' />0页面接入 1客户端接入如果选择的支付帐户类型为6(银联跨行支付)交易渠道为2(手机网络接入),需要必输</td>
</tr>
<tr>
<td>收款方账号
</td>
<td>
<asp:TextBox runat="server" ID='txtReceiveAccount' Text='' />选输</td>
</tr>
<tr>
<td>收款方户名
</td>
<td>
<asp:TextBox runat="server" ID='txtReceiveAccName' Text='' />选输</td>
</tr>
<tr>
<td>通知方式
</td>
<td>
<asp:TextBox runat="server" ID='txtNotifyType' Text='0' />0URL页面通知 1服务器通知*必输</td>
</tr>
<tr>
<td>通知URL地址
</td>
<td>
<asp:TextBox runat="server" ID='txtResultNotifyURL' Text='http://127.0.0.1/Merchant/MerchantResult.aspx' />*必输</td>
</tr>
<tr>
<td>收款方账户类型
</td>
<td>
<asp:TextBox runat="server" ID='txtReceiveMerchantType' Text='' />0个人 1对公选输</td>
</tr>
<tr>
<td>终端编号
</td>
<td>
<asp:TextBox runat="server" ID='txtTerminalNo' Text='1' /></td>
</tr>
<tr>
<td>附言
</td>
<td>
<asp:TextBox runat="server" ID='txtMerchantRemarks' Text='' />不超过100个字符选输</td>
</tr>
<tr>
<td>交易是否直接入二级商户账户
</td>
<td>
<asp:TextBox runat="server" ID='txtReceiveMark' Text='' />0否 1是,选输</td>
</tr>
<tr>
<td>交易是否分账、交易是否支持向二级商户入账
</td>
<td>
<asp:TextBox runat="server" ID='txtIsBreakAccount' Text='0' />0:否1:是,*必输 二次清分商户填1</td>
</tr>
<tr>
<td>分账模版编号</td>
<td>
<asp:TextBox runat="server" ID='txtSplitAccTemplate' Text='' />选输,交易选择分账时必输</td>
</tr>
<tr>
<td colspan="2">
<table border="1" style="font-size: 12px;" width="50%" id="account">
<tr>
<td width="12%" align="center">二级商户编号</td>
<td width="12%" align="center">入账金额</td>
<tr>
</table>
</td>
</tr>
<tr>
<td colspan="2">
<input type='button' value='增加' name="add" onclick="addLine()"></td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="btnButton" runat="server" Text="提交页面内容" OnClick="btnButton_Click" />
<a href='Merchant.html'>回商户首页</a>
</td>
</tr>
</table>
</form>
</body>
</html>