关于网站支付

支付

使用Yansongda\Pay\Pay
https://github.com/yansongda/pay
composer require yansongda/pay -vvv
生成密钥

商户私钥>应用公钥>支付宝公钥

openssl
# 生成商户私钥2048位或者1024位:private_key
OpenSSL> genrsa -out rsa_private_key.pem 2048
# Java开发者需要将私钥转换成PKCS8格式
OpenSSL> pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out rsa_private_key_pkcs8.pem
# 生成应用公钥:rsa_public_key
OpenSSL> rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
# 到支付宝填写应用公钥获得支付宝公钥:ali_public_key

notify格式

{
	"gmt_create": "2018-10-19 15:32:27",
	"charset": "GBK",
	"seller_email": "cqvyj2016@sina.com",
	"subject": "商城中心 - 会员充值",
	"sign": "NXycpuWEP9SpH/cDq/xayMDas6PKAfieCuxPyzo455o814v0y7+k0Ep+j66g65oC9S1HLHvphUZzZEN5rZCOZcPcJ9D8Q0EkTd1RiZDitGqAzpWnyoEKhisMd2gn83I3ghBVbOk3TcPGyGpLB/j5/zigN56ZLwTMOlG+4B86rXTG0Rf/L3rMnNdEzUbrknRSI5486+6KIQJZN9+CFjollzoDsrOF+BLmhMW98Ay4z/oiZRSE7Q7k6R5LkbCG/IMx6eYH8Jc0w3Abbqjdt+UHVe1eG+om52v+X6HywQBmIybxt/N47y3QOk1YQRFbPN65KSJlcO2QnKtByN6cW6ToNQ==",
	"buyer_id": "",
	"invoice_amount": "0.01",
	"notify_id": "",
	"fund_bill_list": "[{\"amount\":\"0.01\",\"fundChannel\":\"PCREDIT\"}]",
	"notify_type": "trade_status_sync",
	"trade_status": "TRADE_SUCCESS",
	"receipt_amount": "0.01",
	"buyer_pay_amount": "0.01",
	"app_id": "",
	"sign_type": "RSA2",
	"seller_id": "2088411957695896",
	"gmt_payment": "2018-10-19 15:32:28",
	"notify_time": "2018-10-19 16:56:04",
	"version": "1.0",
	"out_trade_no": "2018101601599",
	"total_amount": "0.01",
	"trade_no": "2018101922001467891006772698",
	"auth_app_id": "2018062160408670",
	"buyer_logon_id": "j.c***@foxmail.com",
	"point_amount": "0.00"
}

支付宝wap支付

<?php
namespace app\index\controller;

use think\Controller;
use think\Db;
use Yansongda\Pay\Pay;

class Alipay extends Controller
{
    protected $config = [
        'app_id'         => '2018071060522789',
        'notify_url'     => 'http://shop2.xxx.club/index/Alipay/notify',
        'return_url'     => 'http://shop2.xxx.club/index/Alipay/return',
        // 支付宝公钥,不是应用公钥
        'ali_public_key' => '',
        // 商户私钥,加密方式: **RSA2**
        'private_key'    => '',
        'log'            => [ // optional
            'file'     => ROOT_PATH . 'runtime/alipay.log',
            'level'    => 'debug', // 建议生产环境等级调整为 info,开发环境为 debug
            'type'     => 'single', // optional, 可选 daily.
            'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
        ],
        'http'           => [ // optional
            'timeout'         => 5.0,
            'connect_timeout' => 5.0,
            // 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html)
        ],
        // 'mode'           => 'dev', // optional,设置此参数,将进入沙箱模式
    ];

    public function do_order($order_id)
    {
        $orderinfo = Db::table('nt_order')->where('id', $order_id)->find();
        $order     = [
            'out_trade_no' => $orderinfo['order_sn'],
            'total_amount' => $orderinfo['price'],
            'subject'      => '商城中心 - 会员充值',
        ];
        $alipay = Pay::alipay($this->config)->wap($order);
        halt($alipay->send());
        return $alipay->send(); // laravel 框架中请直接 `return $alipay`
    }

    function return () {
        // $data = Pay::alipay($this->config)->verify(); // 是的,验签就这么简单!
        $this->success('请稍候参看支付状态', '/index/index/index');
    }

