BuilderChainable chain 会把大写转化成小写的问题
zhlhuang opened this issue · 5 comments
类库自v1.0
起就是URI
大小写敏感的,所以自己组装的URI
默认情况下就会被替换成小写,相关问题见#56, #69。URI.pathname
上若有变量需要传递时,需要以 URI Template 的模版变量方式书写,比如:
->v3->marketing->favor->users->_openid_->coupons->post(['openid' => 'AbcdEF12345'])
,推荐写法->v3->marketing->favor->users->{'{openid}'}->coupons->post(['openid' => 'AbcdEF12345'])
->chain('{+myurl}')->post(['myurl' => 'v3/marketing/favor/users/AbcdEF12345/coupons'])
->{'{+myurl}'}->post(['myurl' => 'v3/marketing/favor/users/AbcdEF12345/coupons'])
你的请求,需要按照规范写法这么调整,
$resp = $this->instance
->v3->pay->partner->transactions->outTradeNo->_out_trade_no_
->get(['out_trade_no' => 'N123123']);
$resp = $this->instance
->v3->pay->partner->transactions->outTradeNo->{'{out_trade_no}'}
->get(['out_trade_no' => 'N123123']);
$resp = $this->instance
->chain('v3/pay/partner/transactions/out-trade-no/{out_trade_no}')
->get(['out_trade_no' => 'N123123']);
就没有问题了。
你的请求,需要按照规范写法这么调整,
$resp = $this->instance ->v3->pay->partner->transactions->outTradeNo->_out_trade_no_ ->get(['out_trade_no' => 'N123123']);
$resp = $this->instance ->v3->pay->partner->transactions->outTradeNo->{'{out_trade_no}'} ->get(['out_trade_no' => 'N123123']);
$resp = $this->instance ->chain('v3/pay/partner/transactions/out-trade-no/{out_trade_no}') ->get(['out_trade_no' => 'N123123']);
就没有问题了。
了解,谢谢!
@TheNorthMemory 有点奇怪为什么要选择这样的调用方式呢? 感觉太容易采坑,
直接支持 api($url, $params) 的 统一调用不好吗?简单明了感觉更重要。
chain 还会把大写字母转化了,潜规则有点多(这里感觉无数人会采坑)。
多种调用方式 + 潜规则 ,提高使用者出错的情况 。
@TheNorthMemory 有点奇怪为什么要选择这样的调用方式呢? 感觉太容易采坑, 直接支持 api($url, $params) 的 统一调用不好吗?简单明了感觉更重要。 chain 还会把大写字母转化了,潜规则有点多(这里感觉无数人会采坑)。 多种调用方式 + 潜规则 ,提高使用者出错的情况 。
api($url, $params)
这种方法是支持的,而且在其中一个接口上,只能这么用,可见
wechatpay-php/tests/OpenAPI/V3/MerchantService/Images/DownloadTest.php
Lines 188 to 199 in 43b05b3
动态链式书写代码,建议装一下 composer require --dev iwechatpay/openapi
,400+ API就都有代码提示了,撸代码就不用猜了,源码及事例可见这里