微信扫码支付

微信扫码支付可以首先到官网下载一个API,我采用的是c#的

首先建一个index.aspx页面,可以输入一些基本的信息,如下图微信扫码支付_第1张图片

页面的详细代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="WxPayAPI.index" %>







   
   
   
   
   
   
       
   





 
   
   
     
   
 

   
   
         
       
     
微信扫码支付

   
   

       
   
填写订单信息

       
           
           
             
            
       
       

               
                 
                     
                       
                     
             
             

                       
                           
                               
                                   
                               
                           
                       

                                     
                                     
                                       
                                         
                                           
                                             
                                       
                                       
                                       
                                             
                                                   
                                                   
                                             
                                             
                                               
                                               
                                             
                                             
                                               
                                               
                                           
                                              <%--
                                           
                                           
                                         --%>
                                               
                                           
                                           
                                       
                                     
                                           
产品详情:
                                                                                                      onselectedindexchanged="DropDownList1_SelectedIndexChanged" AutoPostBack="True" Width="300" CssClass="login_wbk" 
                                                    style="height:25px; font-size:12px; line-height:25px " Font-Bold="True" >
                                                     --请选择--
                                                    产品
                                                    检查
                                                    临检
                                                    生化
                                                    免疫
                                                    病毒
                                                    尿便
                                                    特检
                                                    服务
                                                    其他
                                               

                                                  
                                                 
                                                         ontextchanged="TxtZiDingyi_TextChanged" AutoPostBack="True" >

                                                 
                                                 

                                                 
                                                 

                                               

                                         
订单金额:
                                                       
                                                    <%--                                                       ControlToValidate="order_no" Display="Dynamic" Font-Size="12px" ErrorMessage="(请填写订单金额)" 
                                                ForeColor="Red">
--%>
                                                       
折    扣:
                                                                                                            ontextchanged="Txtdiscount_TextChanged">
                                                      <%--                                                     ControlToValidate="Txtdiscount" Display="Dynamic" Font-Size="12px" ErrorMessage="(请填写订单折扣)" 
                                                ForeColor="Red">
--%>
                                                       
付款金额: 
                                               
简要说明:
                                             

                                              请填写您订单的简要说明(30字以内)
 
                                             
                                             
                                           
 

                                         

                                       

                                   

                       

             

       



   

 

第二步是根据产品id,生成二维码,官方api中有两种扫码方式,我采用的是模式二,详细在内容在NativePayPage.aspx页面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NativePayPage.aspx.cs" Inherits="WxPayAPI.NativePayPage" %>





   
     
    微信扫码支付


扫码支付模式一







扫码支付模式二






.cs

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Drawing;
using System.Text;
using ThoughtWorks;
using ThoughtWorks.QRCode;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;


namespace WxPayAPI
{
    public partial class NativePayPage : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Log.Info(this.GetType().ToString(), "page load");
            string productId = Request["productId"];
            //string product_name = Request["product_name"];
            string order_price = Request["order_price"];
            string ProName = Request["ProName"]; 
            NativePay nativePay = new NativePay();
            double money = 0;
            if (null == Request["order_price"])
            {
                Response.End();
                return;
            }
            try
            {
                money = Convert.ToDouble(order_price);
            }
            catch
            {
                //Response.Write("支付金额格式错误!");
                //Response.End();
                //return;
            }


            //生成扫码支付模式一url
            //string url1 = nativePay.GetPrePayUrl(productId);


            //生成扫码支付模式二url
            string url2 = nativePay.GetPayUrl(productId, money, ProName);


            //将url生成二维码图片
            Image1.ImageUrl = "MakeQRCode.aspx?data=" + HttpUtility.UrlEncode(url1);
            Image2.ImageUrl = "MakeQRCode.aspx?data=" + HttpUtility.UrlEncode(url2);
        }
    }
}

第三步是生成二维码的图片在MakeQRCode.aspx页面

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Text;
using ThoughtWorks;
using ThoughtWorks.QRCode;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;


namespace WxPayAPI
{
    public partial class MakeQRCode : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(Request.QueryString["data"]))
            {
                string str = Request.QueryString["data"];


                //初始化二维码生成工具
                QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
                qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
                qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
                qrCodeEncoder.QRCodeVersion = 0;
                qrCodeEncoder.QRCodeScale = 4;
                
                //将字符串生成二维码图片
                Bitmap image = qrCodeEncoder.Encode(str, Encoding.Default);


                //保存为PNG到内存流  
                MemoryStream ms = new MemoryStream();
                image.Save(ms, ImageFormat.Png);


                //输出二维码图片
                Response.BinaryWrite(ms.GetBuffer());
                Response.End();
            }
        }
    }
}

如下图

微信扫码支付_第2张图片

然后扫描二维码,付款即可

注意官方demo的Config.cs文件中需要配置一些东西,例如商户id,公众号id等

using System;
using System.Collections.Generic;
using System.Web;


namespace WxPayAPI
{
    
    //* 配置账号信息
   public class WxPayConfig
    {
        //=======【基本信息设置】=====================================
        /* 微信公众号信息配置
        * APPID:绑定支付的APPID(必须配置)
        * MCHID:商户号(必须配置)
        * KEY:商户支付密钥,参考开户邮件设置(必须配置)
        * APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置)
        */
        public const string APPID = "";
        public const string MCHID = "";
        public const string KEY = "";
        public const string APPSECRET = "";


        //=======【证书路径设置】===================================== 
        /* 证书路径,注意应该填写绝对路径(仅退款、撤销订单时需要)
        */
        public const string SSLCERT_PATH = "cert/apiclient_cert.p12";
        public const string SSLCERT_PASSWORD = "1233410002";






        //=======【支付结果通知url】===================================== 
        /* 支付结果通知回调url,用于商户接收支付结果
        */
       public const string NOTIFY_URL = "http://paysdk.weixin.qq.com/example/ResultNotifyPage.aspx";


        //=======【商户系统后台机器IP】===================================== 
        /* 此参数可手动配置也可在程序中自动获取
        */
        public const string IP = "";




        //=======【代理服务器设置】===================================
        /* 默认IP和端口号分别为0.0.0.0和0,此时不开启代理(如有需要才设置)
        */
        //public const string PROXY_URL = "http://10.152.18.220:8080";
        //public const string PROXY_URL = "http://0.0.0.0:0";


        //=======【上报信息配置】===================================
        /* 测速上报等级,0.关闭上报; 1.仅错误时上报; 2.全量上报
        */
        public const int REPORT_LEVENL = 1;


        //=======【日志级别】===================================
        /* 日志等级,0.不输出日志;1.只输出错误信息; 2.输出错误和正常信息; 3.输出错误信息、正常信息和调试信息
        */
        public const int LOG_LEVENL = 0;
    }
}

你可能感兴趣的:(C#)