原创
car_5

上一篇介绍了微信JsApi支付方式,本篇介绍到扫码支付,后面还会介绍App支付。

扫码支付的应用场景,如您的B2C网站有很多商品,商品支付方式中的微信支付会贴出一个二维码,扫此码即可使用微信支付。

我这里创建了一个WbApi,用于生成并返回商品的二维码图片(关于WebApi返回图片、Json等类型,请见http://itdos.com/Mvc/20150302/0741255.html

public HttpResponseMessage GetQrCode([FromUri]Guid orderId)
{
    //创建统一支付
    var uOrder = PayUtil.GetUnifiedOrder(new PayParam()
    {
        ProductName = "商品名称",
        OrderNumber = "订单编号",
        TotalFee = 100,//总价,单位:分。100表示1元。
        TimeExpire = "过期时间",//格式:yyyyMMddHHmmss
        TradeType = EnumHelper.TradeType.NATIVE,
        NotifyUrl = "http://ITdos.com/WeChat/OrderNotify"
    });
    var xe = XElement.Parse(result, LoadOptions.SetLineInfo);
    //图二维码地址
    var codeUrl = xe.GetElement("code_url").Value;
    //这里我使用了QuickMark.dll把codeUrl生成二维码,各位也可以替换成其它二维码生成组件
    var ctc = new CreateTwoCode();
    var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Content/" + orderId + ".bmp");
    ctc.CreateNewCode(codeUrl, path);
    var resp = new HttpResponseMessage(HttpStatusCode.OK)
    {
        Content = new ByteArrayContent(File.ReadAllBytes(path))
    };
    resp.Content.Headers.ContentType = new MediaTypeHeaderValue("image/bmp");
    return resp;
}

当用户扫描以上返回的二维码时,会直接弹出支付商品的界面,用户支付成功后,微信会调用支付回调接口,即上面的NotifyUrl参数,回调接口处理方式同:

Dos.WeChat微信开发组件教程 - 微信JsApi支付