一.回顾

支付宝插件源码下载地址:点击下载      

    上篇介绍了使用支付宝插件进行支付,全额退款,部分退款还有插件的多店铺配置,本文介绍下如何实现的。

二.前期准备

    插件主要有3个功能:

  1. 多店铺插件配置 
  2. 支付功能
  3. 退款功能

   数据库支持:

  1. 新增dbl_PaymentInfo表保存支付记录。
  2. 新增dbl_RefundInfo表保存退款记录。

   其他准备:

  1. 支付宝即时到账PID和MD5秘钥Key,可通过支付宝开放平台获取。

nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(下)

三.流程规划 

  1. 插件安装卸载流程

nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(下)

   2.  支付流程

nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(下)

   3.  退款流程

nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(下)

四.创建项目

    1.  新建类库项目,名称为 DaBoLang.Nop.Plugin.Payments.AliPay,位置放在Plugins下

nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(下)

    2.  点击项目快捷键Alt+Enter进入项目属性,

         设置输出路径为..\..\Presentation\Nop.Web\Plugins\DaBoLang.Payments.AliPay\

nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(下)

    3.  安装相关包:项目根目录新建packages.config文件,内容如下

  1 <?xml version="1.0" encoding="utf-8"?>
  2 <packages>
  3   <package  />
  4   <package  />
  5   <package  />
  6   <package  />
  7   <package  />
  8 </packages>

      打开【工具】【NuGet 包管理器】【程序包管理器控制台】,

      输入下边命令更新包: Update-Package -ProjectName 'DaBoLang.Nop.Plugin.Payments.AliPay'  -Reinstall

nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(下)

      最后添加 Nop.Core  Nop.Data   Nop.Services  Nop.Web.FrameWork 项目引用

    4.  创建插件描述文件:根目录新建Description.txt文件 用于插件描述,写入内容如下:

  1 Group: Payment methods
  2 FriendlyName: 支付宝
  3 SystemName: DaBoLang.Payments.AliPay
  4 Version: 1.00
  5 SupportedVersions: 3.90
  6 Author: 大波浪
  7 DisplayOrder: 1
  8 FileName: DaBoLang.Nop.Plugin.Payments.AliPay.dll
  9 Description: 支付宝 即时到账 插件,支持支付,退款

    5. 创建项目目录,如果你已经下载了插件项目参考项目目录如下:

nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(下)

  • Alipay  支付宝即时到账相关
  • Controllers 控制器文件夹
  • Data    数据库相关
  • Domain 实体类
  • Models  模型
  • Services  服务接口
  • Views  视图
  • AliPayPaymentProcessor.cs   支付插件实现类
  • AliPayPaymentSettings.cs     支付宝即时到账配置类
  • DependencyRegistrar.cs     依赖注入扩展类
  • Description.txt   插件描述文件
  • RouteProvider.cs    路由注册类

五.创建数据库

     项目我们已经创建好了。记下来我们创建付款记录表和退款记录表用于保存相关记录。nop使用的是ORM框架为Entity Framework框架,我们使用Code First模式来创建。

nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(下)

    1.  在Domain文件夹创建nopCommerce 3.9 大波浪系列 之 可退款的支付宝插件(下)PaymentInfo类用于保存付款信息,RefundInfo类用于保存退款信息。

nop中的实体类需要继承 Nop.Core.BaseEntity 抽象方法。

  1 using Nop.Core;
  2 using Nop.Core.Domain.Customers;
  3 using Nop.Core.Domain.Orders;
  4 using System;
  5 using System.Collections.Generic;
  6 using System.Diagnostics;
  7 using System.Globalization;
  8 using System.Linq;
  9 
 10 namespace DaBoLang.Nop.Plugin.Payments.AliPay.Domain
 11 {
 12     /// <summary>
 13     /// 命名空间:DaBoLang.Nop.Plugin.Payments.AliPay.Domain
 14     /// 名    称:PaymentInfo
 15     /// 功    能:实体类
 16     /// 详    细:付款记录
 17     /// 版    本:1.0.0.0 
 18     /// 作    者:大波浪
 19     /// 联系方式:http://www.cnblogs.com/yaoshangjin
 20     /// 说    明:
 21     /// </summary>
 22     public partial class PaymentInfo : BaseEntity
 23     {
 24         #region Properties
 25         public Guid PaymentGuid { get; set; }
 26         /// <summary>
 27         /// 订单编号
 28         /// </summary>
 29         public int OrderId { get; set; }
 30         /// <summary>
 31         /// 插件SystemName
 32         /// </summary>
 33         public string Name { get; set; }
 34         /// <summary>
 35         /// 交易金额
 36         /// </summary>
 37         public decimal Total { get; set; }
 38         /// <summary>
 39         /// 订单编号外部交易号
 40         /// </summary>
 41         public string Out_Trade_No { get; set; }
 42         /// <summary>
 43         /// 说明
 44         /// </summary>
 45         public string Note { get; set; }
 46         /// <summary>
 47         /// 交易号,内部交易号,支付宝交易号或者微信交易号
 48         /// </summary>
 49         public string Trade_no { get; set; }
 50         /// <summary>
 51         /// 第三方交易状态
 52         /// </summary>
 53         public string Trade_status { get; set; }
 54         /// <summary>
 55         /// 收款单位email
 56         /// </summary>
 57         public string Seller_email { get; set; }
 58         /// <summary>
 59         /// 收款单位id
 60         /// </summary>
 61         public string Seller_id { get; set; }
 62         /// <summary>
 63         /// 付款账户id
 64         /// </summary>
 65         public string Buyer_id { get; set; }
 66         /// <summary>
 67         /// 付款账户email
 68         /// </summary>
 69         public string Buyer_email { get; set; }
 70        /// <summary>
 71        /// 内部订单创建时间
 72        /// </summary>
 73         public DateTime CreateDateUtc { get; set; }
 74 
 75         #endregion
 76     }
 77 }
 78 
PaymentInfo

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-09-24
  • 2022-12-23
  • 2021-08-30
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-16
  • 2022-12-23
  • 2021-08-12
相关资源
相似解决方案