您的位置:首页 > 移动开发

[置顶] 支付宝APP支付-php后台生成请求参数

2017-02-07 10:22 741 查看

支付宝APP支付

本文将介绍新版支付宝app支付的php后台(php框架是tp5):

下载官方文档

配置商家支付宝商家参数

构造业务请求参数

*配置公共参数

生成签名

生成最终的请求字符串

生成最终的请求字符串

下载官方文档

官方文档:

https://doc.open.alipay.com/docs/doc.htm?treeId=204&articleId=105051&docType=1

sdk下载:

https://doc.open.alipay.com/docs/doc.htm?treeId=54&articleId=103419&docType=1

配置商家支付宝商家参数

'alipay_config' =>[
'appid' =>'2017010604888586',//商户密钥
'rsaPrivateKey' =>'',//私钥
'alipayrsaPublicKey'=>'',公钥(自己的程序里面用不到)
'partner'=>'2088421540577515',//(商家的参数,新版本的好像用不到)
'input_charset'=>strtolower('utf-8'),//编码
'notify_url' =>'www.test.com/api/notify.php',//回调地址(支付宝支付成功后回调修改订单状态的地址)
'payment_type' =>1,//(固定值)
'seller_id' =>'',//收款商家账号
'charset'    => 'utf-8',//编码
'sign_type' => 'RSA2',//签名方式
'timestamp' =>date("Y-m-d Hi:i:s"),
'version'   =>"1.0",//固定值
'url'       => 'https://openapi.alipay.com/gateway.do',//固定值
'method'    => 'alipay.trade.app.pay',//固定值
]


注:支付宝的私钥和公钥,用支付宝提供的工具生成

构造业务请求参数

//构造业务请求参数的集合(订单信息)
$content = array();
$content['body'] = 'ceshi';
$content['subject'] = 'funbutton';//商品的标题/交易标题/订单标题/订单关键字等
$content['out_trade_no'] = '';//商户网站唯一订单号
$content['timeout_express'] = '1d';//该笔订单允许的最晚付款时间
$content['total_amount'] = floatval($price);//订单总金额(必须定义成浮点型)
$content['seller_id'] = '';//收款人账号
$content['product_code'] = 'QUICK_MSECURITY_PAY';//销售产品码,商家和支付宝签约的产品码,为固定值QUICK_MSECURITY_PAY
$content['store_id'] = 'BJ_001';//商户门店编号
$con = json_encode($content);//$content是biz_content的值,将之转化成字符串

//公共参数
$param = array();
$Client = new \alipay\aop\AopClient();//实例化支付宝sdk里面的AopClient类,下单时需要的操作,都在这个类里面
$param['app_id'] = 'appid';//支付宝分配给开发者的应用ID
$param['method'] = 'method';//接口名称
$param['charset'] = 'charset';//请求使用的编码格式
$param['sign_type'] = 'sign_type';//商户生成签名字符串所使用的签名算法类型
$param['timestamp'] = 'timestamp';//发送请求的时间
$param['version'] = 'version';//调用的接口版本,固定为:1.0
$param['notify_url'] = 'notify_url';//支付宝服务器主动通知地址
$param['biz_content'] = $con;//业务请求参数的集合,长度不限,json格式


注:

1.这里接口版本是固定1.0,但是method用的却不是1.0对应的名称,这里容易让人混淆.但是这都是固定的

2.详细参数,请参考支付宝的官方文档(https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.UpUNQb&treeId=204&articleId=105465&docType=1)

生成签名

//生成签名
$paramStr = $Client->getSignContent($param);
$sign = $Client->alonersaSign($paramStr,$alipay_config['rsaPrivateKey'],'RSA2');


调用支付sdk中的AopClient类中的getSignContent方法将请求数组转化成字符串(规定格式)

然后调用alonersaSign方法生成签名

生成最终的请求字符串

$param['sign'] = $sign;
$str = $Client->getSignContentUrlencode($param);


将上面生成的签名附加到一开始的请求数组中,然后掉用getSignContentUrlencode中生成最总的请求字符串,注意这里传的是数组而不是字符串,也就是说,签名前后经过了**两次**encode

这样就生成最总的请求字符串,返回给客户端,客户端就可以不用拼接,直接拿来就用.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: