现在APP软件越来越多,涉及到支付的也越来越多,所以今天帮我之前写的APP在线支付的思路和大家分享一下,如果有不准确的地方请指教。
第一步:申请一个公司账户的支付宝账号,当申请成功后,你就可以完成网页支付了,但是我们要在 APP上面使用还是不可以的。我们需要申请允许进行APP支付,然后创建应用并获取APPID。具体参考支付宝文档https://docs.open.alipay.com/204/;【注意新版本好像新申请的账号不可以用,具体可以咨询一下客服】
第二步:说说他的支付流程,移动端发起支付请求【可以进行是否可以支付的条件判断】, 后台进行加密处理; 然后就输入密码(这个就已经是支付宝的操作了);等待(1、放弃支付-app直接进行处理;2、支付成功支付宝同步通知APP,异步通知后台);然后就结束支付了。
流程图:
第三步:身为一个phper我们就直接下载一个服务器端的sdk,sdk下载地址https://docs.open.alipay.com/54/106370/ 把它下载下来,放在该放的地方,我们需要调用他的函数;
PHP服务端SDK生成APP支付订单信息示例
$aop = new AopClient;
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$aop->appId = "app_id";
$aop->rsaPrivateKey = '请填写开发者私钥去头去尾去回车,一行字符串';
$aop->format = "json";
$aop->charset = "UTF-8";
$aop->signType = "RSA2";
$aop->alipayrsaPublicKey = '请填写支付宝公钥,一行字符串';
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
$request = new AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
$bizcontent = "{\"body\":\"我是测试数据\","
. "\"subject\": \"App支付测试\","
. "\"out_trade_no\": \"20170125test01\","
. "\"timeout_express\": \"30m\","
. "\"total_amount\": \"0.01\","
. "\"product_code\":\"QUICK_MSECURITY_PAY\""
. "}";
$request->setNotifyUrl("商户外网可以访问的异步地址");
$request->setBizContent($bizcontent);
//这里和普通的接口调用不同,使用的是sdkExecute
$response = $aop->sdkExecute($request);
//htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
echo htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。
PHP服务端验证异步通知信息参数示例
$aop = new AopClient;
$aop->alipayrsaPublicKey = '请填写支付宝公钥,一行字符串';
$flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
如果可以唤起支付,那么就成功了,在异步通知里面进行支付状态的修改支付就结束了【建议可以先不把他放到你的应用程序里面,直接试,当成功后再放应用程序,就可以排除一些错误】;
写的不好,请多指教