• wap支付宝接口的问题


    今天在支付宝接口开发时,遇到的两个坑

    第一个:

    https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.8nHr4i&treeId=62&articleId=103740&docType=1

    支付宝的PC版即时到账接口中,发起的请求可带此参数extra_common_param

    公用回传参数

    String(100)

    如果用户请求时传递了该参数,则返回给商户时会回传该参数。

    于是,不管在同步或者异步通知中,均可接收到此参数进行业务逻辑的处理

    但是今天在wap版的开发中,遇到request。。。一大堆的参数时,总是报错。然而奇怪的是,返回的参数验签却是通过的。

    百思不得其解。最后发现request["extra_common_param"]始终为空。。。。

    最后找到https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.8JI7Bt&treeId=60&articleId=103698&docType=1

    wap的支付接口中,果然没有此参数。

    (因为wap版的官方demo中发起请求没有MD5的签名方式,于是就照搬了web版的请求方式,当然。这其中就含有了extra_common_param参数的设置,所以一开始对验签通过。却报reques为空的错误深深的搞得抓狂)

    问了客服,我说微信支付有此相同参数,web版也有此参数,为什么wap就没了呢?   【内心是抓狂的】

    最后客服直接说,不能已经给过建议了么?【内心是崩溃的】

    他给到的建议是一,写在body中,但这样买家付款的时候也会看到。

    二。写在notify_url的?后面。但同样的,在验签的时候,这个url需要保证和提交时所设置的那个一样。

    所以最后只能靠自己了。提交订单时就将相关信息写入数据库,在付款成功后,根据此订单号去更改其状态

    第二个:

    手机支付。微信中提起发送请求时,总是正确的。

    在测试完手机浏览器中的支付宝支付时,我登录账号的也是对的

    在别人进行支付时,就是错的。收银台显示的金额总是0.00(这个金额是发起请求时支付宝再显示出来)

    于是就奇怪了。。。微信支付和支付宝支付所提交请求的参数都是来源于同一个代码,支付金额,body等什么的。

    而且提交后,打印出来的参数也是没问题的。

    又是无限抓狂中。最后,我把自己的支付金额0.01的设置取消掉后[if id=6223 then total_pay='0.01' else total_pay=model.total_pay] 改为 [total_pay=model.total_pay]

    同其他人支付时出现的问题一样,这次我自己也重现了此问题。

    最后的最后,终于想到了,数据是从数据库读出来的,这个字段是decimal,小数点后有4位。。。

    而发起的支付宝请求只要小数点后两位。虽然它是string类型。。。。

    total_fee 交易金额 String 该笔订单的资金总额,单位为RMB-Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。

    我把金额处理后。问题终于解决。

    微信没有问题是因为它的单位是分。也就是一分钱也是整型的,提交给微信的数据是1

    本来6点半准时下班。然而此时已经是8点半了。

    支付宝,知托付!!!谢谢你哦

  • 相关阅读:
    前端埋点2怎么埋点
    .net core
    Qto_DoorBaseQuantities
    Qto_WallBaseQuantities
    Qto_SlabBaseQuantities
    Qto_RampFlightBaseQuantities
    Pset_WallCommon
    Pset_StairCommon
    matlab 矩阵变换
    Qto_CoveringBaseQuantities
  • 原文地址:https://www.cnblogs.com/jasonlam/p/5343208.html
Copyright © 2020-2023  润新知