ZhiYeJianKang_PeiXun/Song.Site/Pay/Weixin/NativePayPage.aspx.cs
2025-02-20 15:41:53 +08:00

109 lines
4.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 WeiSha.Common;
using Song.ServiceInterfaces;
using Song.Entities;
using LitJson;
using WxPayAPI;
namespace WxPayAPI
{
/// <summary>
/// 扫码支付
/// </summary>
public partial class NativePayPage : System.Web.UI.Page
{
//支付接口ID
int pi = WeiSha.Common.Request.QueryString["pi"].Int32 ?? 0;
//流水号,即商户订单号
string serial = WeiSha.Common.Request.QueryString["serial"].String;
protected int total_fee = 0; //充值的钱数
int orgid = 0; //机构id
string mchid = string.Empty; //商户ID微信支付中心的商户ID)
string paykey = string.Empty; //商户支付密钥
string appid = string.Empty; //公众号appid
string secret = string.Empty; //公众号secret
string notify_url = string.Empty; //回调地址
//支付接口id
Song.Entities.PayInterface payInterface = null;
Song.Entities.MoneyAccount moneyAccount = null;
//当前账号
protected Song.Entities.Accounts acc = Song.Extend.LoginState.Accounts.CurrentUser;
protected string accphoto = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
//此页面的ajax提交全部采用了POST方式
if (Request.ServerVariables["REQUEST_METHOD"] == "GET")
{
//初始化数据
initData();
//学员头像
if (acc == null)
{
Response.Redirect("/student/index.ashx");
return;
}
if (!System.IO.File.Exists(WeiSha.Common.Upload.Get["Accounts"].Physics + acc.Ac_Photo))
{
accphoto = WeiSha.Common.Upload.Get["Accounts"].Virtual + acc.Ac_Photo;
}
Song.Entities.MoneyAccount maccount = Business.Do<IAccounts>().MoneySingle(serial);
if (maccount != null && maccount.Ma_IsSuccess) return;
//开始生成二维码
NativePay nativePay = new NativePay();
//****生成扫码支付模式二url
//付款方信息
string buyer = string.Empty;
if (acc != null) buyer = string.IsNullOrWhiteSpace(acc.Ac_MobiTel1) ? acc.Ac_AccName : acc.Ac_MobiTel1;
//平台名称,会显示在支付界面(微信扫码后,在手机中显示)
Song.Entities.Organization org = Business.Do<IOrganization>().OrganCurrent();
string url2 = nativePay.GetPayUrl(total_fee.ToString(), org.Org_PlatformName, serial, total_fee, appid, mchid, paykey, notify_url, buyer);
//将url生成二维码图片
//Image1.ImageUrl = "MakeQRCode.aspx?data=" + HttpUtility.UrlEncode(url1);
Image2.ImageUrl = "MakeQRCode.aspx?data=" + HttpUtility.UrlEncode(url2);
}
//此页面的ajax提交全部采用了POST方式
if (Request.ServerVariables["REQUEST_METHOD"] == "POST")
{
//监听充值是否完成,通过商户订号判断
Song.Entities.MoneyAccount maccount = Business.Do<IAccounts>().MoneySingle(serial);
int state = 0;
Log.Info(this.GetType().ToString(), "商户流水号 : " + serial);
if (maccount != null)
{
Log.Info(this.GetType().ToString(), "支付状态 : " + maccount.Ma_IsSuccess);
if (maccount.Ma_IsSuccess) state = 1;
}
Response.Write(state);
Response.End();
}
}
/// <summary>
/// 初始化数据
/// </summary>
private void initData()
{
this.payInterface = Business.Do<IPayInterface>().PaySingle(pi);
this.moneyAccount = Business.Do<IAccounts>().MoneySingle(serial);
total_fee = (int)(moneyAccount.Ma_Money * 100);
orgid = moneyAccount.Org_ID;
appid = payInterface.Pai_ParterID; //绑定支付的APPID必须配置
secret = payInterface.Pai_Key; //公众帐号secert仅JSAPI支付的时候需要配置
WeiSha.Common.CustomConfig config = CustomConfig.Load(payInterface.Pai_Config);
mchid = config["MCHID"].Value.String; //商户id
paykey = config["Paykey"].Value.String; //支付密钥
//回调地址
notify_url = this.payInterface.Pai_Returl;
if (string.IsNullOrWhiteSpace(notify_url)) notify_url = "http://" + WeiSha.Common.Server.Domain + "/";
if (!notify_url.EndsWith("/")) notify_url += "/";
notify_url += "Pay/Weixin/NativeNotifyPage.aspx";
}
}
}