扫码支付官网有模式一和模式二两种方法,简单看了下,感觉模式一有点坑,而且查了下貌似评价都不好,所以就只用了模式二。 相关链接:扫码支付
public class NativePay
{
/**
* 生成直接支付url,支付url有效期为2小时,模式二
* @param productId 商品ID
* @return 模式二URL
*/
public string GetPayUrl(UnifiedOrderModel unifiedOrderModel)
{
//Log.Info(this.GetType().ToString(), "Native pay mode 2 url is producing...");
WxPayData data = new WxPayData();
data.SetValue("body", unifiedOrderModel.body);
data.SetValue("attach", unifiedOrderModel.attach);
data.SetValue("out_trade_no", unifiedOrderModel.out_trade_no);
data.SetValue("total_fee", unifiedOrderModel.total_fee);
data.SetValue("time_start", unifiedOrderModel.time_start);
data.SetValue("time_expire", unifiedOrderModel.time_expire);
data.SetValue("goods_tag", unifiedOrderModel.goods_tag);
//交易类型,JSAPI 公众号支付, NATIVE 扫码支付, APP APP支付
data.SetValue("trade_type", "NATIVE");
data.SetValue("product_id", unifiedOrderModel.productId);
WxPayData result = WxPayApi.UnifiedOrder(data);//调用统一下单接口
if (!result.IsSet("code_url"))
{
throw new Exception("扫码支付地址获取失败!");
}
string url = result.GetValue("code_url").ToString();//获得统一下单接口返回的二维码链接
//Log.Info(this.GetType().ToString(), "Get native pay mode 2 url : " + url);
return url;
}
}
function Pay() {
$.ajax({
type: "post",
url: "url",
dataType: "json",
data: {
"method": "GetPayUrl",
"body": $("#body").val(),
"attach": $("#attach").val(),
"out_trade_no": $("#out_trade_no").val(),
"total_fee": $("#total_fee").val(),
"goods_tag": $("#goods_tag").val(),
"productId": $("#productId").val()
},
success: function (data) {
var item = eval(data); //转换成json对象访问
alert(data.url);
if (data.url) {
$('#qrcodeCanvas').qrcode({
text: data.url
});
} else {
alert(data.error);
}
return;
}
});
}
二维码生成用的是JQ的jquery.qrcode.min.js,具体查下就好了,几句话而已,没什么复杂的。