Signierung und Signaturüberprüfung können auch auf der APP-Seite durchgeführt werden. Dies ist auch die offizielle Empfehlung von Alipay, daher muss die PHP-Seite die Signatur übergeben Parameter zum APP-Ende. Detaillierte Schritte finden Sie im Text:
1. PHP-Alipay-SDK herunterladen
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.eCtVsf&treeId=54&articleId=103419&docType =1 (Alt)
https://docs.open.alipay.com/54/103419/ (Neu)
2. Alipay App-Zahlungsanforderungsparameterdokument, Spleißanforderungsparameter, Signatur anzeigen
App-Zahlung Anforderungsparameter Beschreibung
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.wM4mV1&treeId=204&articleId=105465&docType=1 (alt)
https://docs .open .alipay.com/204/105465/ (Neu)
Zuerst werden die Parameter gespleißt, um eine Signatur zu generieren, und dann werden die vorherigen Parameter und die Signatur zusammengesetzt. Der Kerncode lautet wie folgt:
require_once '/Alipay/aop/AopClient.php'; $private_path = "/Alipay/key/rsa_private_key.pem";//私钥路径 //构造业务请求参数的集合(订单信息) $content = array(); $content['subject'] = "商品的标题/交易标题/订单标题/订单关键字等"; $content['out_trade_no'] = "商户网站唯一订单号"; $content['timeout_express'] = "该笔订单允许的最晚付款时间"; $content['total_amount'] = "订单总金额(必须定义成浮点型)"; $content['product_code'] = "QUICK_MSECURITY_PAY";/销售产品码,固定值 $con = json_encode($content);//$content是biz_content的值,将之转化成json字符串
//公共参数 $Client = new \AopClient();//实例化支付宝sdk里面的AopClient类,下单时需要的操作,都在这个类里面 $param['app_id'] = '支付宝分配给开发者的应用ID'; $param['method'] = 'alipay.trade.app.pay';//接口名称,固定值 $param['charset'] = 'utf-8';//请求使用的编码格式 $param['sign_type'] = 'RSA2';//商户生成签名字符串所使用的签名算法类型 $param['timestamp'] = date("Y-m-d Hi:i:s");//发送请求的时间 $param['version'] = '1.0';//调用的接口版本,固定为:1.0 $param['notify_url'] = '支付宝服务器异步回调地址'; $param['biz_content'] = $con;//业务请求参数的集合,长度不限,json格式,即前面一步得到的 $paramStr = $Client->getSignContent($param);//组装请求签名参数 $sign = $Client->alonersaSign($paramStr, $private_path, 'RSA2', true);//生成签名 $param['sign'] = $sign; $str = $Client->getSignContentUrlencode($param);//最终请求参数
Alipay hat die angeforderten Anweisungen sehr deutlich gemacht, hier noch einmal ein Screenshot:
3. Signaturüberprüfung
Nachdem die App-Zahlung erfolgreich war, wird es eine Rückgabezeichenfolge geben, und der Kundendienst muss ebenfalls beurteilen, also werde ich nicht wortreich sein hier, wie unten gezeigt:
Der nächste Schritt besteht darin, die Signatur auf dem PHP-Server zu überprüfen. Alipay sendet die Daten asynchron an die asynchrone Rückrufadresse im Post-Modus zurück:
function notify() { require_once('/alipay/aop/AopClient.php'); $aop = new \AopClient; //$public_path = "key/rsa_public_key.pem";//公钥路径 $aop->alipayrsaPublicKey = "支付宝公钥"; //此处验签方式必须与下单时的签名方式一致 $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2"); //验签通过后再实现业务逻辑,比如修改订单表中的支付状态。 /** * ①验签通过后核实如下参数out_trade_no、total_amount、seller_id * ②修改订单表 **/ //打印success,应答支付宝。必须保证本界面无错误。只打印了success,否则支付宝将重复请求回调地址。 echo 'success'; }
Postscript:
Nachdem ich lange danach gesucht habe, habe ich es endlich gelöst. Im Dokument heißt es, dass für die Signaturüberprüfung der öffentliche Alipay-Schlüssel verwendet wird, nicht der öffentliche RSA2-Schlüssel. Verwenden Sie hier nicht den falschen.
Screenshot:
Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne die Erlaubnis des Bloggers reproduziert werden.
Signierung und Signaturüberprüfung können auch auf der APP-Seite durchgeführt werden. Aus Sicherheitsgründen ist es am besten, die Signatur und Signaturüberprüfung auf der Serverseite durchzuführen Offizielle Empfehlung von Alipay. Daher muss die PHP-Seite die signierten Parameter an die APP-Seite übergeben. Detaillierte Schritte finden Sie im Text:
1. PHP Alipay SDK herunterladen
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.eCtVsf&treeId=54&articleId=103419&docType =1 (Alt)
https://docs.open.alipay.com/54/103419/ (Neu)
2. Alipay App-Zahlungsanforderungsparameterdokument, Spleißanforderungsparameter, Signatur anzeigen
App-Zahlung Anforderungsparameter Beschreibung
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.wM4mV1&treeId=204&articleId=105465&docType=1 (alt)
https://docs .open .alipay.com/204/105465/ (Neu)
Zuerst werden die Parameter gespleißt, um eine Signatur zu generieren, und dann werden die vorherigen Parameter und die Signatur zusammengesetzt. Der Kerncode lautet wie folgt:
require_once '/Alipay/aop/AopClient.php'; $private_path = "/Alipay/key/rsa_private_key.pem";//私钥路径 //构造业务请求参数的集合(订单信息) $content = array(); $content['subject'] = "商品的标题/交易标题/订单标题/订单关键字等"; $content['out_trade_no'] = "商户网站唯一订单号"; $content['timeout_express'] = "该笔订单允许的最晚付款时间"; $content['total_amount'] = "订单总金额(必须定义成浮点型)"; $content['product_code'] = "QUICK_MSECURITY_PAY";/销售产品码,固定值 $con = json_encode($content);//$content是biz_content的值,将之转化成json字符串
//公共参数 $Client = new \AopClient();//实例化支付宝sdk里面的AopClient类,下单时需要的操作,都在这个类里面 $param['app_id'] = '支付宝分配给开发者的应用ID'; $param['method'] = 'alipay.trade.app.pay';//接口名称,固定值 $param['charset'] = 'utf-8';//请求使用的编码格式 $param['sign_type'] = 'RSA2';//商户生成签名字符串所使用的签名算法类型 $param['timestamp'] = date("Y-m-d Hi:i:s");//发送请求的时间 $param['version'] = '1.0';//调用的接口版本,固定为:1.0 $param['notify_url'] = '支付宝服务器异步回调地址'; $param['biz_content'] = $con;//业务请求参数的集合,长度不限,json格式,即前面一步得到的 $paramStr = $Client->getSignContent($param);//组装请求签名参数 $sign = $Client->alonersaSign($paramStr, $private_path, 'RSA2', true);//生成签名 $param['sign'] = $sign; $str = $Client->getSignContentUrlencode($param);//最终请求参数
Anweisungen für die Anfrage, Alipay hat es sehr klar gemacht , und ich werde es hier noch einmal wiederholen:
三、验签
App 支付成功后会有返回字符串,客服端也需要判断,这里不罗嗦,如下图:
下一步就是在php服务端进行验签,支付宝异步会以post方式返回数据到异步回调地址:
function notify() { require_once('/alipay/aop/AopClient.php'); $aop = new \AopClient; //$public_path = "key/rsa_public_key.pem";//公钥路径 $aop->alipayrsaPublicKey = "支付宝公钥"; //此处验签方式必须与下单时的签名方式一致 $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2"); //验签通过后再实现业务逻辑,比如修改订单表中的支付状态。 /** * ①验签通过后核实如下参数out_trade_no、total_amount、seller_id * ②修改订单表 **/ //打印success,应答支付宝。必须保证本界面无错误。只打印了success,否则支付宝将重复请求回调地址。 echo 'success'; }
后记:
之前一直验签失败,找了好久,终于解决了。文档中说,验签用的是支付宝公钥,并不是RSA2公钥,这里需要特别注意,不要用错了
请看截图:
相关推荐:
Das obige ist der detaillierte Inhalt vonImplementierungsmethode für PHP-Hintergrundsignatur und Signaturüberprüfung von Alipay APP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!