php给APP重新签名,二、PHP端生成APP支付宝的签名

1. 接口: http://xxx.xxx.cn/index.php/Common/apiAlipay;

APP端只需传入排好的订单的串:

public function apiAlipay(){

$home_path = realpath(dirname(__FILE__).'/../'); // /data/wwwroot/jinling/home

//require_once ($home_path.'/alipay-sdk-PHP-20180104135052/AopSdk.php');

//require $home_path.'/alipay-sdk-PHP-20180104135052/aop/AopClient.php';

require $home_path .'/libraries/alipay/AopClient.php';

$data['orderInfo'] = $this->input->post('orderInfo'); // 订单信息,在iOS端加密

$c = new AopClient;

$c->gatewayUrl = "https://openapi.alipay.com/gateway.do";

$c->appId = ""; // 填写你的AppID

$c->rsaPrivateKey = ''; // 应用私钥 在生成私钥的时候看清是java还是非java端

$c->format = "json";

$c->charset = "UTF-8";

$c->signType= "RSA2"; // 这里看清到底是用RSA 还是 RSA2

$c->alipayrsaPublicKey = ''; // 是支付宝公钥!不是应用公钥!

exit(json_encode(array('data'=>$c->rsaSign($data['order_no'],'RSA2')),true));

}

还存在的问题:使用最新的sdk不行,得用相对应的SDK

2. iOS端传入的orderInfo 如下 :

app_id=20180106xxxx7555&

biz_content={ "seller_id": "", "total_amount": "0.01", "subject": "标题", "out_trade_no": "MD2018020413415411744", "timeout_express": "30m", "product_code": "QUICK_MSECURITY_PAY" }&

charset=utf-8&

method=alipay.trade.app.pay&

notify_url=http://jinling.veyd.cn/index.php/AliPay/notify&

sign_type=RSA2&

timestamp=2018-02-04 13:41:54&

version=1.0

241e77791758de54d60a135a277fe855.png

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信 支付这 官方文档 很乱 写的 也不是很清楚,测试时 一定要与安卓 或 苹果 一起测试。 否则 根本找不到问题。 废话 不过说 先 说说 几大坑的地方。我也是 借鉴 别人的 博客 才测试成功调起支付。文章后 直接上代码 代码 绝对能调起 微信 测试过的! 第一步,生成prepayid,这一步,只要你的appid,mch_id,key没写错,那么99%以上都能获取到prepayid,如果失败,那肯定是几个ID和key有问题,仔细检查,包括编码等,仔细仔细仔细检查。 问题来了,第步,对获取到的prepayid进行签名,官方文档的坑来了,官方并没有详细说明这一步骤,一切的一切只能靠自己摸索,爬坑。 首先第一坑:参数顺序,我这里用了SortedMap,自动对参数进行asc编码顺序,一劳永逸,当然,也可以用其他map,但一定要注意参数顺序,必须是asc编码顺序。 第坑:参数package的Sign=WXPay中=的编码问题,转码即可,小坑。 第三坑:苹果系统的timestamp位数,统一成10位即可,小坑。 第四坑:次级大坑,注意,官方文档说到的参与签名的参数,prepayId,appId,timeStamp等,如果你用他们的驼峰进行大写,那么你就完了。一定要小写,小写,小写。 第五坑:最大坑,一样,官方文档并没有对于签名有过多赘述,如果你上面几个坑完美出坑,那么,你获取到的签名sign跟官方验证的sign绝对是一样的,然而,将这些玩意丢回给APPAPP调起支付,大大的几个字出现了,验证签名失败!WTF!不要急,我已折腾了好几天,终于发现坑在哪里,那就是noncestr随机字符串,参与签名的随机字符串不能再次生成,注意,不能再次生成,一定要用第一步中获取prepayid时的那串字符串,一定要用第一步中获取prepayid时的那串字符串,一定要用第一步中获取prepayid时的那串字符串。 第六坑:经历了上述5坑,相信你已经有想干死人的冲动,那么你以为这就结束了吗,还有最后一坑,那就是APP签名已经包名,一定要与开放平台中的一致,然而,即使一致了你以为又结束了吗,NO,如果你更改过开放平台中的签名,并且,在更改前调用过APP微信支付,那么一定一定一定一定记得清除微信缓存。 至此,所有坑都成功出坑,终于出现了支付页面,举国欢腾,微信去年买了个表。最后附上MD5签名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值