用PHP SDK做支付宝APP支付(下单及验签)
2017-03-23 20:34
597 查看
一、如下为支付宝APP支付PHP SDK DEMO地址。
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.jxZiS8&treeId=54&articleId=106370&docType=1#s4二、如下为支付宝APP支
说明:此处用CI框架,若正式上线需将参数$aop->appId、$aop->rsaPrivateKey、$aop->alipayrsaPublicKey都改成正式的。示例代码中的APP ID即$aop->appId从沙箱应用获得。
用官网提供的公私钥生成工具一次生成一对,一个应用私钥($aop->rsaPrivateKey)和一个应用公钥。将应用公钥上传至沙箱环境(上线就上传至正式环境)获得支付宝公钥(即$aop->alipayrsaPublickey)。
官网demo中将支付宝返回的预支付信息用htmlspecialchars()处理。本人使用时用htmlspecialchars处理后安卓前端无法调起支付界面。故示例中不用htmlspecialchars()。
class AlipayController extends CI_Controller { function pay() { require_once('/www/my/app/third_party/alipay/aop/AopClient.php'); require_once('/www/my/app/third_party/alipay/aop/request/AlipayTradeAppPayRequest.php'); $aop = new \AopClient(); //**沙箱测试支付宝开始 $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do"; //实际上线app id需真实的 $aop->appId = "2016080300158242"; $aop->rsaPrivateKey = '填写工具生成的商户应用私钥'; $aop->format = "json"; $aop->charset = "UTF-8"; $aop->signType = "RSA"; $aop->alipayrsaPublicKey = '填写从支付宝开放后台查看的支付宝公钥'; $bizcontent = json_encode([ 'body'=>'商品信息', 'subject'=>'衣服', 'out_trade_no'=>'123456',//此订单号为商户唯一订单号 'total_amount'=> '9.88',//保留两位小数 'product_code'=>'QUICK_MSECURITY_PAY' ]); //**沙箱测试支付宝结束 //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay $request = new \AlipayTradeAppPayRequest(); //支付宝回调 $request->setNotifyUrl("https://demo.com/pay/alinotify"); $request->setBizContent($bizcontent); //这里和普通的接口调用不同,使用的是sdkExecute $response = $aop->sdkExecute($request); echo $response; }
三、验签
支付宝异步验签文档:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.fFjclt&treeId=204&articleId=105301&docType=1#s6上段代码中$request->setNotifyUrl()填写的回调URL指向如下方法。
class AlipayNotifyController extends CI_Controller { function notify() { require_once('/www/my/app/third_party/alipay/aop/AopClient.php'); $aop = new AopClient; $aop->alipayrsaPublicKey = '请填写支付宝公钥,一行字符串'; //此处验签方式必须与下单时的签名方式一致 $flag = $aop->rsaCheckV1($_POST, NULL, "RSA"); //验签通过后再实现业务逻辑,比如修改订单表中的支付状态。 /** ①验签通过后核实如下参数trade_status、out_trade_no、total_amount、seller_id ②修改订单表 **/ //打印success,应答支付宝。必须保证本界面无错误。只打印了success,否则支付宝将重复请求回调地址。 echo 'success'; } }
相关文章推荐
- Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)
- Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)
- 支付宝APP支付-php后台签名以及验签
- php 做支付宝电脑网站和app支付
- 支付宝 APP支付异步回调验签失败 PHP
- Android App支付:支付宝SDK接入详细指南(附官方支付demo)
- app内支付宝支付php版所遇到几大坑
- thinkphp3.2大C方法和支付宝app支付sdk中的C方法冲突了怎么解决
- Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)
- iOS 支付宝 SDK 支付完毕后返回APP的方法
- APP支付(支付宝和微信生成客户端签名及回调验签)
- 微信支付统一下单及调起支付接口的php接口实现 (可以用于app集成)
- Android App支付系列(二):支付宝SDK接入详细指南(附官方支付demo)
- PHP APP支付 --支付宝开放平台(蚂蚁金服)
- 梦行扫码付(收银台条码支付 微信钱包条码支付 支付宝二维码支付 手机APP钱包支付 PHP扫码支付 )
- PHP服务端支付宝app支付遇到的坑
- 支付宝APP支付接口-PHP
- 微信、支付宝App支付-JPay 简单而不简洁的App支付SDK
- php 服务端集成支付宝APP支付
- APP服务端支付宝支付(PHP服务端)