支付寶APP支付 統一下單 php服務端 tp5


/*支付寶第三方支付

*
*生成APP支付訂單信息
* @param number  uid 用戶id
* @param string   token 用戶token
* @param number  oid 訂單id
* @param string   title 標題
* @param string    body 商品描述
* @parma float    money 金額
* @param number ordernum 訂單編號
*/
    支付包官方文檔   https://docs.open.aliyun.com/54/106370/
    public function zfb_pay()
    {
$data = input('post.');

Loader::import('/alipay/aop/AopClient',EXTEND_PATH);
$aop = new \AopClient();
$aop->appId = config("alipay_app_id");
$aop->rsaPrivateKey = config('alipay_private_key');
$aop->alipayrsaPublicKey = config('alipay_public_key');//對應填寫
$aop->signType = "RSA2";
//實例化具體API對應的request類,類名稱和接口名稱對應,當前調用接口名稱:alipay.trade.app.pay
Loader::import('/alipay/aop/request/AlipayTradeAppPayRequest',EXTEND_PATH);
$request = new \AlipayTradeAppPayRequest();
//SDK已經封裝掉了公共參數,這里只需要傳入業務參數
$bizcontent = json_encode(array(
'body' => $data['body'], //商品描述
'subject' => $data['title'], //支付的標題,
'out_trade_no' => $data['ordernum'], //支付寶訂單號必須是唯一的,只能生成一次
'total_amount' => $data['money'], //金額
"timeout_express" => "30m", //訂單支付有效時間 m分鐘 h小時
'product_code' => 'QUICK_MSECURITY_PAY'
));
$request->setNotifyUrl("http://tapi.zuozuobang.com/notifyurl");//你在應用那里設置的異步回調地址
$request->setBizContent($bizcontent);
//這里和普通的接口調用不同,使用的是sdkExecute
$response = $aop->sdkExecute($request);
//htmlspecialchars是為了輸出到頁面時防止被瀏覽器將關鍵參數html轉義,實際打印到日志以及http傳輸不會有這個問題
/* echo htmlspecialchars($response);*///就是orderString 可以直接給客戶端請求,無需再做處理。
if($response){
return_msg('200','支付寶請求成功!',$response);
}else{
return_msg('100','支付請求失敗!',$response);
}
}

/*
* 支付寶支付回調
*/
public function notifyurl()
{

Loader::import('/alipay/aop/AopClient',EXTEND_PATH);
$aop = new \AopClient();
$aop->alipayrsaPublicKey =config('alipay_public_key');//對應填寫
$flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
if ($flag) {
//校驗通知數據的正確性
$out_trade_no = $_POST['out_trade_no']; //商戶訂單號
$trade_no = $_POST['trade_no']; //支付寶交易號
$trade_status = $_POST['trade_status']; //交易狀態trade_status
$total_amount = $_POST['total_amount']; //訂單的實際金額
$order = Db::table("shfw_order")->where('ordernum', $out_trade_no)->find();
if ($order) {
//只有交易通知狀態為TRADE_SUCCESS或TRADE_FINISHED時,支付寶才會認定為買家付款成功。
if ($trade_status != 'TRADE_FINISHED' && $trade_status != 'TRADE_SUCCESS') {
return 'fail';
}
//2、判斷total_amount是否確實為該訂單的實際金額(即商戶訂單創建時的金額);
if ($total_amount != $order['money']) {
return 'fail';
}
//校驗成功后在response中返回success,校驗失敗返回failure
$update = array(
'status' => '2', //修改支付狀態
'zhi_time' => time(), //添加支付時間
'pay_type' => 1); //添加支付類型
$result = Db::table("shfw_order")->where('ordernum', $out_trade_no)->update($update);
$res = Db::table("shfw_order")->where('ordernum', $out_trade_no)->field('id,mid,ordernum,nickname,addtime,pay_type')->find();
// $member = Db::table('shfw_member')->where('id',$res['mid'])->find();
//添加充值記錄
$res['payorder'] = $trade_no;
$res['money'] = $total_amount;
$addpay = $this->addpay($res);
if ($result && $addpay) {
return "success";
} else {
return 'fail';
}
} else {
exit('fail');
}
}
}

轉載于:https://www.cnblogs.com/Dgaozhen/p/9990753.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248983.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248983.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248983.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python第十九天(random、json、pickle、hashlib、hmac、shutil、shevle模塊)

今日內容: 1. random 模塊 2. json模塊 3. pickle 模塊 4.hashlib 模塊 5. hmac 模塊 6. shutil 模塊 7. shelve 模塊 1. random 模塊: random 模塊 獲取隨機值import randomfor i in range(10): print(random.random()) # random.random() 隨機獲取…

NodeJS入門04-Express路由和中間件 - 小之 - 博客園

nodeJS入門04-Express路由和中間件 Express框架是后臺的Node框架,在后臺的受歡迎的程度,和jQuery一樣,就是企業的事實上的標準。 路由 路由是指如何定義應用的端點(URIs)以及如何響應客戶端的請求。 路由是由一個 …

jmeter(四十五)常用Beanshell腳本

