本文出自APICloud官方論壇,
感謝論壇版主City7的分享。php
首先到
https://open.alipay.com/platf... 申請應用上線html
支付寶網關:這裏是支付寶配置 把域名寫成你自已的
https://openapi.alipay.com/ga...ajax
應用網關:
http://shop.*.comjson
受權回調地址:
http://shop.**.com/authRedirect.phpapi
加簽方式:
RSA(SHA256)密鑰
[url=]查看應用公鑰/url查看支付寶公鑰[/url]服務器
下面是GetAliPaySign.php 源 方案一:開發者經過 payOrder 方法來進行支付,本身處理訂單信息以及簽名過程;要用到這個源app
<?php /** * APP支付 RSA2簽名方法 */ require_once 'AopSdk.php'; $rsaPrivateKey="";//對應,rsa_private_key.pem裏面的內容 必定要是一行,注意,不要刪一個字節 $alipayrsaPublicKey='';//對應 rsa_public_key.pem裏面的內容 必定要是一行,注意 $aop = new AopClient (); $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; $aop->appId = '201903***********';//用你的APPID $aop->rsaPrivateKey = $rsaPrivateKey; $aop->alipayrsaPublicKey=$alipayrsaPublicKey; $aop->apiVersion = '1.0'; $aop->postCharset='utf-8'; $aop->format='json'; $aop->signType = 'RSA2'; //生成隨機訂單號 $date=date("YmdHis"); $arr=range(1000,9999); shuffle($arr); $request = new AlipayTradeAppPayRequest(); //異步地址傳值方式 $request->setNotifyUrl("http://shop.****.com/authRedirect.php"); $request->setBizContent("{\"out_trade_no\":\"".$date.$arr[0]."\",\"total_amount\":0.01,\"product_code\":\"QUICK_MSECURITY_PAY\",\"subject\":\"app測試\"}"); $result = $aop->sdkExecute($request); //print_r(htmlspecialchars($result)); echo json_encode(array("data"=>$result)); exit(); ?>
下面是JS代碼 先從服務器取訂單信息異步
function Getalipaysign(out_trade_no,subject,body,total_amount) { api.ajax({ url: window.AppWeb + 'alipay/GetAliPaySign.php', method: 'post', data: { values: { out_trade_no: out_trade_no, subject:subject, body:body, total_amount:total_amount } } },function(ret, err){ if (ret) { console.log( JSON.stringify( ret ) ); alipayData = ret.data; } else { alert( JSON.stringify( err ) ); } }); } //確認支付時,使用 function Pay() { if(alipayData) { console.log('支付寶支付'); var aliPayPlus = api.require('aliPayPlus'); aliPayPlus.payOrder({ orderInfo:alipayData//服務器取回的數據 }, function(ret, err) { console.log(JSON.stringify(ret)); if(ret) { api.alert({ title: '支付結果', msg: ret.code, buttons: ['肯定'] }); } else { $api.Api_alert(err.msg); } }); } }