AlipayEasySDK Config的问题+简单操作
我们一个项目,客户给的支付方式是支付宝,以前没做过,新出的AlipayEasySDK,看着挺简单的,朋友就开始搞了,几天没搞出来,我就顺便去瞧瞧了,反正还没写过支付宝的,学习下。。拿着他的代码,看了下就是nuget了一个AlipayEasySDK,然后复制阿里的例子,反正死活不通,错误:签名遭遇异常,去git上面下载alipay-easysdk/csharp/把代码拆分了下,黄色框架是错误位置,前
我们一个项目,客户给的支付方式是支付宝,以前没做过,新出的AlipayEasySDK,看着挺简单的,朋友就开始搞了,几天没搞出来,我就顺便去瞧瞧了,反正还没写过支付宝的,学习下。。
拿着他的代码,看了下就是nuget了一个AlipayEasySDK,然后复制阿里的例子,反正死活不通,错误:签名遭遇异常,去git上面下载alipay-easysdk/csharp/
把代码拆分了下,黄色框架是错误位置,
前2个参数都是自动获取了,第三个没有值,最后一个也是获取到值的,以为是key弄错了,去阿里看了下
密匙管理-开放平台密匙
然后对着配置上面看,没什么问题,直接覆盖config数据。还是出错。。签名遭遇异常。
老老实实去看文档。。。下载了开发助手。这里是有生成密匙的,阿里上面的密匙都是这里生成的。
默认RSA2,我们是.net的选了非JAVA,生成,就出来两堆%!@#%!&@%#*!%@#&*%¥……¥(!&@)#!
每次生成都会更新key,选一个自己喜欢的。。。其实都长得一样。。。生成支付会自动生成2个txt文件
当时打开这个文件夹的时候,突然想到了,MerchantPrivateKey 参数 是私有key,然后突然感觉被坑了,TMD绝对参数错了,是要用这个才对。我又没有,反正在开发阶段,改掉。
把刚才生成的txt的公匙内容或者开发助手里的公匙内容 复制到上面公匙字符的地方,
保存会自动生成支付宝的公钥,成功之后要注意下,他上面会有一个提示,说你修改了公钥,什么时间才过期,也可以直接点过期,我当时就点了。。。去把代码原来的然后就把Config修了,
MerchantPrivateKey 一定是开发助手生成的那个一大堆的
AlipayPublicKey 就是支付宝的公钥
切记不要搞混了。
调试结果:此用户不允许自调用
应该是过了。估计是没签约吧。。。慢慢来。。。
2020.9.24
此用户不允许自调用 又是另外一个坑,三方服务才会报这个问题,但是原来不知道谁建的,自研也有,三方也有,接到手的appid是三方服务里的。选择自研服务,Config重新配置一次。
好吧。。错误又变了。。调用失败,原因:Insufficient Conditions,应用未绑定商户
2020.9.25
绑定的问题说明下不是服务商平台的三方绑定,而是开放平台下能力里面对应功能的绑定。
由于面对面支付没有签约,就不去研究了,试了下电脑支付,靠谱
AlipayTradePagePayResponse response = Factory.Payment.Page().Pay("test", "2234567234890", "0.01", "http://www.zfb.com/back.aspx");
// 处理响应或异常
if (ResponseChecker.Success(response))
{
Response.Write(response.Body);
Response.Flush();
}
不清楚后面还有多少坑,目前能支付,能查询了。。
2020.9.30
这里用的MVC输出支付宝支付页面,剩下交给支付宝了。
AlipayTradePagePayResponse response = Factory.Payment.Page().
AsyncNotify("http://www.test.cn:8008/back.aspx?UserName=cmhdl521").
Pay("这是一个测试支付2分钱", "2020093011380003", "0.02", "http://www.zfb.com/Home/Back");
if (ResponseChecker.Success(response))
{
return Content(response.Body);
}
else
{
return Content("调用失败,原因:" + response.Body);
}
回调URL,必须是公网,可以自己加参数。好像说是把get的参数,给你取出来,跟着支付宝一起post过去。返回URL好像是不行的,网上说要签名错误,要改也挺麻烦,由于不想麻烦,也不需要就这样吧。
服务器上的确接收到了。我们就可以自己做一些操作了。
退款也需要记录下
//全退
bool IsAll = true;
if (IsAll)
{
AlipayTradeRefundResponse response = Factory.Payment.Common().Refund("2020093011380003", "0.02");
if (ResponseChecker.Success(response))
{
return Content(response.Msg);//Success
}
else
{
return Content("调用失败,原因:" + response.Msg);
}
}
else//部分
{
AlipayTradeRefundResponse response = Factory.Payment.Common().Optional("out_request_no", "2020093011380002-2").Refund("2020093011380003", "0.02");
if (ResponseChecker.Success(response))
{
return Content(response.Msg);//Success
}
else
{
return Content("调用失败,原因:" + response.Msg);
}
}
全退,直接订单编号和全部金额;部分退,必须要加一个唯一识别,Optional("out_request_no", "2020093011380002-2"),不然会报失败的。退款没有回调URL,执行很块,一成功,手机就响了。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)