整理了一批jmeter常用的beanshell腳本供大家參考! 時間戳 import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; try{ Date date new Date(); //獲取當前時間 SimpleDateFormat sf new SimpleDateFormat("yyyy-MM-dd HH:mm…

Critical error detected c0000374

我發現出現上述錯誤是 free 兩次內存 float* ddnew float[2];delete[] dd;delete[] dd;轉載于:https://www.cnblogs.com/hook-gou/p/9994662.html

nodejs開發 過程中express路由與中間件的理解 - pyj063 - 博客園

nodejs開發 過程中express路由與中間件的理解 nodejs開發 express路由與中間件 路由 通常HTTP URL的格式是這樣的: http://host[:port][path] http表示協議。 host表示主機。 port為端口,可選字段,不提供時默認為80。 path指定請求資源的…

錯誤MSB4018 “ResolvePackageAssets”任務意外失敗的解決方法

昨天系統奔潰了,重裝系統后發現,之前寫的.netcore項目打開后重新生成報錯,錯誤如下嚴重性 代碼 說明 項目 文件 行 禁止顯示狀態 錯誤 MSB4018 “ResolvePackageAssets”任務意外失敗。 NuGet.Packaging.Core.Packag…

(五)Unity插件生成

1)新建空的AndroidStudio工程,但是新建過程時最小SDK版本要與unity一致,如下圖所示,本次操作均為api16 2)創建Library,如下圖所示,新建module,然后選擇Android Library。 新建模塊為…

centeros7安裝mysql - 風中追風_lonely - 博客園

轉載自:https://www.linuxidc.com/Linux/2016-09/135288.htm 安裝之前先安裝基本環境:yum install -y perl perl-Module-Build net-tools autoconf libaio numactl-libs 1、配置YUM源 在MySQL官網中下載YUM源rpm安裝包:http://dev.mysql.c…

失物招領平臺6

昨天做了什么:學習了復選框、列表視圖、網絡視圖,集體討論了登錄頁面的構思 今天準備做什么:繼續學習Android stdio,改善登錄頁面 遇到的問題:時間遠遠不夠。轉載于:https://www.cnblogs.com/sljslj/p/11056074.html

前后端交互json字符串

//將需要的參數轉成json字符串,然后用utf-8編碼 var obj encodeURIComponent(JSON.stringify(this.categories),"utf-8") //后臺將前臺的json字符串按照utf-8的格式解碼,然后進行轉換 RequestMapping(value "/updateMaterialDemoInfo.d…

CSS布局解決方案(終結版)

前端布局非常重要的一環就是頁面框架的搭建,也是最基礎的一環。在頁面框架的搭建之中,又有居中布局、多列布局以及全局布局,今天我們就來總結總結前端干貨中的CSS布局。 居中布局 水平居中 1)使用inline-blocktext-align &…

個人作業7 第一階段SCRUM沖刺(七)

了解了一下云服務器,下載了阿里云。 然而搞了半天還是沒應用上這個云服務器..轉載于:https://www.cnblogs.com/jbwen/p/11071733.html

Dcloud HTML5 監聽藍牙設備 調用 原生安卓實現 - aspirant - 博客園

最近一直搞Dcloud ,這是HTML5版本的開發,打包時候,可以打包成 apk 和ipa 分別運行在安卓和ios 機器上面, 但是這里面的資料很少,遇到問題,之后只能自己鉆研總結, 現在有這么一個需求&#xff…

NOIP2018游記

NOIP 2018 游記 又是一年 \(NOIP\) 呢...第二次參加了,希望這一次能不再擦線吧...畢竟我真的很想去 \(WC\) ,也很想去省選. 最后悔的事就是在初三了,恰逢直升,大好年華,停課學 \(OI\) ,但我竟然在某兩位 \(dalao\) 帶領下搓了一年 爐石 \(\& \: SC2\) ?&#xf…

四葉草社交平臺——十天沖刺(5)

今天沒能安排好各種的任務,姑且拍了張照片就散了。 我的任務就是把登錄功能完成,先讓其他人把資源載入問題解決了,然后我再看看動態如何發送。 轉載于:https://www.cnblogs.com/limitCM/p/10925161.html

Django forms組件

校驗字段 模板文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <form action"" method"post"><p>用戶名: <…

為什么要用TypeScript - 肉豬 - 博客園

為什么要用TypeScript 以下是本人的一點拙見&#xff0c;歡迎指正。 TypeScript的設計目的應該是解決JavaScript的“痛點”&#xff1a;弱類型和沒有命名空間&#xff0c;導致很難模塊化&#xff0c;不適合開發大型程序。另外它還提供了一些語法糖來幫助大家更方便地實踐面向…

java繼承上機作業

實現如下類之間的繼承關系&#xff0c;并編寫Music類來測試這些類。 1 package su;2 3 class Instrument{4 public void play() {5 System.out.println("彈奏樂器");6 }7 8 public void play2() {9 // TODO 自動生成的方法存根 10 …

自定義標簽的作用

1&#xff09;控制標簽體內容是否輸出 2&#xff09;控制標簽余下內容是否輸出 3&#xff09;控制重復輸出標簽體內容 4&#xff09;改變標簽體內容 5&#xff09;帶屬性的標簽 package com.loaderman.demo.a_tag;import java.io.IOException; import java.io.StringWriter;imp…

前端之模擬數據 - HackerVirus - 博客園

閱讀目錄 玩轉前端之模擬數據 回到目錄 玩轉前端之模擬數據 博客園主頁&#xff1a;http://www.cnblogs.com/handoing/ 是否還在為前端模擬數據頭疼&#xff1f; 是否還在為后端返回數據格式較多內心煩躁&#xff1f; 是否還想吸一支煙壓壓精&#xff1f; 看下去吧&#x…