GoldMoney在线商户接口

分享于 

8分钟阅读

Web开发

  繁體

示例图像- examplepage.png

介绍

GoldMoney是一个支付系统,客户和商人在GoldMoney系统中交换grams黄金( gg )。 这种付款方法,虽然在美国没有广泛使用,但为信用卡系统提供了一些优势: 它没有充电系统,所以销售是最终的。 用金克购买的Denominating消除了不支持的货币的麻烦,而且交易成本最小。

在本文中,我将介绍如何使用 ASP.NET 和 C# 来实现GoldMoney在线商业接口( OMI )。 OMI接口允许你自动提交和接收成功付款的通知。

使用代码

这里显示的OMI接口实现有 3部分:

  • 用户信息集合。
  • 将数据发布到GoldMoney以便用户购买授权。
  • 收到成功付款通知。

收集用户信息

第一部分只是一个页面 GMCollect.aspx,用来收集诸如姓名和电子邮件地址这样的用户信息。 GoldMoney不需要来自商家的任何用户信息这只是为了让商家能够完成订单。 collection页面上的购买按钮使用项目ID和在这里页面上收集的任何数据调用重定向页面。

privatevoid btnPurchase_Click(object sender, System.EventArgs e)
{
 // Create and entry in DB, and a new orderint itemID = 1;
 int orderID = 100; // hardcoded for example but pull from DB// Pass to redirection for postingstring url = string.Format("GMRedirect.aspx?ITEM={0}&EMAIL={1}&FIRST={2}&LAST={3}&ORDERID={4}", itemID
, TextEmailGold.Text
, HttpUtility.UrlEncode(TextGoldFirstName.Text)
, HttpUtility.UrlEncode(TextGoldLastName.Text)
, orderID
 );
 Response.Redirect(url);
}

将信息发送到 GoldMoney

第二部分是将数据发布到GoldMoney网站。 在使用 ASP.NET 时,你不能简单地将表单按钮放在后面的代码中,并期望它能够工作。 我在这里做了最简单的路由并创建了重定向页面 GMRedirect.aspx。 当 GMRedirect.aspx 被调用时,它将发布到GoldMoney站点。

重定向页面负责获取收集的数据以及项目的购买价格,并将它的放入到GoldMoney站点的变量中。

privatevoid Page_Load(object sender, System.EventArgs e)
{
 try {
 string memo = string.Empty;
 // Test Mode value for GoldMoney Requests// Uncomment to make a test purchase//SIMMODE.Value ="1";string tmp = Request.Params["ITEM"];
 if (null!= tmp && tmp.Length >0)
 {
 int id = int.Parse(tmp);
 int orderID = 0;
 tmp = Request.Params["ORDERID"];
 if (null!= tmp && tmp.Length >0)
 {
 orderID = int.Parse(tmp);
 }
 OMI_MERCHANT_REF_NO.Value = orderID.ToString();
 // Look up Item information from DB// In this example it is hardcodedstring itemName = "Widget";
 double itemCost = 42.42;
 double itemShipping = 1.00;
 // User will see this in Memo box on GoldMoney purchase page memo = "Payment for" + itemName;
 // Storage for additional merchant information// Item identification stored here in this example but could be anything. MERCHANT_FIELD_1.Value = id.ToString();
 OMI_CURRENCY_AMT.Value = string.Format("{0:0.00}",itemCost + itemShipping);
 }
 string emailStr = Request.Params["EMAIL"];
 if (null!= emailStr)
 {
 MERCHANT_FIELD_EMAIL.Value = emailStr;
 }
 string firstName = Request.Params["FIRST"];
 if (null!= firstName)
 {
 firstName = HttpUtility.UrlDecode(firstName);
 MERCHANT_FIELD_FIRSTNAME.Value = firstName;
 }
 string lastName = Request.Params["LAST"];
 if (null!= lastName)
 {
 firstName = HttpUtility.UrlDecode(lastName);
 MERCHANT_FIELD_LASTNAME.Value = lastName;
 }
 OMI_MERCHANT_MEMO.Value = memo;
 }
 catch (Exception ex)
 {
 // Log and handle exception }
}

GoldMoney通知

第三部分是自动化自动化。 GoldMoney将会发布到这个页面 GMNotify.aspx,它的中包含成功付款的所有参数和你传递给它的商家变量。 这里示例假定GoldMoney已经发布到SSL安全页,因此无法截获变量。 通知页面通过检查网站和GoldMoney之间的共享密钥来验证消息是否来自 GoldMoney。 这里密钥和此页的URL在GoldMoney帐户的设置中设置。 在确认订单之后,在你需要完成订单的任何代码中放置。

privatevoid Page_Load(object sender, System.EventArgs e)
{
 string _secretKey = "verybadsecretkey";
 string holdingNo = "12-34-56-A";
 try {
 // Check if valid transactionif (Request.Form["OMI_SECRET_KEY"].CompareTo(_secretKey) == 0)
 {
 if (Request.Form["MERCHANT_FIELD_EMAIL"].Length >0)
 {
 string email = Request.Form["MERCHANT_FIELD_EMAIL"];
 // verify that payment is proper amountif (Request.Form["OMI_MERCHANT_HLD_NO"].CompareTo(holdingNo) == 0)
 {
 int orderID = int.Parse(Request.Form["OMI_MERCHANT_REF_NO"]);
 int itemID = int.Parse(Request.Form["MERCHANT_FIELD_1"]);
 int currencyCode = int.Parse(Request.Form["OMI_CURRENCY_CODE"]);
 double amount = double.Parse(Request.Form["OMI_CURRENCY_AMT"]);
 // Validate orderID with amounts and itemID.string firstName = Request.Form["MERCHANT_FIELD_FIRSTNAME"];
 string lastName = Request.Form["MERCHANT_FIELD_LASTNAME"];
 // Mail out reciept and fullfill order }
 }
 else {
 // no email to send reciept too log it }
 }
 else {
 // possible fraud, shared secret key with GoldMoney doesn't match. }
 }
 catch//(Exception ex) {
 // Something bad happened log it. }
}

安全注意事项

为了清楚起见,我在这里代码中简化了许多安全检查。 应该注意,用户可以截获和更改从 GMCollect.aspxGMRedirect.aspx的数据传输。 建议使用更安全的方法,如会话变量或者哈希检查。

另一个安全问题是验证订单信息和从GoldMoney发送的价格是否匹配。 尽管不太可以能,对于客户来说,调整GoldMoney的价格是可以能的,但是保留同样的订单。

更多信息

若要设置免费的GoldMoney帐户,请访问 GoldMoney.com。 GoldMoney OMI实现文档在这里定位

免责声明

此外,这里文档和附带的文件提供,没有表示或者隐含的。 无可能损坏的责任,或者它的功能中的副作用。 用户必须承担使用这里代码的全部风险。 如果你的计算机。网站。软件。声誉或者你的爱生活中任何损坏,作者和,都不会受到任何。 使用自己的风险。


INT  接口  mer  
相关文章