首先在蚂蚁金服开放平台生成你得商户私钥,和支付宝公钥,文档里有对应的工具
![](https://img.haomeiwen.com/i4335232/835826adfe20321e.png)
一定注意,你代码中用到的是支付宝公钥,后面那个,这个是要你先上传开发者公钥,阿里自己给你生成的支付宝公钥,不要搞混!!
然后可以用支付宝的SDK,也可以自己写,一些签名和请求的方法,以他们的demo为例
加密方式用RSA2,新的应用已经不再支持MD5和RSA了
$aop = new \AopClient();
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$aop->appId = $aliConfig['app_id'];//appid
$aop->rsaPrivateKey = $aliConfig['merchant_private_key'];//私钥
$aop->format = "json";
$aop->charset = "UTF-8";
$aop->signType = "RSA2";
$aop->alipayrsaPublicKey = $aliConfig['alipay_public_key'];//公钥,支付宝公钥!
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
$request = new \AlipayTradeAppPayRequest();
//业务参数
$bizcontent = "{\"body\":\"订单标题\","
. "\"subject\": \"内容\","
. "\"out_trade_no\": \"".自己系统的订单号."\","
. "\"timeout_express\": \"30m\","
. "\"total_amount\": \"".'价格(单位元)'."\","
. "\"product_code\":\"QUICK_MSECURITY_PAY\"" //写死
. "}";
$request->setNotifyUrl($aliConfig['notify_url']);
$request->setBizContent($bizcontent);
//这里和普通的接口调用不同,使用的是sdkExecute
$response = $aop->sdkExecute($request);
//htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
$response = htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。
然后传给前台就可以了,有可能在传递的过程中,&会变成& amp; 可以自己改一下
令附一个测试工具,测试服务端签名是否有效
支付测试工具
网友评论