前言
- 语言:php
- 目的:返回前端正确的、可调用的支付宝支付参数
- 官方文档:alipay.trade.app.pay(app支付接口2.0)
流程详情
第一步 配置商户
参见官方文档。略
第二步 引入SDK
官方SDK下载地址:https://opendocs.alipay.com/open/02np96
本文只涉及app支付,即从app端调起支付宝,在支付完成后返回app。所以只用到SDK中两个类,AopClient与AlipayTradeAppPayRequest。
单讲APP支付涉及的文件有:
- AlipayConfig.php
- AopClient.php ------ 主类
- AopEncrypt.php
- EncryptParseItem.php
- EncryptResponseData.php
- SignData.php
- request/AliPayTradeAppPayRequest.php ------ app支付类
第三步 实际调用
贴上官方文档的示例代码:
$aop = new AopClient ();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = 'your app_id';
$aop->rsaPrivateKey = '请填写开发者私钥去头去尾去回车,一行字符串';
$aop->rsaPrivateKeyFilePath = '私钥文件路径,如: /data/www/project/config/rsaPrivate.pem';
$aop->alipayrsaPublicKey='请填写支付宝公钥,一行字符串';
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset='GBK';
$aop->format='json';
$object = new stdClass();
$object->out_trade_no = '20210817010101004';
$object->total_amount = 0.01;
$object->subject = '测试商品';
$object->product_code ='QUICK_MSECURITY_PAY';
$object->time_expire = '2022-08-01 22:00:00';
$json = json_encode($object);
$request = new AlipayTradeAppPayRequest();
$request->setNotifyUrl('');
$request->setBizContent($json);
$result = $aop->sdkExecute ( $request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
if(!empty($resultCode)&&$resultCode == 10000){
echo $result;
} else {
echo "失败";
}
$result 返回示例 charset=UTF-8&method=alipay.trade.app.pay&sign=k0w1DePFqNMQWyGBwOaEsZEJuaIEQufjoPLtwYBYgiX%2FRSkBFY38VuhrNumXpoPY9KgLKtm4nwWz4DEQpGXOOLaqRZg4nDOGOyCmwHmVSV5qWKDgWMiW%2BLC2f9Buil%2BEUdE8CFnWhM8uWBZLGUiCrAJA14hTjVt4BiEyiPrtrMZu0o6%2FXsBu%2Fi6y4xPR%2BvJ3KWU8gQe82dIQbowLYVBuebUMc79Iavr7XlhQEFf%2F7WQcWgdmo2pnF4tu0CieUS7Jb0FfCwV%2F8UyrqFXzmCzCdI2P5FlMIMJ4zQp%2BTBYsoTVK6tg12stpJQGa2u3%2BzZy1r0KNzxcGLHL%2BwWRTx%2FCU%2Fg%3D%3D¬ify_url=http%3A%2F%2F114.55.81.185%2Fopendevtools%2Fnotify%2Fdo%2Fbf70dcb4-13c9-4458-a547-3a5a1e8ead04&version=1.0&app_id=2014100900013222&sign_type=RSA×tamp=2021-02-02+14%3A11%3A40&alipay_sdk=alipay-sdk-java-dynamicVersionNo&format=json
前端用返回的$request 调用前端SDK,唤起支付宝即可。
注意事项
调试
用返回的$result 作为请求参数,请求https://openapi.alipay.com/gateway.do? 支付宝支付地址。 如: 调试支付宝支付示例
调试失败的表现
在调试步骤中,拼接支付地址和参数,直接浏览器访问拼接好的支付链接。 可能会显示: 处理办法:
- 后台配置有误,重新配置publicKey
- 或根据调试信息进行处理
调试成功的表现
出现下面这个界面,说明调试成功了。返回的$result 没有问题,可供前端使用了:
End
|