支払結果の保存
2513 ワード
フロントエンドページはこのデータをバックエンドに送信し、バックエンドは支払い結果を検証して保存します.
1.バックエンドインタフェースの設計
要求方式:PUT/payment/status/?アリペイパラメータ
要求パラメータ:クエリー文字列パラメータ、上の表を参照
返却データ:JSON
戻り値
を選択します.
必要かどうか
説明
trade_id
str
いいえ
支付宝流水号
2.バックエンド実装
payment/views.pyでのビューの作成
転載先:https://www.cnblogs.com/hzlnice/p/9393151.html
1.バックエンドインタフェースの設計
要求方式:PUT/payment/status/?アリペイパラメータ
要求パラメータ:クエリー文字列パラメータ、上の表を参照
返却データ:JSON
戻り値
を選択します.
必要かどうか
説明
trade_id
str
いいえ
支付宝流水号
2.バックエンド実装
payment/views.pyでのビューの作成
class PaymentStatusView(APIView):
""" """ def put(self, request): data = request.query_params.dict() signature = data.pop("sign") alipay = AliPay( appid=settings.ALIPAY_APPID, app_notify_url=None, # url app_private_key_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), "keys/app_private_key.pem"), alipay_public_key_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), "keys/alipay_public_key.pem"), # , , , sign_type="RSA2", # RSA RSA2 debug=settings.ALIPAY_DEBUG # False ) success = alipay.verify(data, signature) if success: # order_id = data.get('out_trade_no') # trade_id = data.get('trade_no') Payment.objects.create( order_id=order_id, trade_id=trade_id ) OrderInfo.objects.filter(order_id=order_id, status=OrderInfo.ORDER_STATUS_ENUM['UNPAID']).update(status=OrderInfo.ORDER_STATUS_ENUM["UNCOMMENT"]) return Response({'trade_id': trade_id}) else: return Response({'message': ' '}, status=status.HTTP_403_FORBIDDEN)
転載先:https://www.cnblogs.com/hzlnice/p/9393151.html