Closed FateNineMeow closed 6 years ago
这个不是ICanPay该处理的事情
但是我看源码里支付宝的网关你是用编译模式来判断的是沙箱还是正式环境,这个不已经由ICanPay处理了嘛...
其实这个问题简单,在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去改吧,或是看作者接受我们的意见不,或是楼主自己改一份提交给作者
你可以在创建支付网关的时候把网关地址改成沙箱地址,没必要再搞个沙箱参数
但微信的沙箱网址很多哇,且只能设置支付的那个
微信哪里有沙箱?
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路径。对接现网环境。
一直没有找到这个,真的是谢谢,不过调试工具在哪里呢?
比如 将 是否为测试环境 记录进配置文件 或者提供单独的字段/方法来进行修改 这样在从测试环境更新到正式环境的时候不需要去重新修改生成