php二维码生成代码
1. 怎样从交易单号生成二维码信息
1、当我们选择使用扫码支付,首先会出现下载微信sdk包,选择phpsdk包进行下载,下载到本地后会发现是一个tp5框架,只是少了一个Common文件夹,把下载好的sdk包放进去。等待调用......
2、设置支付授权目录,扫码成功后的回调地址
3、支付模式二
4、实现代码:
?php
namespace app\index\controller;
class Index
{
public function index()
{
require_once APP_PATH.'common/WxpayAPI/lib/WxPay.Api.php';
$input = new \WxPayUnifiedOrder();
// 设置商品描述
$input-SetBody('测试商品');
// 设置订单号 ---这里使用的时间,其实是自己生成的
$input-SetOut_trade_no(date('YmdHis'));
// 设置订单金额(单位:分)
$input-SetTotal_fee('1');
// 设置异步通知地址
$input-SetNotify_url('http://www.php.wx/index.php/index/Notify/index');
// 设置交易类型
$input-SetTrade_type('NATIVE');
// 设置商品ID
$input-SetProct_id('123456780');
// 调用统一下单API
$result = \WxPayAPI::unifiedOrder($input);
// 生成二维码图片,在这里因为我们自己调试的需要修改配置common/lib/WxPay.Api.php的严格效验true修改为false
$code_url = $result['code_url'];
$img = 'img src=http://paysdk.weixin.qq.com/example/qrcode.php?data='.urlencode($code_url).' /';
echo $img;
}
}
?
5、需要注意在微信支付异步处理中的回调地址,一定不是你的授权地址,处理微信支付异步请求的代码,Notify/index.php:
?php
namespace app\index\controller;
class Notify
{
public function index()
{
require_once APP_PATH.'common/WxpayAPI/lib/WxPay.Api.php';
$msg = '';
\WxPayApi::notify(function($result){
// 签名校验通过
// 查询订单号,如果不存在,return;
// 如果订单已存在,且订单已经被处理过,return;
// 如果订单没有被处理,处理订单
},$msg);
}
}
?
注意:如果异步验证的时候使用WxPay.Api.php对indx.php进行签名验证,是无法访问到这个方法的。
2. php代码如何实现扫描二维码获取扫描者的信息
1、首先创建一个名称为erweima的php文件。
注意事项:
用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
3. ecshop增加pc扫描二维码微信支付功能代码
ecshop开发网站,如果没有手机版,又想通过微信支付,可以加入pc二维码扫描微信支付功能
使用PHP QR Code生成二维码,下载,在商品支付页面加入 include 'phpqrcode/phpqrcode.php'; $pay_url ='http://www.xxx.com/weixin/weixin.php?order_id='.$order['order_sn']; QRcode::png($pay_url, 'images/image.png', 'L', 8); echo 'img src="images/image.png" /'; 生成一个指向微信支付的手机连接二维码,手机扫描进入
打开申请到的微信支付代码,在上面加入weixin.php define('IN_ECS', true); require('../includes/init.php'); require('../includes/lib_order.php'); $order_id = isset($_GET['order_id']) ? intval($_GET['order_id']) : 0; $order = order_info(0,$order_id); 获取订单信息
手机打开页面调用代码 html head meta http-equiv="content-type" content="text/html;charset=utf-8"/ title微信安全支付/title script type="text/javascript" //调用微信JS api 支付 function jsApiCall() { WeixinJSBridge.invoke( 'getBrandWCPayRequest', ?php echo $jsApiParameters; ?, function(res){ WeixinJSBridge.log(res.err_msg); //alert(res.err_code+res.err_desc+res.err_msg); } ); } function callpay() { if (typeof WeixinJSBridge == "undefined"){ if( document.addEventListener ){ document.addEventListener('WeixinJSBridgeReady', jsApiCall, false); }else if (document.attachEvent){ document.attachEvent('WeixinJSBridgeReady', jsApiCall); document.attachEvent('onWeixinJSBridgeReady', jsApiCall); } }else{ jsApiCall(); } } callpay(); /script /head body /br/br/br/br /body /html
代码引用WxPayPubHelper, WxPay.pub.config.php 配置文件 class WxPayConf_pub { //=======【基本信息设置】===================================== //微信公众号身份的唯一标识。审核通过后,在微信发送的邮件中查看 const APPID = 'xxx'; //受理商ID,身份标识 const MCHID = 'xxx'; //商户支付密钥Key。审核通过后,在微信发送的邮件中查看 const KEY = 'xxx'; //JSAPI接口中获取openid,审核后在公众平台开启开发模式后可查看 const APPSECRET = 'xxx'; //=======【JSAPI路径设置】=================================== //获取access_token过程中的跳转uri,通过跳转将code传入jsapi支付页面 const JS_API_CALL_URL = 'http://www.xxx.com/weixin/js_api_call.php'; //=======【证书路径设置】===================================== //证书路径,注意应该填写绝对路径 const SSLCERT_PATH = '/weixin/WxPayPubHelper/cacert/apiclient_cert.pem'; const SSLKEY_PATH = '/weixin/WxPayPubHelper/cacert/apiclient_key.pem'; //=======【异步通知url设置】=================================== //异步通知url,商户根据实际开发过程设定 const NOTIFY_URL = 'http://www.xxx.com/weixin/notify_url.php'; //=======【curl超时设置】=================================== //本例程通过curl使用HTTP POST方法,此处可修改其超时时间,默认为30秒 const CURL_TIMEOUT = 30; } ? 根据申请的信息填写
找到notify_url.php文件 上面添加 define('IN_ECS', true); require('../includes/init.php'); require('../includes/lib_payment.php'); 调用订单信息
notify_url.php添加支付后修改订单状态 if($notify-checkSign() == TRUE) { if ($notify-data["return_code"] == "FAIL") { //此处应该更新一下订单状态,商户自行增删操作 //$log_-log_result($log_name,"【通信出错】:\n".$xml."\n"); } elseif($notify-data["result_code"] == "FAIL"){ //此处应该更新一下订单状态,商户自行增删操作 //$log_-log_result($log_name,"【业务出错】:\n".$xml."\n"); } else{ //此处应该更新一下订单状态,商户自行增删操作 //$log_-log_result($log_name,"【支付成功】:\n".$xml."\n"); $order = $notify-getData(); $log_id=get_order_id_by_sn($order["out_trade_no"]); order_paid($log_id); } //商户自行增加处理流程, //例如:更新订单状态 //例如:数据库操作 //例如:推送支付完成信息 }
更多安全信息和详细信息就不列举了
4. phpqrcode姣忎釜鏂囦欢浣灭敤
phpqrcode鏄涓涓鐢ㄤ簬鐢熸垚浜岀淮镰佺殑PHP镓╁𪾢搴掳纴瀹冨彲浠ュ皢浠绘剰鏂囨湰銆乁RL銆佺数璇濆彿镰佺瓑淇℃伅杞鍖栦负浜岀淮镰佸浘鐗囥傞氲繃寮曞叆phpqrcode镓╁𪾢搴掳纴鍙浠ユ柟渚垮湴鍦≒HP浠g爜涓鐢熸垚浜岀淮镰侊纴骞跺皢鍏跺祵鍏ュ埌缃戦〉銆佺Щ锷ㄥ簲鐢ㄧ瓑钖勭嶅簲鐢ㄥ満鏅涓銆
phpqrcode镄勬疮涓鏂囦欢镄勪綔鐢ㄥ备笅锛
1. qrcode.php锛氲繖鏄痯hpqrcode镓╁𪾢搴撶殑涓绘枃浠讹纴瀹冨寘钖浜嗙敓鎴愪簩缁寸爜镄勬牳蹇冨姛鑳姐备綘鍙浠ュ湪PHP涓寮曞叆璇ユ枃浠舵潵璋幂敤鍏舵彁渚涚殑鍑芥暟鍜岀被𨱒ョ敓鎴愩佽緭鍑烘垨淇濆瓨浜岀淮镰佸浘鐗囥
2. qrconst.php锛氲繖涓鏂囦欢瀹氢箟浜嗕竴浜涘父閲忥纴鐢ㄤ簬閰岖疆浜岀淮镰佺敓鎴愮殑涓浜涘弬鏁帮纴濡傞敊璇绾犳g瓑绾с佹ā寮忕瓑銆傝繖浜涘父閲忓湪鐢熸垚浜岀淮镰佸浘镀忔椂璧峰埌閰岖疆浣灭敤銆
3. qrimage.php锛氲繖涓鏂囦欢瀹氢箟浜嗙敤浜庤緭鍑恒佷缭瀛树簩缁寸爜锲惧儚镄勪竴浜涘嚱鏁板拰绫汇傞氲繃寮曞叆璇ユ枃浠讹纴浣犲彲浠ユ柟渚垮湴灏嗙敓鎴愮殑浜岀淮镰佸浘镀忚緭鍑哄埌娴忚埚櫒銆佷缭瀛桦埌鏂囦欢涓锛屾垨杞鍖栦负鍏朵粬镙煎纺镄勫浘镀忋
4. qrspec.php锛氲繖涓鏂囦欢瀹氢箟浜嗕簩缁寸爜镄勪竴浜涜勬牸鍙傛暟锛屽傜増链銆佹ā鍧楁暟绛夈傝繖浜涘弬鏁板湪鐢熸垚浜岀淮镰佸浘镀忔椂浼氱敤鍒般
5. qrtools.php锛氲繖涓鏂囦欢鍖呭惈浜嗕竴浜涘伐鍏峰嚱鏁板拰绫伙纴鐢ㄤ簬鐢熸垚浜岀淮镰佸浘镀忔墍闇镄勪竴浜涜緟锷╄$畻銆佸勭悊镎崭綔銆
6. qrinput.php锛氲繖涓鏂囦欢瀹氢箟浜嗕簩缁寸爜杈揿叆鏁版嵁镄勪竴浜涘勭悊鍑芥暟鍜岀被銆傞氲繃寮曞叆璇ユ枃浠讹纴浣犲彲浠ユ柟渚垮湴澶勭悊瑕佽浆鍖栦负浜岀淮镰佺殑杈揿叆鏁版嵁锛屽傛枃链銆乁RL绛夈
7. qrrscode.php锛氲繖涓鏂囦欢瀹氢箟浜哘R镰佺殑涓浜汻S缂栫爜鐩稿叧镄勫弬鏁板拰鍑芥暟銆俣S缂栫爜鏄涓绉岖籂阌欑紪镰侊纴瀹冨彲浠ヤ娇浜岀淮镰佸湪鍙楁崯镞朵粛鑳借姝g‘瑙g爜銆
杩欎簺鏂囦欢鍏卞悓鏋勬垚浜唒hpqrcode镓╁𪾢搴撶殑锷熻兘妯″潡锛岄氲繃钖堢悊璋幂敤瀹冧滑鎻愪緵镄勫嚱鏁板拰绫伙纴鍙浠ュ疄鐜板湪PHP涓鐢熸垚浜岀淮镰佸浘镀忕殑锷熻兘銆