Varorbc / PaySharp

PaySharp是一个支持多商户多种支付方式的跨平台网关处理类库,使用PaySharp可以简化订单的创建、查询、退款和接收网关返回的支付通知等操作。
MIT License
862 stars 265 forks source link

能否提供测试环境与正式环境的切换功能 #19

Closed FateNineMeow closed 6 years ago

FateNineMeow commented 6 years ago

比如 将 是否为测试环境 记录进配置文件 或者提供单独的字段/方法来进行修改 这样在从测试环境更新到正式环境的时候不需要去重新修改生成

Varorbc commented 6 years ago

这个不是ICanPay该处理的事情

FateNineMeow commented 6 years ago

但是我看源码里支付宝的网关你是用编译模式来判断的是沙箱还是正式环境,这个不已经由ICanPay处理了嘛...

leehom0123 commented 6 years ago

其实这个问题简单,在Getway配置时加一个参数,比如IsSandbox,然后在相关方法里判断一下,调用不同的url,以alipaygetway.cs文件为例:

    private const string GATEWAYURL = "https://openapi.alipaydev.com/gateway.do?charset=UTF-8";
    private const string SANDBOXGATEWAYURL = "https://openapi.alipay.com/gateway.do?charset=UTF-8";

.........

    public bool IsSandbox { get; set; }   //应该提取到 GatewayBase,现只是暂时说明问题放在这儿

......

    /// <summary>
    /// 初始化支付宝网关
    /// </summary>
    /// <param name="merchant">商户数据</param>
    public AlipayGateway(Merchant merchant,bool isSandbox)
        : base(merchant)
    {
        _merchant = merchant;
        IsSandbox = isSandbox;
    }

......

    public override string GatewayUrl
    {
        get
        {
            if (IsSandbox)
            {
                return SANDBOXGATEWAYURL;
            }
            else
            {
                return GATEWAYURL;
            }
        }
    }

......

大体可以解决楼主问题,楼主自行fork去改吧,或是看作者接受我们的意见不,或是楼主自己改一份提交给作者

Varorbc commented 6 years ago

你可以在创建支付网关的时候把网关地址改成沙箱地址,没必要再搞个沙箱参数

leehom0123 commented 6 years ago

但微信的沙箱网址很多哇,且只能设置支付的那个

Varorbc commented 6 years ago

微信哪里有沙箱?

leehom0123 commented 6 years ago

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

最下面

沙箱说明 微信支付沙箱环境,是提供给微信支付商户的开发者,用于模拟支付及回调通知。以验证商户是否理解回调通知、账单格式,以及是否对异常做了正确的处理。

◆ 如何对接沙箱环境?

1、修改商户自有程序或配置中,微信支付api的链接,如:被扫支付官网的url为:https://api.mch.weixin.qq.com/pay/micropay增加sandbox路径,变更为https://api.mch.weixin.qq.com/sandbox/pay/micropay, 即可接入沙箱验收环境,其它接口类似; 2、在微信支付开发调试站点(站点链接:http://mch.weixin.qq.com/wiki/doc/api/index.php),按接口文档填入正确的支付参数,发起微信支付请求,完成支付

3、验收完成后,修改程序或配置中的api链接(重要!),去掉sandbox路径。对接现网环境。

Varorbc commented 6 years ago

一直没有找到这个,真的是谢谢,不过调试工具在哪里呢?