简介

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

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

Gitee Starsopen in new windowGitee Forksopen in new windowGitHub Starsopen in new windowGitHub Forksopen in new windowVistorsopen in new windowLicenseopen in new window

快速入门

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

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

    pay.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. 调用支付

    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. 实例代码

public class Service
{ 
  ITenpayClient tenpay; //微信支付客户端
  IAlipayClient alipay; //支付宝客户端  
  public Service(ITenpayClient _tenpay,IAlipayClient _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);
  }
}

实例项目

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

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

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

服务商分账

特约商户开通分账功能

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

上次更新:
贡献者: kuiyu