Skip to content

简介

RsCode.Payment软商网络开发的第三方支付平台SDK,使用.net技术开发,帮助应用快速接入支付系统

支持多个商户号同时支付,开发包包含支付宝sdk,微信支付sdk,抖音支付sdk

Gitee StarsGitee ForksGitHub StarsGitHub ForksVistorsLicense

快速入门

  1. 引用 RsCode.Payment.Tenapy.dllRsCode.Payment.Alipay.dll

  2. 在项目根目录下创建pay.json文件,配置支付参数,内容如下

    pay.json配置

    json
     "Default": {
       "TenpayMchId": "1425xxxx", //默认微信支付商户号
       "AppId": "wx7c8296xxxxx"//默认应用Id
     },
     "Payment": [
       {
         "PaymentStatus": true,
         "PaymentChannel": 1,   //支付渠道类型 1微信支付 2支付宝
         "Rate": 0.6,
         "MchId": "1425162102",  //商户号
         "APIKey": "",   //微信支付APIkey
         "APIKeyV3": "", //微信支付APIkey v3
         "CertPassword": "1425162102",           //证书密码,默认为商户号
         "PrivateKey": "cert\\1425162102\\apiclient_cert.p12", //私钥p12证书路径
         "NotifyUrl": "https://xxx/tenpay/notify",               //支付回调地址
         "MchType": 0
       },
       {
         "PaymentStatus": true,
         "PaymentChannel": 2, //支付渠道类型 1微信支付 2支付宝
         "Rate": 0.6,
         "MchId": "20210021xxxxxxx",
         "PublicKey": "cert\\alipay\\appCertPublicKey_xxxxxxx.crt",  //应用的公钥
         "PrivateKey":"MIIEpAxxxxxxxxxxxxxxxxxx", //应用私钥,使用支付宝密钥工具将生成的私钥转成PKCS1格式后使用
         "PlatformPublicKey": "cert\\alipay\\alipayCertPublicKey_RSA2.crt",
         "PlatformRootCert": "cert\\alipay\\alipayRootCert.crt",
         "NotifyUrl": "/alipay/notify",
         "MchType": "0"
       } 
     ],
     "App": [
       {
         "AppId": "wx4d99c02xxx",
         "MchId": "1487740992",
         "Token": "",
         "AppSecret": "ab5a2daa9",
         "PayChannel": 1,
         "Description": "weihuo mp",
         "AppType": 1
       }
     ],

    证书文件存储路径 /cert/

    规则:公钥,私钥是路径还是内容的规则, 如果以cert开头视为证书文件 ,否则为证书内容

  3. 调用支付

    csharp
    ITenpayClient tenpay;
    public Demo(IEnumerable<ITenpayClient> _tenpay)
    {        
        tenpay = _tenpay.FirstOrDefault(p => p.Ver == "3") ;
    }
    public void ff(){
      var options=  tenpay.UseMchId("mchid")
        //tenpay.SendAsync<>()
    }
  4. 实例代码

csharp
public class Service
{ 
  ITenpayClient tenpay; //微信支付客户端
  IAlipayClient alipay; //支付宝客户端  
  public Service(ITenpayClient _tenpayIAlipayClient _alipay)
  {
     tenpay=_tenpay;
	 //设置支付api版本
	 tenpay = _tenpay.FirstOrDefault(p => p.Ver == "2");
     alipay=_alipay;
  }
  
  public async Task TestPay()
  {
     //使用支付配置
     tenpay.UseMchId(mchId);
	 var redpack = new RedpacketSendRequest(info.OrderNo,
                    options.MchId,
                    "软商网络",
                    appId,
                    info.OpenId,
                   "感谢您参与优惠活动",
                    "优惠活动",
                    "参与越多得越多",
                    0 - info.WidthdrawalAmount,
                    "PRODUCT_2"
                    );

                var ret = await tenpay.SendAsync<RedpacketSendResponse>(redpack);
  }
}

实例项目

交易宝收款软件是使用这个库进行开发的应用

PC网站 时,可以显示二维码 两种做法: 1.使用jsapi接口,公众号支付时使用 订单创建后,在业务服务器完成预支付信息,生成二维码图片返给前端,前端显示图片 ;

2.native接口,PC端直接支付时使用 订单创建后,请求native接口,它返回微信支付的字符串,由前端生成二维码图片并显示

名词解释

支付场景(pay_scene)

app发起支付的场景,取值范围 1jsapi 2app 3 native

支付渠道(pay_channel)

第三方支付信息 取值范围 1微信 2支付宝

支付客户端

以应用为单位,系统为应用分配唯一的clientId 每个应用只能对应一种支付场景 每个clientId可以分配多个商户号

注意事项

pay.json 证书使用p12证书 相对网站的路径 例 cert/apicert.p12
支付回调地址 可以添加上商户号 例: tenpay/notify/mchId

其它

微信支付请求客户端,分两个版本: TenpayClient TenpayClientV3

默认情况下,直接注入ITenpayClient client 使用V3版本的微信支付 调用支付 client.UseMchId(mchId); 发送业务请求 client.SendAsync<TenpayBaseResponse>(TenpayBaseRequest quest,certSerialNo) certSerialNo为本请求使用的证书序列号,不写时,使用p12证书序列号

使用v2版本的微信支付API,注入IEnumerable<ITenpayClient> tenpayClients

csharp
ITenpayClient tenpay = tenpayClients.FirstOrDefault(x => x.Ver == "2");

微信支付业务

开通条件

商家开通微信支付条件:

  1. 注册成为微信支付商家并完成登录 注册地址 https://pay.weixin.qq.com

  2. 打开产品中心-开发配置-JSAPI支付-添加支付目录授权

  3. 打开产品中心-Appid账号管理-关联AppId

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_3

服务商分账

特约商户开通分账功能

服务商发起邀请 产品中心--特约商户授权产品--服务商分账 特约商户列表 选择商户,发起邀请