@xiaoyixy
2018-03-07T06:38:04.000000Z
字数 4232
阅读 2382
目录

找到 PayType 表,添加一条支付类型。
如:
| PayTypeID | PayTypeName | PayTypeDesc | Period | PaymentPage | PayRate | IsNet | IsPayWhenRecv | OrderNumber | IsOnlineShow | ProductSaleType | isInvoice |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 5 | 微信支付 | 微信支付 | 实时到账 | wcpay | 0.000000 | 1 | 0 | 1 | 1 | 0 | 0 |
找到 PayType_Sequence 表,添加一条记录。(待确认)
如
| SysNo | CreateTime |
|---|---|
| 5 | 2018-03-01 10:17:02.927 |
找到 DBC_Config 表, 添加微信扫码支付接入接口认证相关参数字段记录(主要供WcPayMode.cs调用)
* 按照 微信统一下单接口 需要的认证参数新增字段
| SysNo | DbcKey | DbcValue | Description | CreateTime | CreateUser | UpdateTime | UpdateUser |
|---|---|---|---|---|---|---|---|
| sysno | pay_WcPay_appid | XXXXXXX | 安全校验码(Key) | 2018-03-01 16:47:24.000 | 系统管理员 | 2018-03-01 15:43:34.000 | 系统管理员 |
| 101 | pay_WxPay_key | 1bec493fda794aef4f1556321fbb2257 | 商户平台密钥key | ||||
| 102 | pay_WxPay_app_id | wxc07579f885b7f399 | 企业号corpid | ||||
| 103 | pay_WxPay_mch_id | 1246169201 | 微信支付分配的商户号 | ||||
| 104 | pay_WxPay_notify_url | http://www.tp-linkshop.com.cn/Pay/WcPay_NotifyReturn | 微信异步通知回调接口 |
[Obsolete] 新增微信支付流水记录表 SO_Wcpay, 结构如下
| SysNo | SOSysNo | WcpayTradeNo |
|---|---|---|
| 记录编号 | 订单编号 | 流水号 |
// 可能需要维护的数据表:PayType? PayType_SequenceDBC_ConfigSO_WcpayRO_Refundnetpayfinance_netpayfinance_soincomefinance_soincome_voucherdo_masterro_masterWaybill_MasterStock
// 可能需要维护的页面:../Finance/RefundSingle.aspx?url=退款单维护../Finance/NetPaySearch_DBC.aspx?url=网上支付查询(待确认)../Finance/SaleIncomeSearch_DBC.aspx?url=应收款管理../Sale/ROSearchWX.aspx?url=退货单维护../Sale/ROSummary_DBC.aspx?url=退货单统计../Sale/SOManager_DBC.aspx?url=销售单维护
找到
\MVC\MVC.Web\Views\Shopping\_PayType.cshtml
编辑:
// 添加int wcpaySysNo = 5; // 微信支付的SysNo// 定位到 if (p.SysNo == onlinePaySysNo)if (p.SysNo == onlinePaySysNo){...}// 修改else if (p.SysNo == alipaySysNo || p.SysNo == wcpaySysNo){<div class="paytypename">支付宝/微信支付:<span class="c_text3">(@alipayDesc)</span></div><div class="paytype-list pr paytypebottom"><ul><li class="paytype-list pr"><div class="item-radio pa"><input type="radio" name="sel_pay" class="hidden" id="PayType@(p.SysNo)" @chk value="@p.SysNo" /><label class="@chk2" style="display: block;" id="lab_@(p.SysNo)" for="PayType@(p.SysNo)" onclick=" DBCMvcShopping.Check.RadioToggle('lab_@(p.SysNo)');DBCMvcShopping.Check.Sel_PayType(@(p.SysNo), '@Html.Raw(p.PayTypeName)', ''); "></label></div><label for="PayType@(p.SysNo)"><img width="152" height="37" id="PayTypePic@(p.SysNo)" class="payTypeImg pa @(i == 0 ? "active" : "")" src="@Url.Content(bankIconPath + "alipay.jpg")"/></label></li><li class="paytype-list pr"><div class="item-radio pa"><input type="radio" name="sel_pay" class="hidden" id="PayType@(p.SysNo)" @chk value="@p.SysNo" /><label class="@chk2" style="display: block;" id="lab_@(p.SysNo)" for="PayType@(p.SysNo)" onclick=" DBCMvcShopping.Check.RadioToggle('lab_@(p.SysNo)');DBCMvcShopping.Check.Sel_PayType(@(p.SysNo), '@Html.Raw(p.PayTypeName)', ''); "></label></div><label for="PayType@(p.SysNo)"><img width="152" height="37" id="PayTypePic@(p.SysNo)" class="payTypeImg pa @(i == 0 ? "active" : "")" src="@Url.Content(bankIconPath + "wcpay.jpg")"/></label></li></ul></div>}// 添加样式ul li.paytype-list {float: left;display: inline-block;width: 227px;height: 60px;}
定位到\MVC\MVC.Web\Controllers\
新增类 WcPay.cs
public class WcPay : Pay{public override string BuilderForm(GroupShoppingApplicationInfo g){...}public override string BuilderForm(SOInfo so){...}public override string PayNotifyResult(HttpRequestBase request){...}public override bool PayResult(HttpRequestBase request, out string msg){...}}
新增类 WcPayMode.cs(主要用来存储构建调用请求 API 的参数), 并完成初始化
public class WcPayMode{private string _price;public string body { get; set; }public string gateway{get { return DbcConfigManager.GetInstance().GetDBCConfigString("pay_WcPay_appid"); }}public string price{get { return _price; }set { _price = Convert.ToDecimal(value).ToString("#########0.00"); }}// 省略余下部分必要参数...}
重写 WcPay.cs 的 BuilderForm 方法, 构建 XML 参数
public override string BuilderForm(SOInfo so){var builder = new StringBuilder();try{var mode = new WcPayMode{price = so.GetTotalAmt().ToString(CultureInfo.InvariantCulture),...};var sParaTemp = new SortedDictionary<string, string>{{"price", mode.price}...};var helper = new More.NetPayHelper();// 集成签名var dics = helper.BuildRequestPara(sParaTemp, mode.key, mode.sign_type, mode.input_charset);// 生成 HTML 表单builder.Append(helper.BulidFormHtml(dics, mode.gateway, "get"));}catch (BizException){}catch (Exception){// ignored}return builder.ToString();}
功能:
1. 接收微信支付结果,回复接收情况,通知微信后台系统不再发送该单的支付通知
2. 查询支付状态,作为是否发货的判断依据
主动查询支付状态,作为是否发货的判断依据
* 因为 code_url 有效期为2小时,过期后扫码不能再发起支付
数据库记录插入/更新?