博物馆建设网站免费发布信息网站
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:08
当前位置: 首页 > news >正文
博物馆建设网站,免费发布信息网站,企业做网站需要做哪些工作,做药品的电商网站背景 前两天#xff0c;公司的项目#xff0c;为了满足泰国客户的支付需求#xff0c;要求使用 Ksher (开时支付) 对接任务突然就给了鄙人#xff0c;一脸懵 … 通过了解客户的使用场景、以及参考官网指导 发现#xff1a;Ksher支付最令人满意的便是 —— 提供了便捷的 支…背景 前两天公司的项目为了满足泰国客户的支付需求要求使用 Ksher (开时支付) 对接任务突然就给了鄙人一脸懵 … 通过了解客户的使用场景、以及参考官网指导 发现Ksher支付最令人满意的便是 —— 提供了便捷的 支付Demo 在此做下梳理希望能对小伙伴有所帮助欢迎指摘 … 简单介绍 Ksher 成立于2016年由红杉资本和Infinity投资在11个国家设立运营公司聚焦东南亚为全球150,000 企业提供支付服务。ksher专注东南亚市场、深耕出口卖家生态帮助中国卖家安全、高效、便捷地处理东南亚电商结算货款官方文档 【API 开发文档 】 【SDK Support 】 满足Java、Python、Go、PHP、Netcore、NodeJs ☛ 开发步骤 当前的需求是要满足 在手机H5页面能在商品下单后弹出支付二维码 (promptPay、trueMoney、card、wechat) 引导去支付 ①. 确认支付场景选取参考代码 以我的场景需求和实际操作想实现 H5页面的 Ksher支付 那么参考 【PHP - SDK Demo 】 中的 gateway_pay(WebSite) 这一部分即可 demo 演示页面如下
②. 代码整合SDK 以我使用的 Yii2 框架 为例将 php-sdk 文件放在了 common目录 在提取使用时其实就是对 ksher_pay_sdk.php 文件的 KsherPay类的使用 为了避免直接改动 sdk 文件方便出错排查 我复制了一份 ksher_pay_sdk文件稍作个文件名和命名空间变动即可
③. 实现下单流程 提取核心 下单逻辑代码 /*** Notes:处理获取 Ksher支付数据 (gateway_pay 方式)* param string \(ksher_pay_order_sn 唯一的订单编号* param int \)ksher_sum_pay_amount 订单金额例25.50* return array* User: zhanghj* DateTime: 2023-12-22 11:57*/public function dealGetKsherGatewayPayData(\(ksher_pay_order_sn ,\)ksher_sum_pay_amount 0){\(err_msg ;\)ksher_data [];\(ks_appid PayMzConfig::KSHER_APP_ID;\)ks_privatekey PayMzConfig::KSHER_PRIVATE_KEY;\(class new KsherPay(\)ks_appid,\(ks_privatekey);\)gateway_pay_data array(mch_order_no \(ksher_pay_order_sn,total_fee round(\)ksher_sum_pay_amount, 2) * 100,fee_type THB, //默认为泰铢channel_list promptpay,truemoney,card,wechat, //支付方式 wechatmch_code \(ksher_pay_order_sn,mch_redirect_url http://www.ksher.cn,mch_redirect_url_fail http://www.ksher.cn,product_name PayMzConfig::KSHER_SHOW_PAY_PRODUCT_NAME,refer_url http://www.ksher.cn,mch_notify_url PayMzConfig::KSHER_H5_ORDER_PAY_NOTIFY,device H5 //H5(手机端)、PC(电脑端));\)gateway_pay_response \(class-gateway_pay(\)gateway_pay_data);\(gateway_pay_array json_decode(\)gateway_pay_response, true);if (isset(\(gateway_pay_array[data][pay_content])) {\)ksher_data[pay_link] \(gateway_pay_array[data][pay_content]??;}else{\)failed_msg \(gateway_pay_array[msg]??;\)failed_message \(gateway_pay_array[message]??;\)failed_message empty(\(failed_message)?(LanguageMz::CHECK_KSHER_PAY_AWAKE_FAILED):\)failed_message;\(err_msg \)failed_msg?\(failed_msg:\)failed_message;}return [\(err_msg,\)ksher_data];}重点是得到上面的 pay_link 数据整理反馈给前端数据形式如下
{code: 200,msg: 操作成功,data: {pay_link: https://gateway.ksher.com/h5?order_uuid074ad88ca3c911ee9148525400962f26langen}
}④. 实现效果 点击前面成功生成的支付链接会直接跳转到 Ksher 支付唤醒页面如下为H5页面 提示 测试发现如果手机端使用微信打开会默认唤醒微信支付界面同时支付金额自动由泰铢转化为人民币
⑤. 支付回调处理
根据业务功能整理支付回调接口处理如下 /*** Notes:Ksher H5订单支付回调接口 正式* User: zhanghj* DateTime: 2023-12-22 11:46/public function actionKsherH5OrderNotify(){//1.接收参数\(input file_get_contents(php://input);\)query urldecode(\(input);if( !\)query){CommonMzService::recordLocalFileLog(ksher_pay,NO RETURN DATA );echo json_encode(array(resultFAIL,msgNO RETURN DATA));exit;}//2.验证参数\(data_array json_decode(\)query,true);CommonMzService::recordLocalFileLog(ksher_pay,notify data :.json_encode( \(data_array) );if( !isset( \)data_array[data]) || !isset( \(data_array[data][mch_order_no]) || !\)data_array[data][mch_order_no]){echo json_encode(array(resultFAIL,msgRETURN DATA ERROR));exit;}//3.处理订单if( array_key_exists(code, \(data_array) array_key_exists(sign, \)data_array) array_key_exists(data, \(data_array) array_key_exists(result, \)data_array[data]) \(data_array[data][result] SUCCESS){\)ks_appid PayMzConfig::KSHER_APP_ID;\(ks_privatekey PayMzConfig::KSHER_PRIVATE_KEY;\)class new KsherPay(\(ks_appid,\)ks_privatekey);//3.1验证签名\(verify_sign \)class-verify_ksher_sign(\(data_array[data], \)data_array[sign]);if( \(verify_sign1 ){//更新订单信息 change order status\)pay_order_sn \(data_array[data][mch_order_no];\)channel \(data_array[data][channel]??;\)total_fee \(data_array[data][total_fee]??;\)payment_json_str json_encode(\(data_array,JSON_UNESCAPED_UNICODE);//TODO 此处为我的业务处理可根据自己的业务替换更新 ...(new PayMzService())-dealUpdateKsherGatewayPayOrder(\)pay_order_sn,\(payment_json_str,\)channel,$total_fee);echo json_encode(array(resultSUCCESS,msgOK));} else {CommonMzService::recordLocalFileLog(ksher_pay,VERIFY_KSHER_SIGN_FAIL);echo json_encode(array(resultFail,msgVERIFY_KSHER_SIGN_FAIL));}}}附录 为什么 手机端的 H5 页面支付场景会是 显示支付二维码 通过了解泰国常用的APP并非微信、支付宝他们常用的支付APP 为 promptPay、trueMoney、VISA 等在H5页面可以截图需要支付的二维码打开支付APP进行识别支付即可个人感觉没有微信国内和支付宝使用方便源代码中提到的 PayMzConfig 为支付配置类方便后期对 Ksher 支付配置信息的改动 摘取部分代码如下
?php
namespace common\enum;
/** Mz 专用开发配置* Class PayMzConfig* package common\enum/
class PayMzConfig {//Ksher支付配置const KSHER_APP_ID mch4XXXX; //应用ID//私钥const KSHER_PRIVATE_KEY EOD
—–BEGIN RSA PRIVATE KEY—–
MIICYAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXGk34n
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
u9UlGXXXXXXXXXXXXXXXXXXXXXXXXXXXXp9xJa
—–END RSA PRIVATE KEY—–
EOD;const KSHER_SHOW_PAY_PRODUCT_NAME HWAPPU-Water;//TODO 单前为测试用后期配置新的H5api域名更改为 /callz/ksher_h5_order_notifyconst KSHER_H5_ORDER_PAY_NOTIFY http://clientapi.water.com/notify/ksher_h5_order_notify;
}对于支付回调接口中提到的recordLocalFileLog()方法可根据自己的代码放在合适位置 /** Notes:记录本地文件 日志信息* param string \(op_type* param string \)log_content* return bool* User: zhanghj* DateTime: 2023-12-22 13:59*/public static function recordLocalFileLog(\(op_type ,\)log_content ) {\(time_stamp date(Y-m-d H:i:s, time());if( !\)log_content ) return false;if (\(op_type ksher_pay){\)log_file_name ksher_pay;}else{\(log_file_name mz;}\)file dirname(Yii::\(app-basePath)./api/log/{\)log_filename}.date(Ymd)..txt;\(handle fopen( \)file, a);fwrite( \(handle , [{\)time_stamp}]: .\(log_content.\r);fclose( \)handle );}
- 上一篇: 博敏 网站开发廊坊seo关键词优化
- 下一篇: 博物馆设计网站推荐wordpress广告代码没显示
相关文章
-
博敏 网站开发廊坊seo关键词优化
博敏 网站开发廊坊seo关键词优化
- 技术栈
- 2026年03月21日
-
博客做单页网站建站服务搭建的页面时
博客做单页网站建站服务搭建的页面时
- 技术栈
- 2026年03月21日
-
博客网站首页设计网站 伪静态
博客网站首页设计网站 伪静态
- 技术栈
- 2026年03月21日
-
博物馆设计网站推荐wordpress广告代码没显示
博物馆设计网站推荐wordpress广告代码没显示
- 技术栈
- 2026年03月21日
-
博物馆网站建设的目标免费网页游戏网站
博物馆网站建设的目标免费网页游戏网站
- 技术栈
- 2026年03月21日
-
博物馆网站建设公司电商网站建设多少钱
博物馆网站建设公司电商网站建设多少钱
- 技术栈
- 2026年03月21日






