You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

207 lines
7.6 KiB

namespace com.hitrust.trustpay.client.b2c
{
using com.hitrust.trustpay.client;
using System;
public class PaymentRequest : TrxRequest
{
private string iMerchantRemarks;
private string iNotifyType;
private com.hitrust.trustpay.client.b2c.Order iOrder;
private string iPayLinkType;
private string iPaymentType;
private string iProductType;
private string iResultNotifyURL;
public const int MERCHANT_REMARKS_LEN = 200;
public const string NOTIFY_TYPE_SERVER = "1";
public const string NOTIFY_TYPE_URL = "0";
public const string PAY_LINK_TYPE_MOBILE = "2";
public const string PAY_LINK_TYPE_NET = "1";
public const string PAY_LINK_TYPE_TV = "3";
public const string PAY_TYPE_ABC = "1";
public const string PAY_TYPE_INT = "2";
public const string PRD_TYPE_ONE = "1";
public const string PRD_TYPE_TWO = "2";
public const int RESULT_NOTIFY_URL_LEN = 200;
public PaymentRequest() : base("B2C")
{
this.iOrder = null;
this.iProductType = "1";
this.iNotifyType = "0";
this.iPaymentType = "1";
this.iResultNotifyURL = "";
this.iMerchantRemarks = "";
this.iPayLinkType = "1";
}
public PaymentRequest(XMLDocument aXMLDocument) : base("B2C")
{
this.iOrder = null;
this.iProductType = "1";
this.iNotifyType = "0";
this.iPaymentType = "1";
this.iResultNotifyURL = "";
this.iMerchantRemarks = "";
this.iPayLinkType = "1";
this.Order = new com.hitrust.trustpay.client.b2c.Order(aXMLDocument);
this.ProductType = aXMLDocument.getValueNoNull("ProductType");
this.PaymentType = aXMLDocument.getValueNoNull("PaymentType");
this.NotifyType = aXMLDocument.getValueNoNull("NotifyType");
this.ResultNotifyURL = aXMLDocument.getValueNoNull("ResultNotifyURL");
this.MerchantRemarks = aXMLDocument.getValueNoNull("MerchantRemarks");
this.PayLinkType = aXMLDocument.getValueNoNull("PaymentLinkType");
}
protected internal override void checkRequest()
{
if (this.iOrder == null)
{
throw new TrxException("1100", "商户提交的交易资料不完整", "未设定订单信息!");
}
if (this.iProductType == null)
{
throw new TrxException("1100", "商户提交的交易资料不完整", "未设定商品种类!");
}
if (this.iResultNotifyURL == null)
{
throw new TrxException("1100", "商户提交的交易资料不完整", "未设定支付结果回传网址!");
}
string str = this.iOrder.isValid();
if (str.Length != 0)
{
throw new TrxException("1101", "商户提交的交易资料不合法", "订单信息不合法![" + str + "]");
}
if (!this.iProductType.Equals("1") && !this.iProductType.Equals("2"))
{
throw new TrxException("1101", "商户提交的交易资料不合法", "商品种类不合法!");
}
if (!this.iPaymentType.Equals("1") && !this.iPaymentType.Equals("2"))
{
throw new TrxException("1101", "商户提交的交易资料不合法", "支付类型不合法!");
}
if (!this.iNotifyType.Equals("0") && !this.iNotifyType.Equals("1"))
{
throw new TrxException("1101", "商户提交的交易资料不合法", "支付通知类型不合法!");
}
if (!DataVerifier.isValidURL(this.iResultNotifyURL))
{
throw new TrxException("1101", "商户提交的交易资料不合法", "支付结果回传网址不合法!");
}
if (this.iResultNotifyURL.Length == 0)
{
throw new TrxException("1101", "商户提交的交易资料不合法", "支付结果回传网址不合法!");
}
if (SupportClass.ToSByteArray(SupportClass.ToByteArray(this.iResultNotifyURL)).Length > 200)
{
throw new TrxException("1101", "商户提交的交易资料不合法", "支付结果回传网址不合法!");
}
if (SupportClass.ToSByteArray(SupportClass.ToByteArray(this.iMerchantRemarks)).Length > 200)
{
throw new TrxException("1101", "商户提交的交易资料不合法", "商户备注信息不合法!");
}
if ((!this.iPayLinkType.Equals("1") && !this.iPayLinkType.Equals("2")) && !this.iPayLinkType.Equals("3"))
{
throw new TrxException("1101", "商户提交的交易资料不合法", "支付接入类型不合法!");
}
}
protected internal override TrxResponse constructResponse(XMLDocument aResponseMessage)
{
return new TrxResponse(aResponseMessage);
}
public virtual string MerchantRemarks
{
get
{
return this.iMerchantRemarks;
}
set
{
this.iMerchantRemarks = value.Trim();
}
}
public virtual string NotifyType
{
get
{
return this.iNotifyType;
}
set
{
this.iNotifyType = value.Trim();
}
}
public virtual com.hitrust.trustpay.client.b2c.Order Order
{
get
{
return this.iOrder;
}
set
{
this.iOrder = value;
}
}
public virtual string PayLinkType
{
get
{
return this.iPayLinkType;
}
set
{
this.iPayLinkType = value.Trim();
}
}
public virtual string PaymentType
{
get
{
return this.iPaymentType;
}
set
{
this.iPaymentType = value.Trim();
}
}
public virtual string ProductType
{
get
{
return this.iProductType;
}
set
{
this.iProductType = value.Trim();
}
}
protected internal override XMLDocument RequestMessage
{
get
{
return new XMLDocument("<TrxRequest><TrxType>PayReq</TrxType>" + this.iOrder.getXMLDocument(1).ToString() + "<ProductType>" + this.iProductType + "</ProductType><PaymentType>" + this.iPaymentType + "</PaymentType><NotifyType>" + this.iNotifyType + "</NotifyType><ResultNotifyURL>" + this.iResultNotifyURL + "</ResultNotifyURL><MerchantRemarks>" + this.iMerchantRemarks + "</MerchantRemarks><PaymentLinkType>" + this.iPayLinkType + "</PaymentLinkType></TrxRequest>");
}
}
public virtual string ResultNotifyURL
{
get
{
return this.iResultNotifyURL;
}
set
{
this.iResultNotifyURL = value.Trim();
}
}
}
}