Unity微信支付,IOS提示支付签名验证失败。安卓没问题

版权声明:胡同-Unity开发 https://blog.csdn.net/u011625767/article/details/88188210

最近手上有一个Unity项目,Java后台,原作者跑路,我们属于半路上车。

打包ipa的时候碰到了很多问题。

在原来项目的基础上引入了微信支付体系。

安卓支付流程没有出问题,但是到了IOS这里,千辛万苦打出了工程,却发现微信支付提示支付验证签名失败

我们都知道,在接微信支付的时候,要保证一些数据的正确,比如APPID,bundleID,在确认这些信息没有出错的情况下,我们的签名是服务器使用统一下单的签名方式二次签名回来的

直觉告诉我们,Xcode中的解析可能有问题。

对比微信的开发文档发现,

微信官方给出的时间戳是10位数。

然而由于Java比PHP的时间精确,所以,后台数据的时间java是13位的,而php是10位的,iOS时间抓换只支持10位数的,所以如果java写后台的话,把数字/1000就行了.

所以需要后台修改他们的代码/1000发给客户端。

就可以了。

附上Ios中微信支付的关键解析代码

 

void Chitu(const char* appid,const char* partnerId,const char* prepayId,const char* packageValue,const char* nonceStr,const char* timeStamp,const char* sign)
{
    //NSString* AppID=[NSString stringWithUTF8String:appid];
    NSString* PartnerId=[NSString stringWithUTF8String:partnerId];
    NSString* PrepayId=[NSString stringWithUTF8String:prepayId];
    NSString* PackageValue=[NSString stringWithUTF8String:packageValue];
    NSString* NonceStr=[NSString stringWithUTF8String:nonceStr];
    NSString* TimeStamp=[NSString stringWithUTF8String:timeStamp];
    NSString* Sign=[NSString stringWithUTF8String:sign];
    PayReq *request=[[[PayReq alloc] init] init];
    request.partnerId=PartnerId;
    request.prepayId=PrepayId;
    request.package=PackageValue;
    request.nonceStr=NonceStr;
    request.timeStamp=TimeStamp.longLongValue;
    request.sign=Sign;
    [WXApi sendReq:request];
}

 

展开阅读全文

没有更多推荐了,返回首页