有谁做过在线支付的,最后是有源码,通过支付宝、paypal都可以。谢谢了

解决方案 »

  1.   

    这个函数就是返回生成的地址,里面注释掉的看你自己需要可以添加进去,然后就是md5码的问题,现在用默认的md5生成程序对中文的支持只限于GB2312,而支付宝使用的是GBK,虽然两个编码的内容GBK兼容GB2312但是毕竟两个编码方式不同,所以会产生错误,如果用英文或者数字不会有问题。上面下载里面带的一个md5.asp的算法支持中文。
            现在已经可以跳转到支付宝的页面了,而我们这边就要自己记录用户的信息已经生成的定单编号,这样在支付宝返回信息的时候来查询。在设定了返回地址后,我们就要看接收页面了。
    string msg_id,order_no,gross,buyer_email,buyer_name,buyer_address,buyer_zipcode,buyer_tel,buyer_mobile,action,s_date,ac,notify_type;
        
                string returnTxt;//返回给支付宝通知接口的结果
                string alipayNotifyURL;//支付宝查询接口URL
                string myalipayEmail;//商户的支付宝Email
                string ResponseTxt="";
                    returnTxt            = "N";
                alipayNotifyURL        = ConfigurationSettings.AppSettings["interfaceback"];//支付宝查询接口地址
                myalipayEmail        = ConfigurationSettings.AppSettings["account"];//填写您的支付宝帐号    
                //检查支付宝通知接口传递过来的参数是否合法
                msg_id            = newop.DelStr(Request["msg_id"]);
                order_no        = newop.DelStr(Request["order_no"]);
                gross            = newop.DelStr(Request["gross"]);
                buyer_email        = newop.DelStr(Request["buyer_email"]);
                buyer_name        = newop.DelStr(Request["buyer_name"]);
                buyer_address    = newop.DelStr(Request["buyer_address"]);
                buyer_zipcode    = newop.DelStr(Request["buyer_zipcode"]);
                buyer_tel        = newop.DelStr(Request["buyer_tel"]);
                buyer_mobile    = newop.DelStr(Request["buyer_mobile"]);
                action            = newop.DelStr(Request["action"]);
                s_date            = newop.DelStr(Request["date"]);
                ac                = newop.DelStr(Request["ac"]);
                notify_type     = newop.DelStr(Request["notify_type"]);            alipayNotifyURL    = alipayNotifyURL + "msg_id=" + msg_id + "&email=" + myalipayEmail + "&order_no=" + order_no;
        
                System.Net.WebClient isClient= new System.Net.WebClient();
                Stream isStream = isClient.OpenRead(alipayNotifyURL);
                StreamReader isReader = new StreamReader(isStream,System.Text.Encoding.GetEncoding("GB2312"));
                ResponseTxt = isReader.ReadToEnd();if(action == "test")//测试商户网站URL是否正确安装
                {
                    returnTxt    = "Y";
                }
                else if((action=="sendOff")&&(msg_id!=""))//发货通知
                {
                    returnTxt        = "N";
                    if((ResponseTxt == "true")||(ResponseTxt == "false"))
                    {
                        //更新数据在商户系统里的订单数据;如果已经发货,则将returnTxt置为Y,否则为N
            
                    }
                    else
                    {
                        //非法数据,不做更新
                        returnTxt="Error";
                    }
                }
                else if((action=="sendOff")&&(notify_type=="web"))
                {
                    //检查是否已经付帐,并记录            }
                else if((action=="checkOut")&&(msg_id!=""))//交易结束通知
                {
                    returnTxt    = "Y";
                    if((ResponseTxt=="true")||(ResponseTxt == "false"))
                    {
                        //更新数据在商户系统里的订单数据;如果数据更新成功,则将returnTxt置为Y,否则为N
                        //更新数据
                        
    //你的代码,更新你这边数据
                        returnTxt= "Y";
                    }
                    else
                    {
                        //非法数据,不做更新
                        returnTxt    = "Error";
                    }    
                }
                else
                {
                    returnTxt="Error";
                }
                Response.Write(returnTxt);
    中间那段webclient是返回支付宝查询这个消息是不是支付宝发出的,这里也使用的是获取支付宝那里一个查询接口的结果,True或者False。
    这样就完成了整个支付的流程,而你需要做的就是记录用户买的数据,然后接受支付宝给你的信息并确认是否正确,而且是否已经购买或者已经发货,从而完成你的销售过程。接收页面做的标准就是在直接访问的情况下显示的结果只有N或者Y或者其他你设定的returnTxt的值,如果有其他内容将会不能实现功能。
            支付宝现在的即时到帐功能还没有正式发布,请不要私自做,要不然会出现麻烦。
      

  2.   

    这个支付宝具体没还没有试过(网上的),paypal的话去申请帐号,然后生成代码,根据代码后台传递参数,
    这里给一些paypal参数参考:
    如果你使用paypal[国内贝宝]的即时付款通知,在paypal会在付款操作的自动返回url里POST一段参数给你,类似如下连接: http://www.leoneo.com/paypal/test.php?tx=x9E67578X9184704L&st=Completed&amt=0.01&cc=CNY&cm=&sig=FYR%2fc2Q3NTzO0R....etc 
    其中主要参数是 tx=tx=x9E67578X9184704L , 这是此次交易的标志ID,可以利用脚本来依照此ID获取当前交易的信息,发送查询后,paypal会返回一串格式化信息,通常有以下信息 mc_gross  交易收入  
    address_status  地址信息状态  
    paypal_address_id  Paypal地址信息ID  
    payer_id  付款人的Paypal ID  
    tax  税收  
    address_street  通信地址  
    payment_date  交易时间  
    payment_status  交易状态  
    charset  语言编码  
    address_zip  邮编  
    first_name  付款人姓氏  
    address_country_code  国别  
    address_name  收件人姓名  
    custom  自定义值  
    payer_status  付款人账户状态  
    business  收款人Paypal账户  
    address_country  通信地址国家  
    address_city  通信地址城市  
    quantity  货物数量  
    payer_email  付款人email  
    txn_id  交易ID  
    payment_type  交易类型  
    last_name  付款人名  
    address_state  通信地址省份  
    receiver_email  收款人email  
    address_owner  尚未公布/正式启用  
    receiver_id  收款人ID  
    ebay_address_id  易趣用户地址ID  
    txn_type  交易通告方式
     
    item_name  货品名称  
    mc_currency  货币种类  
    item_number  货品编号  
    payment_gross  交易总额[只适用于美元情况]  
    shipping  运送费