    public function notify()
    {
        try {
            $alipay = Pay::alipay($this->config);
            $data   = $alipay->verify();
            if ($data) {
                if ($data->trade_status == 'TRADE_SUCCESS' || $data->trade_status == 'TRADE_FINISHED') {
                    $order_sn    = $data->out_trade_no;
                    $order_price = $data->total_amount;
                    $orderinfo   = Db::table('nt_order')->where('order_sn', $order_sn)->find();
                    if ($orderinfo['is_pay'] == 1) {
                        return $alipay->success()->send();
                    }
                    if ($order_price != $orderinfo['price']) {
                        exit('fail');
                    }
                    $is_update = Db::table('nt_order')->where('order_sn', $order_sn)->update(['is_pay' => 1, 'pay_time' => date('Y-m-d H:i:s')]);
                    if ($is_update) {
                        return $alipay->success()->send();
                    }
                }
            } else {
                exit('fail');
            }
        } catch (Exception $e) {
            exit('fail');
        }
    }
}

关于mixphp-fpm的支付

# 使用更加标注的语法
protected $config;
# 用
public function __construct()
{
        $this->config = [
            'app_id'         => '2018071060522789',
            # xxxxxxx
        ];
}
# 日志路径使用
'file'     => app()->config('ROOT_PATH') . '/apps/httpd/runtime/alipay.log',
# 配置ROOT_PATH,修改apps/httpd/config/http_compatible.php,增加
'ROOT_PATH'           => dirname(dirname(dirname(__DIR__))),
# 访问,使用官方提供的默认前缀路由,修改apps/httpd/config/http_compatible.php,增加二级路由
'pay/:controller/:action'   => ['pay/:controller', ':action', 'middleware' => ['Before']],
# 控制器位置
namespace apps\httpd\controllers\pay;
# apps/httpd/controllers/pay/AliPayController.php
# 方法名称do_order改为actionDoOrder
# 访问方式
http://www.mix.net/pay/AliPay/doorder
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#中实现支付宝网站支付可以通过支付宝的官方SDK来实现。首先,你需要前往支付宝开放平台(https://opendocs.alipay.com/open/00rz18)注册开发者账号,创建应用并获取对应的应用ID、私钥等信息。接下来,你可以使用支付宝提供的SDK进行支付流程的编码。 以下是一个简单的示例代码,展示了如何使用C#和支付宝SDK进行网站支付: ```csharp using System; using Aop.Api; using Aop.Api.Request; using Aop.Api.Response; namespace AlipayWebPaymentDemo { class Program { static void Main(string[] args) { // 初始化支付宝客户端 IAopClient client = new DefaultAopClient("https://openapi.alipay.com/gateway.do", "YOUR_APP_ID", "YOUR_PRIVATE_KEY", "json", "1.0", "RSA2", "YOUR_ALIPAY_PUBLIC_KEY", "utf-8", false); // 创建支付请求对象 AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); request.SetReturnUrl("http://www.yourdomain.com/return_url"); request.SetNotifyUrl("http://www.yourdomain.com/notify_url"); // 设置订单参数 request.BizContent = "{" + "\"out_trade_no\":\"20150320010101001\"," + "\"total_amount\":\"88.88\"," + "\"subject\":\"Iphone6 16G\"," + "\"body\":\"Iphone6 16G\"," + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"" + "}"; // 发起支付请求 AlipayTradePagePayResponse response = client.pageExecute(request); // 处理支付结果 if (response.Code == "10000" && !string.IsNullOrEmpty(response.Body)) { Console.WriteLine("支付宝支付链接:\n" + response.Body); } else { Console.WriteLine("支付失败,错误信息:" + response.Msg); } } } } ``` 以上代码中的`YOUR_APP_ID`、`YOUR_PRIVATE_KEY`、`YOUR_ALIPAY_PUBLIC_KEY`需要替换为你自己的应用ID、私钥和支付宝公钥。 这只是一个简单的示例,实际使用时你可能需要根据具体的业务需求进行参数设置和结果处理。注意,支付宝官方会不断更新SDK和接口,所以在使用时请参考官方文档和示例代码进行开发。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值